@netlify/agent-runner-cli 1.187.0 → 1.188.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.js CHANGED
@@ -594,7 +594,7 @@ For example, you can use the \`pathToFileURL()\` method of the \`url\` core modu
594
594
  `,LF:`
595
595
  `,concatBytes:J3},Dbt=(t,e)=>{let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r},Mbt={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:Dbt};import{Buffer as Ubt}from"buffer";var qwe=(t,e)=>t?void 0:Fbt.bind(void 0,e),Fbt=function*(t,e){if(typeof e!="string"&&!Br(e)&&!Ubt.isBuffer(e))throw new TypeError(`The \`${t}\` option's transform must use "objectMode: true" to receive as input: ${typeof e}.`);yield e},Bwe=(t,e)=>t?jbt.bind(void 0,e):zbt.bind(void 0,e),jbt=function*(t,e){Vwe(t,e),yield e},zbt=function*(t,e){if(Vwe(t,e),typeof e!="string"&&!Br(e))throw new TypeError(`The \`${t}\` option's function must yield a string or an Uint8Array, not ${typeof e}.`);yield e},Vwe=(t,e)=>{if(e==null)throw new TypeError(`The \`${t}\` option's function must not call \`yield ${e}\`.
596
596
  Instead, \`yield\` should either be called with a value, or not be called at all. For example:
597
- if (condition) { yield value; }`)};import{Buffer as qbt}from"buffer";import{StringDecoder as Bbt}from"string_decoder";var NP=(t,e,r)=>{if(r)return;if(t)return{transform:Vbt.bind(void 0,new TextEncoder)};let n=new Bbt(e);return{transform:Hbt.bind(void 0,n),final:Gbt.bind(void 0,n)}},Vbt=function*(t,e){qbt.isBuffer(e)?yield Oc(e):typeof e=="string"?yield t.encode(e):yield e},Hbt=function*(t,e){yield Br(e)?t.write(e):e},Gbt=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Hwe}from"util";var Q3=Hwe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),kP=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Ybt}=e[r];for await(let i of n(t))yield*kP(i,e,r+1)},Gwe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Wbt(r,Number(e),t)},Wbt=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*kP(n,r,e+1)},Wwe=Hwe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),Ybt=function*(t){yield t};var eW=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Ywe=(t,e)=>[...e.flatMap(r=>[...Wf(r,t,0)]),...KT(t)],Wf=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Zbt}=e[r];for(let i of n(t))yield*Wf(i,e,r+1)},KT=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Kbt(r,Number(e),t)},Kbt=function*(t,e,r){if(t!==void 0)for(let n of t())yield*Wf(n,r,e+1)},Zbt=function*(t){yield t};var tW=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=Zwe(t,o,s),l=Gf(e),u=Gf(r),d=l?Q3.bind(void 0,kP,a):eW.bind(void 0,Wf),f=l||u?Q3.bind(void 0,Gwe,a):eW.bind(void 0,KT),p=l||u?Wwe.bind(void 0,a):void 0;return{stream:new Jbt({writableObjectMode:n,writableHighWaterMark:Kwe(n),readableObjectMode:i,readableHighWaterMark:Kwe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},$P=(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=Zwe(o,r,a);t=Ywe(c,t)}return t},Zwe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:qwe(n,a)},NP(r,o,n),PP(r,s,n,c),{transform:t,final:e},{transform:Bwe(i,a)},zwe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var Jwe=(t,e)=>{for(let r of Xbt(t))Qbt(t,r,e)},Xbt=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),Qbt=(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 ${xu[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>ewt(a,n));r.input=FT(o)},ewt=(t,e)=>{let r=$P(t,e,"utf8",!0);return twt(r),FT(r)},twt=t=>{let e=t.find(r=>typeof r!="string"&&!Br(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 swt,appendFileSync as owt}from"fs";var LP=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&xg(r,n)&&!Ki.has(e)&&rwt(n)&&(t.some(({type:i,value:s})=>i==="native"&&nwt.has(s))||t.every(({type:i})=>Os.has(i))),rwt=t=>t===1||t===2,nwt=new Set(["pipe","overlapped"]),Xwe=async(t,e,r,n)=>{for await(let i of t)iwt(e)||eRe(i,r,n)},Qwe=(t,e,r)=>{for(let n of t)eRe(n,e,r)},iwt=t=>t._readableState.pipes.length>0,eRe=(t,e,r)=>{let n=KO(t);la({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var tRe=({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,l)=>awt({result:c,fileDescriptors:t,fdNumber:l,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},awt=({result:t,fileDescriptors:e,fdNumber:r,state:n,outputFiles:i,isMaxBuffer:s,verboseInfo:o},{buffer:a,encoding:c,lines:l,stripFinalNewline:u,maxBuffer:d})=>{if(t===null)return;let f=rwe(t,s,d),p=Oc(f),{stdioItems:h,objectMode:m}=e[r],_=cwt([p],h,c,n),{serializedResult:S,finalResult:v=S}=lwt({chunks:_,objectMode:m,encoding:c,lines:l,stripFinalNewline:u,fdNumber:r});uwt({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let y=a[r]?v:void 0;try{return n.error===void 0&&dwt(S,h,i),y}catch(g){return n.error=g,y}},cwt=(t,e,r,n)=>{try{return $P(t,e,r,!1)}catch(i){return n.error=i,t}},lwt=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:FT(t)};let o=gve(t,r);return n[s]?{serializedResult:o,finalResult:X3(o,!i[s],e)}:{serializedResult:o}},uwt=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!LP({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=X3(t,!1,o);try{Qwe(a,e,n)}catch(c){r.error??=c}},dwt=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>IP.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?owt(n,t):(r.add(s),swt(n,t))}};var rRe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,kc(e,r,"all")]:Array.isArray(e)?[kc(t,r,"all"),...e]:Br(t)&&Br(e)?a3([t,e]):`${t}${e}`};import{once as rW}from"events";var nRe=async(t,e)=>{let[r,n]=await fwt(t);return e.isForcefullyTerminated??=!1,[r,n]},fwt=async t=>{let[e,r]=await Promise.allSettled([rW(t,"spawn"),rW(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?iRe(t):r.value},iRe=async t=>{try{return await rW(t,"exit")}catch{return iRe(t)}},sRe=async t=>{let[e,r]=await t;if(!pwt(e,r)&&nW(e,r))throw new ao;return[e,r]},pwt=(t,e)=>t===void 0&&e===void 0,nW=(t,e)=>t!==0||e!==null;var oRe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=hwt(t,e,r),o=s?.code==="ETIMEDOUT",a=twe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},hwt=(t,e,r)=>t!==void 0?t:nW(e,r)?new ao:void 0;var aRe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:l,fileDescriptors:u}=gwt(t,e,r),d=Swt({file:n,commandArguments:i,options:l,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:u,startTime:a});return Mg(d,c,l)},gwt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JO(t,e,r),a=_wt(r),{file:c,commandArguments:l,options:u}=_P(t,e,a);ywt(u);let d=Mwe(u,o);return{file:c,commandArguments:l,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:u,fileDescriptors:d}},_wt=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,ywt=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&DP("ipcInput"),t&&DP("ipc: true"),r&&DP("detached: true"),n&&DP("cancelSignal")},DP=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Swt=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=Ewt({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:o,startTime:a});if(c.failed)return c;let{resultError:l,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p}=oRe(c,r),{output:h,error:m=l}=tRe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((v,y)=>kc(v,r,y)),S=kc(rRe(h,r),r,"all");return Twt({error:m,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},Ewt=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{Jwe(s,r);let a=vwt(r);return mwt(...yP(t,e,a))}catch(a){return Dg({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},vwt=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:RP(e)}),Twt=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:s,all:o,options:a,command:c,escapedCommand:l,startTime:u})=>t===void 0?AP({command:c,escapedCommand:l,stdio:s,all:o,ipcOutput:[],options:a,startTime:u}):YT({error:t,command:c,escapedCommand:l,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:s,all:o,ipcOutput:[],options:a,startTime:u,isSync:!0});import{setMaxListeners as lAt}from"events";import{spawn as uAt}from"child_process";import fRe from"process";import{once as iW,on as bwt}from"events";var cRe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(Og({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:dP(t)}),wwt({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),wwt=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{aP(e,i);let s=Au(t,e,r),o=new AbortController;try{return await Promise.race([Rwt(s,n,o),Awt(s,r,o),xwt(s,r,o)])}catch(a){throw Pg(t),a}finally{o.abort(),cP(e,i)}},Rwt=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await iW(t,"message",{signal:r});return n}for await(let[n]of bwt(t,"message",{signal:r}))if(e(n))return n},Awt=async(t,e,{signal:r})=>{await iW(t,"disconnect",{signal:r}),YTe(e)},xwt=async(t,e,{signal:r})=>{let[n]=await iW(t,"strict:error",{signal:r});throw iP(n,e)};import{once as uRe,on as Cwt}from"events";var dRe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>sW({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),sW=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{Og({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:dP(t)}),aP(e,s);let o=Au(t,e,r),a=new AbortController,c={};return Iwt(t,o,a),Owt({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),Pwt({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},Iwt=async(t,e,r)=>{try{await uRe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},Owt=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await uRe(t,"strict:error",{signal:r.signal});n.error=iP(i,e),r.abort()}catch{}},Pwt=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of Cwt(r,"message",{signal:s.signal}))lRe(o),yield c}catch{lRe(o)}finally{s.abort(),cP(e,a),n||Pg(t),i&&await t}},lRe=({error:t})=>{if(t)throw t};var pRe=(t,{ipc:e})=>{Object.assign(t,mRe(t,!1,e))},hRe=()=>{let t=fRe,e=!0,r=fRe.channel!==void 0;return{...mRe(t,e,r),getCancelSignal:vbe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},mRe=(t,e,r)=>({sendMessage:mP.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:cRe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:dRe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as Nwt}from"child_process";import{PassThrough as kwt,Readable as $wt,Writable as Lwt,Duplex as Dwt}from"stream";var gRe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{K3(n);let a=new Nwt;Mwt(a,n),Object.assign(a,{readable:Uwt,writable:Fwt,duplex:jwt});let c=Dg({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),l=zwt(c,o,i);return{subprocess:a,promise:l}},Mwt=(t,e)=>{let r=ZT(),n=ZT(),i=ZT(),s=Array.from({length:e.length-3},ZT),o=ZT(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},ZT=()=>{let t=new kwt;return t.end(),t},Uwt=()=>new $wt({read(){}}),Fwt=()=>new Lwt({write(){}}),jwt=()=>new Dwt({read(){},write(){}}),zwt=async(t,e,r)=>Mg(t,e,r);import{createReadStream as _Re,createWriteStream as yRe}from"fs";import{Buffer as qwt}from"buffer";import{Readable as JT,Writable as Bwt,Duplex as Vwt}from"stream";var ERe=(t,e)=>OP(Hwt,t,e,!1),XT=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${xu[t]}.`)},SRe={fileNumber:XT,generator:tW,asyncGenerator:tW,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:Vwt.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},Hwt={input:{...SRe,fileUrl:({value:t})=>({stream:_Re(t)}),filePath:({value:{file:t}})=>({stream:_Re(t)}),webStream:({value:t})=>({stream:JT.fromWeb(t)}),iterable:({value:t})=>({stream:JT.from(t)}),asyncIterable:({value:t})=>({stream:JT.from(t)}),string:({value:t})=>({stream:JT.from(t)}),uint8Array:({value:t})=>({stream:JT.from(qwt.from(t))})},output:{...SRe,fileUrl:({value:t})=>({stream:yRe(t)}),filePath:({value:{file:t,append:e}})=>({stream:yRe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:Bwt.fromWeb(t)}),iterable:XT,asyncIterable:XT,string:XT,uint8Array:XT}};import{on as Gwt,once as vRe}from"events";import{PassThrough as Wwt,getDefaultHighWaterMark as Ywt}from"stream";import{finished as wRe}from"stream/promises";function Yf(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)aW(i);let e=t.some(({readableObjectMode:i})=>i),r=Kwt(t,e),n=new oW({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var Kwt=(t,e)=>{if(t.length===0)return Ywt(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},oW=class extends Wwt{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(aW(e),this.#e.has(e))return;this.#e.add(e),this.#n??=Zwt(this,this.#e,this.#s);let r=Qwt({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(aW(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)}},Zwt=async(t,e,r)=>{MP(t,TRe);let n=new AbortController;try{await Promise.race([Jwt(t,n),Xwt(t,e,r,n)])}finally{n.abort(),MP(t,-TRe)}},Jwt=async(t,{signal:e})=>{try{await wRe(t,{signal:e,cleanup:!0})}catch(r){throw RRe(t,r),r}},Xwt=async(t,e,r,{signal:n})=>{for await(let[i]of Gwt(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},aW=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Qwt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{MP(t,bRe);let a=new AbortController;try{await Promise.race([eRt(s,e,a),tRt({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),rRt({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),MP(t,-bRe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?cW(t):nRt(t))},eRt=async(t,e,{signal:r})=>{try{await t,r.aborted||cW(e)}catch(n){r.aborted||RRe(e,n)}},tRt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await wRe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;ARe(o)?i.add(e):xRe(t,o)}},rRt=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await vRe(t,i,{signal:s}),!t.readable)return vRe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},nRt=t=>{t.writable&&t.end()},RRe=(t,e)=>{ARe(e)?cW(t):xRe(t,e)},ARe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",cW=t=>{(t.readable||t.writable)&&t.destroy()},xRe=(t,e)=>{t.destroyed||(t.once("error",iRt),t.destroy(e))},iRt=()=>{},MP=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},TRe=2,bRe=1;import{finished as CRe}from"stream/promises";var Fg=(t,e)=>{t.pipe(e),sRt(t,e),oRt(t,e)},sRt=async(t,e)=>{if(!(oo(t)||oo(e))){try{await CRe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}lW(e)}},lW=t=>{t.writable&&t.end()},oRt=async(t,e)=>{if(!(oo(t)||oo(e))){try{await CRe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}uW(t)}},uW=t=>{t.readable&&t.destroy()};var IRe=(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})=>Os.has(c)))aRt(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Os.has(c)))lRt({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]:Yf(s);Fg(o,i)}},aRt=(t,e,r,n)=>{r==="output"?Fg(t.stdio[n],e):Fg(e,t.stdio[n]);let i=cRt[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},cRt=["stdin","stdout","stderr"],lRt=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;uRt(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},uRt=(t,{signal:e})=>{oo(t)&&Vf(t,dRt,e)},dRt=2;import{addAbortListener as hRt}from"events";var Kf=[];Kf.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Kf.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Kf.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var UP=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",dW=Symbol.for("signal-exit emitter"),fW=globalThis,fRt=Object.defineProperty.bind(Object),pW=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(fW[dW])return fW[dW];fRt(fW,dW,{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}},FP=class{},pRt=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),hW=class extends FP{onExit(){return()=>{}}load(){}unload(){}},mW=class extends FP{#e=gW.platform==="win32"?"SIGINT":"SIGHUP";#r=new pW;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of Kf)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(!UP(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 Kf)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,Kf.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 UP(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"&&UP(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)}},gW=globalThis.process,{onExit:ORe,load:Dmr,unload:Mmr}=pRt(UP(gW)?new mW(gW):new hW);var PRe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=ORe(()=>{t.kill()});hRt(n,()=>{i()})};var kRe=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=ZO(),{destination:o,destinationStream:a,destinationError:c,from:l,unpipeSignal:u}=mRt(r,n,i),{sourceStream:d,sourceError:f}=_Rt(t,l),{options:p,fileDescriptors:h}=da.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:u,fileDescriptors:h,startTime:s}},mRt=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=gRt(t,e,...r),a=oP(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},gRt=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(NRe,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||s3(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]=jO(r,...n);return{destination:e(NRe)(i,s,o),pipeOptions:o}}if(da.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}`)},NRe=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),_Rt=(t,e)=>{try{return{sourceStream:Ng(t,e)}}catch(r){return{sourceError:r}}};var LRe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=yRt({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw _W({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},yRt=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return uW(t),n;if(e!==void 0)return lW(r),e},_W=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>Dg({error:t,command:$Re,escapedCommand:$Re,fileDescriptors:e,options:r,startTime:n,isSync:!1}),$Re="source.pipe(destination)";var DRe=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 SRt}from"stream/promises";var MRe=(t,e,r)=>{let n=jP.has(e)?vRt(t,e):ERt(t,e);return Vf(t,bRt,r.signal),Vf(e,wRt,r.signal),TRt(e),n},ERt=(t,e)=>{let r=Yf([t]);return Fg(r,e),jP.set(e,r),r},vRt=(t,e)=>{let r=jP.get(e);return r.add(t),r},TRt=async t=>{try{await SRt(t,{cleanup:!0,readable:!1,writable:!0})}catch{}jP.delete(t)},jP=new WeakMap,bRt=2,wRt=1;import{aborted as RRt}from"util";var URe=(t,e)=>t===void 0?[]:[ARt(t,e)],ARt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await RRt(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw _W({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var zP=(t,...e)=>{if(Cr(e[0]))return zP.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=kRe(t,...e),i=xRt({...n,destination:r});return i.pipe=zP.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},xRt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:l})=>{let u=CRt(t,i);LRe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:l});let d=new AbortController;try{let f=MRe(e,s,d);return await Promise.race([DRe(u),...URe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:l})])}finally{d.abort()}},CRt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as LRt}from"timers/promises";import{on as IRt}from"events";import{getDefaultHighWaterMark as ORt}from"stream";var qP=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return PRt(e,o),jRe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},PRt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},yW=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;NRt(e,o,t);let a=t.readableObjectMode&&!s;return jRe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},NRt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},jRe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=IRt(t,"data",{signal:e.signal,highWaterMark:FRe,highWatermark:FRe});return kRt({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},SW=ORt(!0),FRe=SW,kRt=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=$Rt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*Wf(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*KT(a)}},$Rt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[NP(t,r,!e),PP(t,i,!n,{})].filter(Boolean);var zRe=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,buffer:i,maxBuffer:s,lines:o,allMixed:a,stripFinalNewline:c,verboseInfo:l,streamInfo:u})=>{let d=DRt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:l,streamInfo:u});if(!i){await Promise.all([MRt(t),d]);return}let f=Z3(c,r),p=yW({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([URt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},DRt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!LP({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=yW({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await Xwe(a,t,r,s)},MRt=async t=>{await LRt(),t.readableFlowing===null&&t.resume()},URt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await TP(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await bP(r,{maxBuffer:s})):await Lg(r,{maxBuffer:s})}catch(a){return qRe(Xbe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},EW=async t=>{try{return await t}catch(e){return qRe(e)}},qRe=({bufferedData:t})=>hve(t)?new Uint8Array(t):t;import{finished as FRt}from"stream/promises";var QT=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=jRt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],FRt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||BRt(a,e,r,n)}finally{o.abort()}},jRt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&zRt(t,r,n),n},zRt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{qRt(e,r),n.call(t,...i)}},qRt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},BRt=(t,e,r,n)=>{if(!VRt(t,e,r,n))throw t},VRt=(t,e,r,n=!0)=>r.propagating?BRe(t)||BP(t):(r.propagating=!0,vW(r,e)===n?BRe(t):BP(t)),vW=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",BP=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",BRe=t=>t?.code==="EPIPE";var VRe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,l)=>TW({stream:c,fdNumber:l,encoding:e,buffer:r[l],maxBuffer:n[l],lines:i[l],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),TW=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:l})=>{if(!t)return;let u=QT(t,e,l);if(vW(l,e)){await u;return}let[d]=await Promise.all([zRe({stream:t,onStreamEnd:u,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:l}),u]);return d};var HRe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?Yf([t,e].filter(Boolean)):void 0,GRe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>TW({...HRt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:GRt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),HRt=({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}},GRt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as WRt}from"events";var WRe=t=>xg(t,"ipc"),YRe=(t,e)=>{let r=KO(t);la({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var KRe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=WRe(s),a=Pc(e,"ipc"),c=Pc(r,"ipc");for await(let l of sW({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(Qbe(t,i,c),i.push(l)),o&&YRe(l,s);return i},ZRe=async(t,e)=>(await Promise.allSettled([t]),e);var JRe=async({subprocess:t,options:{encoding:e,buffer:r,maxBuffer:n,lines:i,timeoutDuration:s,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:l,ipc:u,ipcInput:d},context:f,verboseInfo:p,fileDescriptors:h,originalStreams:m,onInternalError:_,controller:S})=>{let v=nRe(t,f),y={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:v,propagating:!1},g=VRe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:y}),T=GRe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:y}),w=[],R=KRe({subprocess:t,buffer:r,maxBuffer:n,ipc:u,ipcOutput:w,verboseInfo:p}),b=YRt(m,t,y),C=KRt(h,y);try{return await Promise.race([Promise.all([{},sRe(v),Promise.all(g),T,R,Pbe(t,d),...b,...C]),_,ZRt(t,S),...Abe(t,s,f,S),...WTe({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...wbe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:S})])}catch(P){return f.terminationReason??="other",Promise.all([{error:P},v,Promise.all(g.map(A=>EW(A))),EW(T),ZRe(R,w),Promise.allSettled(b),Promise.allSettled(C)])}},YRt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:QT(n,i,r)),KRt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>lo(s,{checkOpen:!1})&&!oo(s)).map(({type:i,value:s,stream:o=s})=>QT(o,n,e,{isSameDirection:Os.has(i),stopOnExit:i==="native"}))),ZRt=async(t,{signal:e})=>{let[r]=await WRt(t,"error",{signal:e});throw r};var XRe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),eb=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=ua();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},jg=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 JRt}from"stream";import{callbackify as XRt}from"util";import{finished as QRe}from"stream/promises";var bW=async t=>{if(t!==void 0)try{await wW(t)}catch{}},eAe=async t=>{if(t!==void 0)try{await RW(t)}catch{}},wW=async t=>{await QRe(t,{cleanup:!0,readable:!1,writable:!0})},RW=async t=>{await QRe(t,{cleanup:!0,readable:!0,writable:!1})},VP=async(t,e)=>{if(await t,e)throw e},HP=(t,e,r)=>{r&&!BP(r)?t.destroy(r):e&&t.destroy()};var tAe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||Ki.has(r),{subprocessStdout:a,waitReadableDestroy:c}=AW(t,n,e),{readableEncoding:l,readableObjectMode:u,readableHighWaterMark:d}=xW(a,o),{read:f,onStdoutDataDone:p}=CW({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new JRt({read:f,destroy:XRt(OW.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:u,encoding:l});return IW({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},AW=(t,e,r)=>{let n=Ng(t,e),i=eb(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},xW=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:SW},CW=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=ua(),o=qP({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){QRt(this,o,s)},onStdoutDataDone:s}},QRt=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},IW=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await RW(t),await n,await bW(i),await e,r.readable&&r.push(null)}catch(s){await bW(i),rAe(r,s)}},OW=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await jg(r,e)&&(rAe(t,n),await VP(e,n))},rAe=(t,e)=>{HP(t,t.readable,e)};import{Writable as eAt}from"stream";import{callbackify as nAe}from"util";var iAe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=PW(t,r,e),o=new eAt({...NW(n,t,i),destroy:nAe($W.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return kW(n,o),o},PW=(t,e,r)=>{let n=oP(t,e),i=eb(r,n,"writableFinal"),s=eb(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},NW=(t,e,r)=>({write:tAt.bind(void 0,t),final:nAe(rAt.bind(void 0,t,e,r))}),tAt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},rAt=async(t,e,r)=>{await jg(r,e)&&(t.writable&&t.end(),await e)},kW=async(t,e,r)=>{try{await wW(t),e.writable&&e.end()}catch(n){await eAe(r),sAe(e,n)}},$W=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await jg(r,e),await jg(n,e)&&(sAe(t,i),await VP(e,i))},sAe=(t,e)=>{HP(t,t.writable,e)};import{Duplex as nAt}from"stream";import{callbackify as iAt}from"util";var oAe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||Ki.has(r),{subprocessStdout:c,waitReadableDestroy:l}=AW(t,n,e),{subprocessStdin:u,waitWritableFinal:d,waitWritableDestroy:f}=PW(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=xW(c,a),{read:_,onStdoutDataDone:S}=CW({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),v=new nAt({read:_,...NW(u,t,d),destroy:iAt(sAt.bind(void 0,{subprocessStdout:c,subprocessStdin:u,subprocess:t,waitReadableDestroy:l,waitWritableFinal:d,waitWritableDestroy:f})),readableHighWaterMark:m,writableHighWaterMark:u.writableHighWaterMark,readableObjectMode:h,writableObjectMode:u.writableObjectMode,encoding:p});return IW({subprocessStdout:c,onStdoutDataDone:S,readable:v,subprocess:t,subprocessStdin:u}),kW(u,v,c),v},sAt=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([OW({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),$W({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var LW=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||Ki.has(e),o=Ng(t,r),a=qP({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return oAt(a,o,t)},oAt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var aAe=(t,{encoding:e})=>{let r=XRe();t.readable=tAe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=iAe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=oAe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=LW.bind(void 0,t,e),t[Symbol.asyncIterator]=LW.bind(void 0,t,e,{})};var cAe=(t,e)=>{for(let[r,n]of cAt){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},aAt=(async()=>{})().constructor.prototype,cAt=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(aAt,t)]);var lAe=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:l,options:u,fileDescriptors:d}=dAt(t,e,r),{subprocess:f,promise:p}=pAt({file:i,commandArguments:s,options:u,startTime:c,verboseInfo:l,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=zP.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),cAe(f,p),da.set(f,{options:u,fileDescriptors:d}),f},dAt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JO(t,e,r),{file:a,commandArguments:c,options:l}=_P(t,e,r),u=fAt(l),d=ERe(u,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:u,fileDescriptors:d}},fAt=({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}},pAt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=uAt(...yP(t,e,r))}catch(h){return gRe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let l=new AbortController;lAt(Number.POSITIVE_INFINITY,l.signal);let u=[...c.stdio];IRe(c,a,l),PRe(c,r,l);let d={},f=ua();c.kill=HTe.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:l}),c.all=HRe(c,r),aAe(c,r),pRe(c,r);let p=hAt({subprocess:c,options:r,startTime:n,verboseInfo:i,fileDescriptors:a,originalStreams:u,command:s,escapedCommand:o,context:d,onInternalError:f,controller:l});return{subprocess:c,promise:p}},hAt=async({subprocess:t,options:e,startTime:r,verboseInfo:n,fileDescriptors:i,originalStreams:s,command:o,escapedCommand:a,context:c,onInternalError:l,controller:u})=>{let[d,[f,p],h,m,_]=await JRe({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:s,onInternalError:l,controller:u});u.abort(),l.resolve();let S=h.map((g,T)=>kc(g,e,T)),v=kc(m,e,"all"),y=mAt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:v,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return Mg(y,n,e)},mAt=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,context:o,options:a,command:c,escapedCommand:l,startTime:u})=>"error"in t?YT({error:t.error,command:c,escapedCommand:l,timedOut:o.terminationReason==="timeout",isCanceled:o.terminationReason==="cancel"||o.terminationReason==="gracefulCancel",isGracefullyCanceled:o.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof fa,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:u,isSync:!1}):AP({command:c,escapedCommand:l,stdio:n,all:i,ipcOutput:s,options:a,startTime:u});var GP=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,gAt(n,t[n],i)]));return{...t,...r}},gAt=(t,e,r)=>_At.has(t)&&Cr(e)&&Cr(r)?{...e,...r}:r,_At=new Set(["env",...d3]);var Cu=(t,e,r,n)=>{let i=(o,a,c)=>Cu(o,a,r,c),s=(...o)=>yAt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},yAt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(Cr(s))return i(t,GP(r,s),n);let{file:a,commandArguments:c,options:l,isSync:u}=SAt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return u?aRe(a,c,l):lAe(a,c,l,i)},SAt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=Eve(e)?vve(e,r):[e,...r],[o,a,c]=jO(...s),l=GP(GP(n,i),c),{file:u=o,commandArguments:d=a,options:f=l,isSync:p=!1}=t({file:o,commandArguments:a,options:l});return{file:u,commandArguments:d,options:f,isSync:p}};var uAe=({file:t,commandArguments:e})=>fAe(t,e),dAe=({file:t,commandArguments:e})=>({...fAe(t,e),isSync:!0}),fAe=(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]=EAt(t);return{file:r,commandArguments:n}},EAt=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(vAt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},vAt=/ +/g;var pAe=(t,e,r)=>{t.sync=e(TAt,r),t.s=t.sync},hAe=({options:t})=>mAe(t),TAt=({options:t})=>({...mAe(t),isSync:!0}),mAe=t=>({options:{...bAt(t),...t}}),bAt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},gAe={preferLocal:!0};var _Ae=Cu(()=>({})),Ayr=Cu(()=>({isSync:!0})),yAe=Cu(uAe),xyr=Cu(dAe),Cyr=Cu(Cbe),Iyr=Cu(hAe,{},gAe,pAe),{sendMessage:Oyr,getOneMessage:Pyr,getEachMessage:Nyr,getCancelSignal:kyr}=hRe();import{Transform as wAt}from"stream";var RAt=["NETLIFY_AI_GATEWAY_KEY"];function AAt(){let t=(process.env.NETLIFY_SENSITIVE_ENV_KEYS||"").split(",").map(e=>e.trim()).filter(Boolean);return[...new Set([...t,...RAt])]}function xAt(t){let e=t.toLowerCase();return e==="true"||e==="false"?!0:t.trim().length<4}function CAt(){let e=AAt().map(r=>process.env[r]).filter(r=>!(!r||xAt(r)));return[...new Set(e)].sort((r,n)=>n.length-r.length)}function Ni(t){if(typeof t!="string")return t;let e=CAt();if(e.length===0)return t;let r=t;return e.forEach(n=>{let i=new RegExp(IAt(n),"g");r=r.replace(i,"******")}),r}function IAt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var tb=class extends wAt{constructor(e={}){super({...e,objectMode:!1})}_transform(e,r,n){let i=e.toString(),s=Ni(i);n(null,s)}},WP=Symbol("maskedWrite");function SAe(){if(process.env.NETLIFY_MASK_LOGS!=="false"){if(!process.stdout.write[WP]){let e=process.stdout.write.bind(process.stdout),r=function(n,i,s){let o=typeof n=="string"?Ni(n):n;return typeof i=="function"?e(o,i):e(o,i,s)};r[WP]=!0,process.stdout.write=r}if(!process.stderr.write[WP]){let e=process.stderr.write.bind(process.stderr),r=function(n,i,s){let o=typeof n=="string"?Ni(n):n;return typeof i=="function"?e(o,i):e(o,i,s)};r[WP]=!0,process.stderr.write=r}}}var EAe=!1,vAe,DW=t=>{vAe??=t},TAe=t=>{EAe=!0,DW(t)},In=()=>EAe,Iu=()=>vAe;var rb=null,bAe=t=>(rb&&rb.destroy(),rb=new uo({totalAllowedTime:t}),rb),wAe=()=>rb;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&&In())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((u,d)=>{o=setTimeout(()=>{d(new Error(`${e} stage exceeded its maximum duration of ${n}ms`))},n)}));let c=Date.now(),l="success";try{return await LO({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(u){throw l="failure",u}finally{Q.timing("stage.duration",Date.now()-c,{stage:e,outcome:l}),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 RAe={name:"@netlify/agent-runner-cli",type:"module",version:"1.187.0",description:"CLI tool for running Netlify agents",main:"./dist/index.js",types:"./dist/index.d.ts",exports:"./dist/index.js",bin:{"agent-runner-cli":"./dist/bin.js","agent-runner-cli-local":"./dist/bin-local.js"},files:["dist/**/*.js","dist/**/*.d.ts","dist/skills/**","patches","scripts"],scripts:{prebuild:"rm -rf dist",build:"tsup",dev:"tsup --watch",prepare:"husky install node_modules/@netlify/eslint-config-node/.husky/",prepublishOnly:"npm ci && npm test",prepack:"npm run build",test:"run-s build format test:dev",format:"run-s build format:check-fix:*","format:ci":"run-s build format:check:*","format:check-fix:lint":"run-e format:check:lint format:fix:lint","format:check:lint":'eslint --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:fix:lint":'eslint --fix --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:check-fix:prettier":"run-e format:check:prettier format:fix:prettier","format:check:prettier":'prettier --check --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"format:fix:prettier":'prettier --write --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"test:dev":"run-s build test:dev:*","test:ci":"run-s build test:ci:*","test:dev:vitest":"LOG=0 vitest --exclude '**/integration/**'","test:ci:vitest":"LOG=0 vitest run --coverage --exclude '**/integration/**'","test:smoke":"node scripts/smoke-dist.js","test:integration":"vitest run test/integration/","test:integration:codex":"vitest run test/integration/codex.test.ts","test:integration:claude":"vitest run test/integration/claude.test.ts","test:integration:gemini":"vitest run test/integration/gemini.test.ts","test:integration:opencode":"vitest run test/integration/opencode.test.ts","test:integration:skill-invocation":"vitest run test/integration/skill-invocation.test.ts","check:types":"tsc --noEmit",postinstall:"node scripts/postinstall.js"},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.17.6","@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.280","@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.1","@netlify/otel":"^6.0.6","@netlify/ts-cli":"^1.2.0","@openai/codex":"0.153.4","@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:"6.34.0",zod:"^4.4.3"}};var kAt=PAt(import.meta.url),$At=$c.dirname(kAt),LAt=NAt(import.meta.url),zg=fe("shell"),MW=new Set,AAe={preferLocal:!0},ir=(t,e,r)=>{let[n,i]=DAt(e,r),s={...AAe,...i},o=_Ae(t,n,s);CAe(o,s),PAe(o);let a=r?.idleTimeout;return a&&a>0&&OAe(o,a),o},xAe=(t,e)=>{let r={...AAe,...e},n=yAe(t,r);return CAe(n,r),PAe(n),e?.idleTimeout&&e.idleTimeout>0&&OAe(n,e.idleTimeout),n},DAt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},CAe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||ha.env.NETLIFY_LOCAL_QUIET==="true")return;if(ha.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new tb).pipe(ha.stdout),t.stderr?.pipe(new tb).pipe(ha.stderr);return}t.stdout?.pipe(ha.stdout),t.stderr?.pipe(ha.stderr)},UW=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(ha.kill(-t.pid,e),zg.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return zg.error("Error killing process:",r),!1}},IAe=t=>UW(t,"SIGKILL"),OAe=(t,e)=>{let r=null,n=()=>{zg.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),UW(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(zg.log(`Force killing idle process ${t.pid}`),IAe(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)},PAe=t=>{MW.add(t);let e=wAe();if(e){let r=e.onTimesUp(()=>{zg.log(`Global timer expired, killing process ${t.pid}`),UW(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(zg.log(`Force killing process ${t.pid} after timeout`),IAe(t))},5e3)});t.on("exit",()=>{MW.delete(t),r()}),t.on("error",()=>{MW.delete(t),r()})}};function ma(t,e){if(!ha.env.NETLIFY_LOCAL_MODE)try{let i=LAt.resolve(RAe.name),s=$c.dirname(i);for(;s!==$c.dirname(s);){let o=$c.dirname(s);if($c.basename(o)==="node_modules"){let a=$c.join(o,".bin",e);if(YP.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(ha.env.NODE_PATH){let i=$c.join(ha.env.NODE_PATH,".bin",e);if(YP.existsSync(i))return i}let r=$c.join(t,"node_modules",".bin",e);if(YP.existsSync(r))return r;let n=$c.join($At,"..","node_modules",".bin",e);if(YP.existsSync(n))return n}import _D from"process";import{fileURLToPath as dFt}from"url";import{createRequire as fFt}from"module";import rR from"path";import{readFileSync as pFt}from"fs";var MAt="__netlify__getTracer",UAt="__netlify__shutdownTracers",Tt=(t,e)=>globalThis[MAt]?.(t,e),NAe=async()=>globalThis[UAt]?.();function nb(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 iFt}from"timers/promises";Ne();import Fxt from"process";Ne();var c0t=(t,e)=>{e.recordException(t),e.setStatus({code:Wn.ERROR})};var Mc=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}=R0e(r,n,i);return this._tracer.startActiveSpan(e,s,o,c=>A0e(c,s,a))}withSpan(e,r,n,i){let{opts:s,ctx:o,fn:a}=R0e(r,n,i),c=this._tracer.startSpan(e,s,o);return A0e(c,s,a)}};function R0e(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??Ht.active(),{opts:n,ctx:i,fn:s}}function A0e(t,e,r){var n;let i=(n=e.onException)!==null&&n!==void 0?n:c0t,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)}}Ne();var Yg=t=>t!==null&&typeof t=="object"&&typeof t.then=="function";var yY=class t{_rawAttributes;_asyncAttributesPending=!1;_schemaUrl;_memoizedAttributes;static FromAttributeList(e,r){let n=new t({},r);return n._rawAttributes=D0e(e),n._asyncAttributesPending=e.filter(([i,s])=>Yg(s)).length>0,n}constructor(e,r){let n=e.attributes??{};this._rawAttributes=Object.entries(n).map(([i,s])=>(Yg(s)&&(this._asyncAttributesPending=!0),[i,s])),this._rawAttributes=D0e(this._rawAttributes),this._schemaUrl=l0t(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,Yg(n)?await n:n]}this._asyncAttributesPending=!1}}get attributes(){if(this.asyncAttributesPending&&le.error("Accessing resource attributes before async attributes settled"),this._memoizedAttributes)return this._memoizedAttributes;let e={};for(let[r,n]of this._rawAttributes){if(Yg(n)){le.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=u0t(this,e),n=r?{schemaUrl:r}:void 0;return t.FromAttributeList([...e.getRawAttributes(),...this.getRawAttributes()],n)}};function SY(t,e){return yY.FromAttributeList(Object.entries(t),e)}function D0e(t){return t.map(([e,r])=>Yg(r)?[e,r.catch(n=>{le.debug("promise rejection for resource attribute: %s - %s",e,n)})]:[e,r])}function l0t(t){if(typeof t=="string"||t===void 0)return t;le.warn("Schema URL must be string or undefined, got %s. Schema URL will be ignored.",t)}function u0t(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;le.warn('Schema URL merge conflict: old resource has "%s", updating resource has "%s". Resulting resource will have undefined Schema URL.',r,n)}Ne();var mb=class{emit(e){}enabled(){return!1}},M0e=new mb;var gb=Symbol.for("io.opentelemetry.js.api.logs"),Kg=globalThis;function U0e(t,e,r){return n=>n===t?e:r}var EY=1;var vY=class{getLogger(e,r,n){return new mb}},_N=new vY;var yN=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):M0e}};var _b=class{getLogger(e,r,n){var i;return(i=this._getDelegateLogger(e,r,n))!==null&&i!==void 0?i:new yN(this,e,r,n)}_getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:_N}_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 SN=class t{constructor(){this._proxyLoggerProvider=new _b}static getInstance(){return this._instance||(this._instance=new t),this._instance}setGlobalLoggerProvider(e){return Kg[gb]?this.getLoggerProvider():(Kg[gb]=U0e(EY,e,_N),this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,r;return(r=(e=Kg[gb])===null||e===void 0?void 0:e.call(Kg,EY))!==null&&r!==void 0?r:this._proxyLoggerProvider}getLogger(e,r,n){return this.getLoggerProvider().getLogger(e,r,n)}disable(){delete Kg[gb],this._proxyLoggerProvider=new _b}};var F0e=SN.getInstance();function j0e(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 z0e(t){t.forEach(e=>e.disable())}function TY(t){let e=t.tracerProvider||Ot.getTracerProvider(),r=t.meterProvider||hb.getMeterProvider(),n=t.loggerProvider||F0e.getLoggerProvider(),i=t.instrumentations?.flat()??[];return j0e(i,e,r,n),()=>{z0e(i)}}Ne();var d0t=en("OpenTelemetry SDK Context Key SUPPRESS_TRACING");function q0e(t){return t.getValue(d0t)===!0}var Zg;(function(t){t[t.SUCCESS=0]="SUCCESS",t[t.FAILED=1]="FAILED"})(Zg||(Zg={}));Ne();var bY="[_0-9a-z-*/]",f0t=`[a-z]${bY}{0,255}`,p0t=`[a-z0-9]${bY}{0,240}@[a-z]${bY}{0,13}`,h0t=new RegExp(`^(?:${f0t}|${p0t})$`),m0t=/^[ -~]{0,255}[!-~]$/,g0t=/,|=/;function wY(t){return h0t.test(t)}function RY(t){return m0t.test(t)&&!g0t.test(t)}var _0t=32,B0e=512,V0e=",",H0e="=",EN=class t{_length;_rawTraceState;_internalState;constructor(e){this._rawTraceState=typeof e=="string"?e:"",this._length=this._rawTraceState.length}set(e,r){if(!wY(e)||!RY(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>B0e)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=V0e+e),e=`${n[0]}${H0e}${n[1]}`+e,r++;return e}_getState(){if(this._internalState)return this._internalState;let e=this._rawTraceState.split(V0e),r=new Map,n=0;for(let i of e){let s=i.trim(),o=s.indexOf(H0e);if(o===-1)continue;let a=s.slice(0,o),c=s.slice(o+1);if(!wY(a)||!RY(c))continue;let l=n+s.length+(r.size>0?1:0);if(!(l>B0e)&&(r.set(a,c),n=l,r.size>=_0t))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 vN="traceparent",TN="tracestate",y0t="00",S0t="(?!ff)[\\da-f]{2}",E0t="(?![0]{32})[\\da-f]{32}",v0t="(?![0]{16})[\\da-f]{16}",T0t="[\\da-f]{2}",b0t=new RegExp(`^\\s?(${S0t})-(${E0t})-(${v0t})-(${T0t})(-.*)?\\s?$`);function G0e(t){let e=b0t.exec(t);return!e||e[1]==="00"&&e[5]?null:{traceId:e[2],spanId:e[3],traceFlags:parseInt(e[4],16)}}var Nu=class{inject(e,r,n){let i=Ot.getSpanContext(e);if(!i||q0e(e)||!ki(i))return;let s=`${y0t}-${i.traceId}-${i.spanId}-0${Number(i.traceFlags||Sr.NONE).toString(16)}`;n.set(r,vN,s),i.traceState&&n.set(r,TN,i.traceState.serialize())}extract(e,r,n){let i=n.get(r,vN);if(!i)return e;let s=Array.isArray(i)?i[0]:i;if(typeof s!="string")return e;let o=G0e(s);if(!o)return e;o.isRemote=!0;let a=n.get(r,TN);if(a){let c=Array.isArray(a)?a.join(","):a;o.traceState=new EN(typeof c=="string"?c:void 0)}return Ot.setSpanContext(e,o)}fields(){return[vN,TN]}};var bN=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 yb=class{_isCalled=!1;_deferred=new bN;_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 hk=hn(uK(),1);Ne();var CIe=t=>{throw TypeError(t)},hK=(t,e,r)=>e.has(t)||CIe("Cannot "+r),pk=(t,e,r)=>(hK(t,e,"read from private field"),r?r.call(t):e.get(t)),dK=(t,e,r)=>e.has(t)?CIe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),RIe=(t,e,r,n)=>(hK(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),Uxt=(t,e,r)=>(hK(t,e,"access private method"),r),AIe="__netlify__getTracer",jxt="__netlify__shutdownTracers",zxt="__nfOTLPTrace",kb,$b,pK,IIe,qxt=class{constructor(){dK(this,pK),dK(this,kb),dK(this,$b),RIe(this,kb,new yb(Uxt(this,pK,IIe),this)),RIe(this,$b,le.createComponentLogger({namespace:"netlify-span-exporter"}))}export(t,e){if(pk(this,$b).debug(`export ${t.length.toString()} spans`),pk(this,kb).isCalled){e({code:Zg.FAILED,error:new Error("Exporter has been shutdown")});return}console.log(zxt,JSON.stringify(Bxt(t))),e({code:Zg.SUCCESS})}shutdown(){return pk(this,kb).call()}};kb=new WeakMap;$b=new WeakMap;pK=new WeakSet;IIe=function(){return pk(this,$b).debug("Shutting down"),Promise.resolve()};function Bxt(t){return{resourceSpans:t.map(e=>{let r=e.spanContext();return{resource:{attributes:fk(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||fo.SERVER,startTimeUnixNano:fK(e.startTime),endTimeUnixNano:fK(e.endTime),attributes:fk(e.attributes),droppedAttributesCount:e.droppedAttributesCount,events:e.events.map(n=>({name:n.name,timeUnixNano:fK(n.time),attributes:fk(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:fk(n.attributes??{}),droppedAttributesCount:n.droppedAttributesCount??0})),droppedLinksCount:e.droppedLinksCount}]}]}})}}function fk(t){return Object.keys(t).map(e=>OIe(e,t[e]))}function OIe(t,e){return{key:t,value:PIe(e)}}function PIe(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(PIe)}}:e==="object"&&t!=null?{kvlistValue:{values:Object.entries(t).map(([r,n])=>OIe(r,n))}}:{}}function fK(t){let e=BigInt(1e9);return(BigInt(Math.trunc(t[0]))*e+BigInt(Math.trunc(t[1]))).toString()}var xIe={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"}},NIe=t=>{if(Object.prototype.hasOwnProperty.call(globalThis,AIe))return;let e=Fxt.version.slice(1),r=SY({"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??[Vxt()],i=new hk.NodeTracerProvider({resource:r,spanProcessors:n});i.register({propagator:new Nu});let s=t.instrumentations??[];TY({instrumentations:s,tracerProvider:i}),Object.defineProperty(globalThis,AIe,{enumerable:!1,configurable:!0,writable:!1,value:function(a,c){return a?new Mc(Ot.getTracer(a,c)):new Mc(Ot.getTracer(xIe.name,xIe.version))}}),Object.defineProperty(globalThis,jxt,{enumerable:!1,configurable:!0,writable:!1,value:async()=>await i.shutdown()})},Vxt=()=>new hk.SimpleSpanProcessor(new qxt);Ne();var Lb=hn(uK(),1);Ne();import*as mk from"diagnostics_channel";var kIe=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?Wn.ERROR:Wn.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],l=e[a+1];if(typeof c!="string"&&!Buffer.isBuffer(c)||typeof l!="string"&&!Buffer.isBuffer(l))continue;let u=c.toString().toLowerCase();if(n.some(f=>typeof f=="string"?f==u:f.test(u)))continue;let d=`http.${t}.header.${u}`;i===!0||i.some(f=>typeof f=="string"?f==u:f.test(u))?o[d]="REDACTED":o[d]=l.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 Mc?t:new Mc(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){mk.subscribe(t,e);let r=()=>mk.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:fo.CLIENT},Ht.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:Wn.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 n1e=hn(t1e(),1);var mD=fe("tracing"),r1e=8e3,sFt=5e3,Qw=async(t=sFt)=>{try{await Promise.race([NAe(),iFt(t)])}catch(e){mD.warn("Failed to flush tracers on shutdown",e)}},i1e=async(t,e,r)=>{if(!Tt()){let n=[new Lb.SimpleSpanProcessor(new mJ),new Lb.SimpleSpanProcessor(new n1e.OTLPTraceExporter({url:r.exporterUrl}))];await NIe({serviceName:"@netlify/agent-runner-cli",serviceVersion:t,deploymentEnvironment:"production",siteUrl:"",siteId:process.env.SITE_ID??"",siteName:e,spanProcessors:n,instrumentations:[new kIe({skipHeaders:!0})]})}return r.traceparent?(di.setGlobalPropagator(new Nu),di.extract(Ht.active(),{traceparent:r.traceparent,isRemote:!0})):Ht.active()};function Yt(t,e,r){return mD.log(`\u23F3 TRACE: ${e} starting...`),nb(t,e,r)}var mJ=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(", ")}]`:"";mD.log(`${s} TRACE: ${e.name} completed in ${r.toFixed(2)}ms${o}`),e.status?.code===2&&e.status.message&&mD.log(` \u274C Error: ${e.status.message}`)}};function gJ(){return Ve().captureLlmContentEnabled}function s1e(t){return t.includes("claude")?"anthropic":t.includes("codex")?"openai":t.includes("gemini")?"google":t.includes("opencode")?"opencode":t}function gD(t,e,r){let n={role:t,parts:[{type:"text",content:Ni(e)}]};return r&&(n.finish_reason=r),JSON.stringify([n])}var oFt=new Set([ee.Task,ee.RunCommand,ee.Explore,ee.FileRead,ee.FileWrite,ee.Notebook,ee.Web,ee.Todo,ee.Skill,ee.Tool,ee.Memorize,ee.Deployment,ee.SiteGeneration]);function o1e(t,e,r,n){if(!t.length)return;let i=Tt();if(!i)return;let s=gJ(),o=Math.max(1,(n-r)/t.length);t.forEach((a,c)=>{let l=Math.min(n,r+c*o),u=Math.min(n,l+o),d=a.type==="tool_use"||a.type==="tool_result"||a.category!=null&&oFt.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>r1e?`${a.message.slice(0,r1e)}\u2026`:a.message:void 0;i.startSpan(m,{startTime:l,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":Ni(_)}:{"gen_ai.output.messages":gD("assistant",_)}:{}}}).end(u)})}import{readdir as aFt,rm as cFt}from"fs/promises";import{join as lFt}from"path";async function a1e(t,e=[]){let n=(await aFt(t)).filter(i=>!e.includes(i));await Promise.all(n.map(i=>cFt(lFt(t,i),{recursive:!0,force:!0})))}var uFt=300,eR=t=>Ve().budgetCreditThresholds[t.mode]?.[t.runner]??uFt,tR=({mode:t,sessionCreditLimit:e},r)=>t==="create"&&e!=null&&e<=r;var _J=t=>{let e=eR(t);if(!tR(t,e))return"default";let r=Ve();return r.createAskFirstEnabled&&r.questionsEnabled?"ask_first":r.creditWrapUpEnabled?"budget_constrained":"default"},c1e=t=>{let e=_J(t),r=eR(t);return{budget_eligible:tR(t,r),budget_constrained:e==="budget_constrained",ask_first:e==="ask_first"}};var hFt=rR.dirname(dFt(import.meta.url)),l1e=fFt(import.meta.url),mFt=rR.resolve(hFt,"scripts/scaffold.js"),gFt="scripts/scaffold.js",_Ft=/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+/g,yJ=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},yFt=t=>/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(t),SFt=t=>{let e=yJ(t);return e==="node"||e.endsWith("/node")},al=t=>{if(typeof t!="string")return!1;let e=t.match(_Ft)||[];if(e.length<2)return!1;let r=0;for(;r<e.length&&yFt(yJ(e[r]));)r+=1;if(r>=e.length||!SFt(e[r]))return!1;let n=e[r+1];return n?yJ(n).includes(gFt):!1},Lp=fe("create_stage"),SJ="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.",EFt=`${SJ}
597
+ if (condition) { yield value; }`)};import{Buffer as qbt}from"buffer";import{StringDecoder as Bbt}from"string_decoder";var NP=(t,e,r)=>{if(r)return;if(t)return{transform:Vbt.bind(void 0,new TextEncoder)};let n=new Bbt(e);return{transform:Hbt.bind(void 0,n),final:Gbt.bind(void 0,n)}},Vbt=function*(t,e){qbt.isBuffer(e)?yield Oc(e):typeof e=="string"?yield t.encode(e):yield e},Hbt=function*(t,e){yield Br(e)?t.write(e):e},Gbt=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Hwe}from"util";var Q3=Hwe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),kP=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Ybt}=e[r];for await(let i of n(t))yield*kP(i,e,r+1)},Gwe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Wbt(r,Number(e),t)},Wbt=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*kP(n,r,e+1)},Wwe=Hwe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),Ybt=function*(t){yield t};var eW=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Ywe=(t,e)=>[...e.flatMap(r=>[...Wf(r,t,0)]),...KT(t)],Wf=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Zbt}=e[r];for(let i of n(t))yield*Wf(i,e,r+1)},KT=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Kbt(r,Number(e),t)},Kbt=function*(t,e,r){if(t!==void 0)for(let n of t())yield*Wf(n,r,e+1)},Zbt=function*(t){yield t};var tW=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=Zwe(t,o,s),l=Gf(e),u=Gf(r),d=l?Q3.bind(void 0,kP,a):eW.bind(void 0,Wf),f=l||u?Q3.bind(void 0,Gwe,a):eW.bind(void 0,KT),p=l||u?Wwe.bind(void 0,a):void 0;return{stream:new Jbt({writableObjectMode:n,writableHighWaterMark:Kwe(n),readableObjectMode:i,readableHighWaterMark:Kwe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},$P=(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=Zwe(o,r,a);t=Ywe(c,t)}return t},Zwe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:qwe(n,a)},NP(r,o,n),PP(r,s,n,c),{transform:t,final:e},{transform:Bwe(i,a)},zwe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var Jwe=(t,e)=>{for(let r of Xbt(t))Qbt(t,r,e)},Xbt=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),Qbt=(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 ${xu[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>ewt(a,n));r.input=FT(o)},ewt=(t,e)=>{let r=$P(t,e,"utf8",!0);return twt(r),FT(r)},twt=t=>{let e=t.find(r=>typeof r!="string"&&!Br(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 swt,appendFileSync as owt}from"fs";var LP=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&xg(r,n)&&!Ki.has(e)&&rwt(n)&&(t.some(({type:i,value:s})=>i==="native"&&nwt.has(s))||t.every(({type:i})=>Os.has(i))),rwt=t=>t===1||t===2,nwt=new Set(["pipe","overlapped"]),Xwe=async(t,e,r,n)=>{for await(let i of t)iwt(e)||eRe(i,r,n)},Qwe=(t,e,r)=>{for(let n of t)eRe(n,e,r)},iwt=t=>t._readableState.pipes.length>0,eRe=(t,e,r)=>{let n=KO(t);la({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var tRe=({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,l)=>awt({result:c,fileDescriptors:t,fdNumber:l,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},awt=({result:t,fileDescriptors:e,fdNumber:r,state:n,outputFiles:i,isMaxBuffer:s,verboseInfo:o},{buffer:a,encoding:c,lines:l,stripFinalNewline:u,maxBuffer:d})=>{if(t===null)return;let f=rwe(t,s,d),p=Oc(f),{stdioItems:h,objectMode:m}=e[r],_=cwt([p],h,c,n),{serializedResult:S,finalResult:v=S}=lwt({chunks:_,objectMode:m,encoding:c,lines:l,stripFinalNewline:u,fdNumber:r});uwt({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let y=a[r]?v:void 0;try{return n.error===void 0&&dwt(S,h,i),y}catch(g){return n.error=g,y}},cwt=(t,e,r,n)=>{try{return $P(t,e,r,!1)}catch(i){return n.error=i,t}},lwt=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:FT(t)};let o=gve(t,r);return n[s]?{serializedResult:o,finalResult:X3(o,!i[s],e)}:{serializedResult:o}},uwt=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!LP({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=X3(t,!1,o);try{Qwe(a,e,n)}catch(c){r.error??=c}},dwt=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>IP.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?owt(n,t):(r.add(s),swt(n,t))}};var rRe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,kc(e,r,"all")]:Array.isArray(e)?[kc(t,r,"all"),...e]:Br(t)&&Br(e)?a3([t,e]):`${t}${e}`};import{once as rW}from"events";var nRe=async(t,e)=>{let[r,n]=await fwt(t);return e.isForcefullyTerminated??=!1,[r,n]},fwt=async t=>{let[e,r]=await Promise.allSettled([rW(t,"spawn"),rW(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?iRe(t):r.value},iRe=async t=>{try{return await rW(t,"exit")}catch{return iRe(t)}},sRe=async t=>{let[e,r]=await t;if(!pwt(e,r)&&nW(e,r))throw new ao;return[e,r]},pwt=(t,e)=>t===void 0&&e===void 0,nW=(t,e)=>t!==0||e!==null;var oRe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=hwt(t,e,r),o=s?.code==="ETIMEDOUT",a=twe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},hwt=(t,e,r)=>t!==void 0?t:nW(e,r)?new ao:void 0;var aRe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:l,fileDescriptors:u}=gwt(t,e,r),d=Swt({file:n,commandArguments:i,options:l,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:u,startTime:a});return Mg(d,c,l)},gwt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JO(t,e,r),a=_wt(r),{file:c,commandArguments:l,options:u}=_P(t,e,a);ywt(u);let d=Mwe(u,o);return{file:c,commandArguments:l,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:u,fileDescriptors:d}},_wt=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,ywt=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&DP("ipcInput"),t&&DP("ipc: true"),r&&DP("detached: true"),n&&DP("cancelSignal")},DP=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Swt=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=Ewt({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:o,startTime:a});if(c.failed)return c;let{resultError:l,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p}=oRe(c,r),{output:h,error:m=l}=tRe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((v,y)=>kc(v,r,y)),S=kc(rRe(h,r),r,"all");return Twt({error:m,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},Ewt=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{Jwe(s,r);let a=vwt(r);return mwt(...yP(t,e,a))}catch(a){return Dg({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},vwt=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:RP(e)}),Twt=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:s,all:o,options:a,command:c,escapedCommand:l,startTime:u})=>t===void 0?AP({command:c,escapedCommand:l,stdio:s,all:o,ipcOutput:[],options:a,startTime:u}):YT({error:t,command:c,escapedCommand:l,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:s,all:o,ipcOutput:[],options:a,startTime:u,isSync:!0});import{setMaxListeners as lAt}from"events";import{spawn as uAt}from"child_process";import fRe from"process";import{once as iW,on as bwt}from"events";var cRe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(Og({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:dP(t)}),wwt({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),wwt=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{aP(e,i);let s=Au(t,e,r),o=new AbortController;try{return await Promise.race([Rwt(s,n,o),Awt(s,r,o),xwt(s,r,o)])}catch(a){throw Pg(t),a}finally{o.abort(),cP(e,i)}},Rwt=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await iW(t,"message",{signal:r});return n}for await(let[n]of bwt(t,"message",{signal:r}))if(e(n))return n},Awt=async(t,e,{signal:r})=>{await iW(t,"disconnect",{signal:r}),YTe(e)},xwt=async(t,e,{signal:r})=>{let[n]=await iW(t,"strict:error",{signal:r});throw iP(n,e)};import{once as uRe,on as Cwt}from"events";var dRe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>sW({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),sW=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{Og({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:dP(t)}),aP(e,s);let o=Au(t,e,r),a=new AbortController,c={};return Iwt(t,o,a),Owt({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),Pwt({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},Iwt=async(t,e,r)=>{try{await uRe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},Owt=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await uRe(t,"strict:error",{signal:r.signal});n.error=iP(i,e),r.abort()}catch{}},Pwt=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of Cwt(r,"message",{signal:s.signal}))lRe(o),yield c}catch{lRe(o)}finally{s.abort(),cP(e,a),n||Pg(t),i&&await t}},lRe=({error:t})=>{if(t)throw t};var pRe=(t,{ipc:e})=>{Object.assign(t,mRe(t,!1,e))},hRe=()=>{let t=fRe,e=!0,r=fRe.channel!==void 0;return{...mRe(t,e,r),getCancelSignal:vbe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},mRe=(t,e,r)=>({sendMessage:mP.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:cRe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:dRe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as Nwt}from"child_process";import{PassThrough as kwt,Readable as $wt,Writable as Lwt,Duplex as Dwt}from"stream";var gRe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{K3(n);let a=new Nwt;Mwt(a,n),Object.assign(a,{readable:Uwt,writable:Fwt,duplex:jwt});let c=Dg({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),l=zwt(c,o,i);return{subprocess:a,promise:l}},Mwt=(t,e)=>{let r=ZT(),n=ZT(),i=ZT(),s=Array.from({length:e.length-3},ZT),o=ZT(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},ZT=()=>{let t=new kwt;return t.end(),t},Uwt=()=>new $wt({read(){}}),Fwt=()=>new Lwt({write(){}}),jwt=()=>new Dwt({read(){},write(){}}),zwt=async(t,e,r)=>Mg(t,e,r);import{createReadStream as _Re,createWriteStream as yRe}from"fs";import{Buffer as qwt}from"buffer";import{Readable as JT,Writable as Bwt,Duplex as Vwt}from"stream";var ERe=(t,e)=>OP(Hwt,t,e,!1),XT=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${xu[t]}.`)},SRe={fileNumber:XT,generator:tW,asyncGenerator:tW,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:Vwt.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},Hwt={input:{...SRe,fileUrl:({value:t})=>({stream:_Re(t)}),filePath:({value:{file:t}})=>({stream:_Re(t)}),webStream:({value:t})=>({stream:JT.fromWeb(t)}),iterable:({value:t})=>({stream:JT.from(t)}),asyncIterable:({value:t})=>({stream:JT.from(t)}),string:({value:t})=>({stream:JT.from(t)}),uint8Array:({value:t})=>({stream:JT.from(qwt.from(t))})},output:{...SRe,fileUrl:({value:t})=>({stream:yRe(t)}),filePath:({value:{file:t,append:e}})=>({stream:yRe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:Bwt.fromWeb(t)}),iterable:XT,asyncIterable:XT,string:XT,uint8Array:XT}};import{on as Gwt,once as vRe}from"events";import{PassThrough as Wwt,getDefaultHighWaterMark as Ywt}from"stream";import{finished as wRe}from"stream/promises";function Yf(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)aW(i);let e=t.some(({readableObjectMode:i})=>i),r=Kwt(t,e),n=new oW({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var Kwt=(t,e)=>{if(t.length===0)return Ywt(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},oW=class extends Wwt{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(aW(e),this.#e.has(e))return;this.#e.add(e),this.#n??=Zwt(this,this.#e,this.#s);let r=Qwt({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(aW(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)}},Zwt=async(t,e,r)=>{MP(t,TRe);let n=new AbortController;try{await Promise.race([Jwt(t,n),Xwt(t,e,r,n)])}finally{n.abort(),MP(t,-TRe)}},Jwt=async(t,{signal:e})=>{try{await wRe(t,{signal:e,cleanup:!0})}catch(r){throw RRe(t,r),r}},Xwt=async(t,e,r,{signal:n})=>{for await(let[i]of Gwt(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},aW=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Qwt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{MP(t,bRe);let a=new AbortController;try{await Promise.race([eRt(s,e,a),tRt({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),rRt({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),MP(t,-bRe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?cW(t):nRt(t))},eRt=async(t,e,{signal:r})=>{try{await t,r.aborted||cW(e)}catch(n){r.aborted||RRe(e,n)}},tRt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await wRe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;ARe(o)?i.add(e):xRe(t,o)}},rRt=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await vRe(t,i,{signal:s}),!t.readable)return vRe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},nRt=t=>{t.writable&&t.end()},RRe=(t,e)=>{ARe(e)?cW(t):xRe(t,e)},ARe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",cW=t=>{(t.readable||t.writable)&&t.destroy()},xRe=(t,e)=>{t.destroyed||(t.once("error",iRt),t.destroy(e))},iRt=()=>{},MP=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},TRe=2,bRe=1;import{finished as CRe}from"stream/promises";var Fg=(t,e)=>{t.pipe(e),sRt(t,e),oRt(t,e)},sRt=async(t,e)=>{if(!(oo(t)||oo(e))){try{await CRe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}lW(e)}},lW=t=>{t.writable&&t.end()},oRt=async(t,e)=>{if(!(oo(t)||oo(e))){try{await CRe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}uW(t)}},uW=t=>{t.readable&&t.destroy()};var IRe=(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})=>Os.has(c)))aRt(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Os.has(c)))lRt({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]:Yf(s);Fg(o,i)}},aRt=(t,e,r,n)=>{r==="output"?Fg(t.stdio[n],e):Fg(e,t.stdio[n]);let i=cRt[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},cRt=["stdin","stdout","stderr"],lRt=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;uRt(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},uRt=(t,{signal:e})=>{oo(t)&&Vf(t,dRt,e)},dRt=2;import{addAbortListener as hRt}from"events";var Kf=[];Kf.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Kf.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Kf.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var UP=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",dW=Symbol.for("signal-exit emitter"),fW=globalThis,fRt=Object.defineProperty.bind(Object),pW=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(fW[dW])return fW[dW];fRt(fW,dW,{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}},FP=class{},pRt=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),hW=class extends FP{onExit(){return()=>{}}load(){}unload(){}},mW=class extends FP{#e=gW.platform==="win32"?"SIGINT":"SIGHUP";#r=new pW;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of Kf)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(!UP(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 Kf)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,Kf.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 UP(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"&&UP(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)}},gW=globalThis.process,{onExit:ORe,load:Dmr,unload:Mmr}=pRt(UP(gW)?new mW(gW):new hW);var PRe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=ORe(()=>{t.kill()});hRt(n,()=>{i()})};var kRe=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=ZO(),{destination:o,destinationStream:a,destinationError:c,from:l,unpipeSignal:u}=mRt(r,n,i),{sourceStream:d,sourceError:f}=_Rt(t,l),{options:p,fileDescriptors:h}=da.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:u,fileDescriptors:h,startTime:s}},mRt=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=gRt(t,e,...r),a=oP(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},gRt=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(NRe,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||s3(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]=jO(r,...n);return{destination:e(NRe)(i,s,o),pipeOptions:o}}if(da.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}`)},NRe=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),_Rt=(t,e)=>{try{return{sourceStream:Ng(t,e)}}catch(r){return{sourceError:r}}};var LRe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=yRt({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw _W({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},yRt=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return uW(t),n;if(e!==void 0)return lW(r),e},_W=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>Dg({error:t,command:$Re,escapedCommand:$Re,fileDescriptors:e,options:r,startTime:n,isSync:!1}),$Re="source.pipe(destination)";var DRe=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 SRt}from"stream/promises";var MRe=(t,e,r)=>{let n=jP.has(e)?vRt(t,e):ERt(t,e);return Vf(t,bRt,r.signal),Vf(e,wRt,r.signal),TRt(e),n},ERt=(t,e)=>{let r=Yf([t]);return Fg(r,e),jP.set(e,r),r},vRt=(t,e)=>{let r=jP.get(e);return r.add(t),r},TRt=async t=>{try{await SRt(t,{cleanup:!0,readable:!1,writable:!0})}catch{}jP.delete(t)},jP=new WeakMap,bRt=2,wRt=1;import{aborted as RRt}from"util";var URe=(t,e)=>t===void 0?[]:[ARt(t,e)],ARt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await RRt(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw _W({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var zP=(t,...e)=>{if(Cr(e[0]))return zP.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=kRe(t,...e),i=xRt({...n,destination:r});return i.pipe=zP.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},xRt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:l})=>{let u=CRt(t,i);LRe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:l});let d=new AbortController;try{let f=MRe(e,s,d);return await Promise.race([DRe(u),...URe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:l})])}finally{d.abort()}},CRt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as LRt}from"timers/promises";import{on as IRt}from"events";import{getDefaultHighWaterMark as ORt}from"stream";var qP=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return PRt(e,o),jRe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},PRt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},yW=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;NRt(e,o,t);let a=t.readableObjectMode&&!s;return jRe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},NRt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},jRe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=IRt(t,"data",{signal:e.signal,highWaterMark:FRe,highWatermark:FRe});return kRt({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},SW=ORt(!0),FRe=SW,kRt=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=$Rt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*Wf(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*KT(a)}},$Rt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[NP(t,r,!e),PP(t,i,!n,{})].filter(Boolean);var zRe=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,buffer:i,maxBuffer:s,lines:o,allMixed:a,stripFinalNewline:c,verboseInfo:l,streamInfo:u})=>{let d=DRt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:l,streamInfo:u});if(!i){await Promise.all([MRt(t),d]);return}let f=Z3(c,r),p=yW({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([URt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},DRt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!LP({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=yW({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await Xwe(a,t,r,s)},MRt=async t=>{await LRt(),t.readableFlowing===null&&t.resume()},URt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await TP(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await bP(r,{maxBuffer:s})):await Lg(r,{maxBuffer:s})}catch(a){return qRe(Xbe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},EW=async t=>{try{return await t}catch(e){return qRe(e)}},qRe=({bufferedData:t})=>hve(t)?new Uint8Array(t):t;import{finished as FRt}from"stream/promises";var QT=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=jRt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],FRt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||BRt(a,e,r,n)}finally{o.abort()}},jRt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&zRt(t,r,n),n},zRt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{qRt(e,r),n.call(t,...i)}},qRt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},BRt=(t,e,r,n)=>{if(!VRt(t,e,r,n))throw t},VRt=(t,e,r,n=!0)=>r.propagating?BRe(t)||BP(t):(r.propagating=!0,vW(r,e)===n?BRe(t):BP(t)),vW=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",BP=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",BRe=t=>t?.code==="EPIPE";var VRe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,l)=>TW({stream:c,fdNumber:l,encoding:e,buffer:r[l],maxBuffer:n[l],lines:i[l],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),TW=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:l})=>{if(!t)return;let u=QT(t,e,l);if(vW(l,e)){await u;return}let[d]=await Promise.all([zRe({stream:t,onStreamEnd:u,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:l}),u]);return d};var HRe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?Yf([t,e].filter(Boolean)):void 0,GRe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>TW({...HRt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:GRt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),HRt=({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}},GRt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as WRt}from"events";var WRe=t=>xg(t,"ipc"),YRe=(t,e)=>{let r=KO(t);la({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var KRe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=WRe(s),a=Pc(e,"ipc"),c=Pc(r,"ipc");for await(let l of sW({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(Qbe(t,i,c),i.push(l)),o&&YRe(l,s);return i},ZRe=async(t,e)=>(await Promise.allSettled([t]),e);var JRe=async({subprocess:t,options:{encoding:e,buffer:r,maxBuffer:n,lines:i,timeoutDuration:s,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:l,ipc:u,ipcInput:d},context:f,verboseInfo:p,fileDescriptors:h,originalStreams:m,onInternalError:_,controller:S})=>{let v=nRe(t,f),y={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:v,propagating:!1},g=VRe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:y}),T=GRe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:y}),w=[],R=KRe({subprocess:t,buffer:r,maxBuffer:n,ipc:u,ipcOutput:w,verboseInfo:p}),b=YRt(m,t,y),C=KRt(h,y);try{return await Promise.race([Promise.all([{},sRe(v),Promise.all(g),T,R,Pbe(t,d),...b,...C]),_,ZRt(t,S),...Abe(t,s,f,S),...WTe({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...wbe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:S})])}catch(P){return f.terminationReason??="other",Promise.all([{error:P},v,Promise.all(g.map(A=>EW(A))),EW(T),ZRe(R,w),Promise.allSettled(b),Promise.allSettled(C)])}},YRt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:QT(n,i,r)),KRt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>lo(s,{checkOpen:!1})&&!oo(s)).map(({type:i,value:s,stream:o=s})=>QT(o,n,e,{isSameDirection:Os.has(i),stopOnExit:i==="native"}))),ZRt=async(t,{signal:e})=>{let[r]=await WRt(t,"error",{signal:e});throw r};var XRe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),eb=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=ua();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},jg=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 JRt}from"stream";import{callbackify as XRt}from"util";import{finished as QRe}from"stream/promises";var bW=async t=>{if(t!==void 0)try{await wW(t)}catch{}},eAe=async t=>{if(t!==void 0)try{await RW(t)}catch{}},wW=async t=>{await QRe(t,{cleanup:!0,readable:!1,writable:!0})},RW=async t=>{await QRe(t,{cleanup:!0,readable:!0,writable:!1})},VP=async(t,e)=>{if(await t,e)throw e},HP=(t,e,r)=>{r&&!BP(r)?t.destroy(r):e&&t.destroy()};var tAe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||Ki.has(r),{subprocessStdout:a,waitReadableDestroy:c}=AW(t,n,e),{readableEncoding:l,readableObjectMode:u,readableHighWaterMark:d}=xW(a,o),{read:f,onStdoutDataDone:p}=CW({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new JRt({read:f,destroy:XRt(OW.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:u,encoding:l});return IW({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},AW=(t,e,r)=>{let n=Ng(t,e),i=eb(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},xW=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:SW},CW=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=ua(),o=qP({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){QRt(this,o,s)},onStdoutDataDone:s}},QRt=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},IW=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await RW(t),await n,await bW(i),await e,r.readable&&r.push(null)}catch(s){await bW(i),rAe(r,s)}},OW=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await jg(r,e)&&(rAe(t,n),await VP(e,n))},rAe=(t,e)=>{HP(t,t.readable,e)};import{Writable as eAt}from"stream";import{callbackify as nAe}from"util";var iAe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=PW(t,r,e),o=new eAt({...NW(n,t,i),destroy:nAe($W.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return kW(n,o),o},PW=(t,e,r)=>{let n=oP(t,e),i=eb(r,n,"writableFinal"),s=eb(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},NW=(t,e,r)=>({write:tAt.bind(void 0,t),final:nAe(rAt.bind(void 0,t,e,r))}),tAt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},rAt=async(t,e,r)=>{await jg(r,e)&&(t.writable&&t.end(),await e)},kW=async(t,e,r)=>{try{await wW(t),e.writable&&e.end()}catch(n){await eAe(r),sAe(e,n)}},$W=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await jg(r,e),await jg(n,e)&&(sAe(t,i),await VP(e,i))},sAe=(t,e)=>{HP(t,t.writable,e)};import{Duplex as nAt}from"stream";import{callbackify as iAt}from"util";var oAe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||Ki.has(r),{subprocessStdout:c,waitReadableDestroy:l}=AW(t,n,e),{subprocessStdin:u,waitWritableFinal:d,waitWritableDestroy:f}=PW(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=xW(c,a),{read:_,onStdoutDataDone:S}=CW({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),v=new nAt({read:_,...NW(u,t,d),destroy:iAt(sAt.bind(void 0,{subprocessStdout:c,subprocessStdin:u,subprocess:t,waitReadableDestroy:l,waitWritableFinal:d,waitWritableDestroy:f})),readableHighWaterMark:m,writableHighWaterMark:u.writableHighWaterMark,readableObjectMode:h,writableObjectMode:u.writableObjectMode,encoding:p});return IW({subprocessStdout:c,onStdoutDataDone:S,readable:v,subprocess:t,subprocessStdin:u}),kW(u,v,c),v},sAt=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([OW({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),$W({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var LW=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||Ki.has(e),o=Ng(t,r),a=qP({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return oAt(a,o,t)},oAt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var aAe=(t,{encoding:e})=>{let r=XRe();t.readable=tAe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=iAe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=oAe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=LW.bind(void 0,t,e),t[Symbol.asyncIterator]=LW.bind(void 0,t,e,{})};var cAe=(t,e)=>{for(let[r,n]of cAt){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},aAt=(async()=>{})().constructor.prototype,cAt=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(aAt,t)]);var lAe=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:l,options:u,fileDescriptors:d}=dAt(t,e,r),{subprocess:f,promise:p}=pAt({file:i,commandArguments:s,options:u,startTime:c,verboseInfo:l,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=zP.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),cAe(f,p),da.set(f,{options:u,fileDescriptors:d}),f},dAt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JO(t,e,r),{file:a,commandArguments:c,options:l}=_P(t,e,r),u=fAt(l),d=ERe(u,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:u,fileDescriptors:d}},fAt=({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}},pAt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=uAt(...yP(t,e,r))}catch(h){return gRe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let l=new AbortController;lAt(Number.POSITIVE_INFINITY,l.signal);let u=[...c.stdio];IRe(c,a,l),PRe(c,r,l);let d={},f=ua();c.kill=HTe.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:l}),c.all=HRe(c,r),aAe(c,r),pRe(c,r);let p=hAt({subprocess:c,options:r,startTime:n,verboseInfo:i,fileDescriptors:a,originalStreams:u,command:s,escapedCommand:o,context:d,onInternalError:f,controller:l});return{subprocess:c,promise:p}},hAt=async({subprocess:t,options:e,startTime:r,verboseInfo:n,fileDescriptors:i,originalStreams:s,command:o,escapedCommand:a,context:c,onInternalError:l,controller:u})=>{let[d,[f,p],h,m,_]=await JRe({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:s,onInternalError:l,controller:u});u.abort(),l.resolve();let S=h.map((g,T)=>kc(g,e,T)),v=kc(m,e,"all"),y=mAt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:v,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return Mg(y,n,e)},mAt=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,context:o,options:a,command:c,escapedCommand:l,startTime:u})=>"error"in t?YT({error:t.error,command:c,escapedCommand:l,timedOut:o.terminationReason==="timeout",isCanceled:o.terminationReason==="cancel"||o.terminationReason==="gracefulCancel",isGracefullyCanceled:o.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof fa,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:u,isSync:!1}):AP({command:c,escapedCommand:l,stdio:n,all:i,ipcOutput:s,options:a,startTime:u});var GP=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,gAt(n,t[n],i)]));return{...t,...r}},gAt=(t,e,r)=>_At.has(t)&&Cr(e)&&Cr(r)?{...e,...r}:r,_At=new Set(["env",...d3]);var Cu=(t,e,r,n)=>{let i=(o,a,c)=>Cu(o,a,r,c),s=(...o)=>yAt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},yAt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(Cr(s))return i(t,GP(r,s),n);let{file:a,commandArguments:c,options:l,isSync:u}=SAt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return u?aRe(a,c,l):lAe(a,c,l,i)},SAt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=Eve(e)?vve(e,r):[e,...r],[o,a,c]=jO(...s),l=GP(GP(n,i),c),{file:u=o,commandArguments:d=a,options:f=l,isSync:p=!1}=t({file:o,commandArguments:a,options:l});return{file:u,commandArguments:d,options:f,isSync:p}};var uAe=({file:t,commandArguments:e})=>fAe(t,e),dAe=({file:t,commandArguments:e})=>({...fAe(t,e),isSync:!0}),fAe=(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]=EAt(t);return{file:r,commandArguments:n}},EAt=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(vAt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},vAt=/ +/g;var pAe=(t,e,r)=>{t.sync=e(TAt,r),t.s=t.sync},hAe=({options:t})=>mAe(t),TAt=({options:t})=>({...mAe(t),isSync:!0}),mAe=t=>({options:{...bAt(t),...t}}),bAt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},gAe={preferLocal:!0};var _Ae=Cu(()=>({})),Ayr=Cu(()=>({isSync:!0})),yAe=Cu(uAe),xyr=Cu(dAe),Cyr=Cu(Cbe),Iyr=Cu(hAe,{},gAe,pAe),{sendMessage:Oyr,getOneMessage:Pyr,getEachMessage:Nyr,getCancelSignal:kyr}=hRe();import{Transform as wAt}from"stream";var RAt=["NETLIFY_AI_GATEWAY_KEY"];function AAt(){let t=(process.env.NETLIFY_SENSITIVE_ENV_KEYS||"").split(",").map(e=>e.trim()).filter(Boolean);return[...new Set([...t,...RAt])]}function xAt(t){let e=t.toLowerCase();return e==="true"||e==="false"?!0:t.trim().length<4}function CAt(){let e=AAt().map(r=>process.env[r]).filter(r=>!(!r||xAt(r)));return[...new Set(e)].sort((r,n)=>n.length-r.length)}function Ni(t){if(typeof t!="string")return t;let e=CAt();if(e.length===0)return t;let r=t;return e.forEach(n=>{let i=new RegExp(IAt(n),"g");r=r.replace(i,"******")}),r}function IAt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var tb=class extends wAt{constructor(e={}){super({...e,objectMode:!1})}_transform(e,r,n){let i=e.toString(),s=Ni(i);n(null,s)}},WP=Symbol("maskedWrite");function SAe(){if(process.env.NETLIFY_MASK_LOGS!=="false"){if(!process.stdout.write[WP]){let e=process.stdout.write.bind(process.stdout),r=function(n,i,s){let o=typeof n=="string"?Ni(n):n;return typeof i=="function"?e(o,i):e(o,i,s)};r[WP]=!0,process.stdout.write=r}if(!process.stderr.write[WP]){let e=process.stderr.write.bind(process.stderr),r=function(n,i,s){let o=typeof n=="string"?Ni(n):n;return typeof i=="function"?e(o,i):e(o,i,s)};r[WP]=!0,process.stderr.write=r}}}var EAe=!1,vAe,DW=t=>{vAe??=t},TAe=t=>{EAe=!0,DW(t)},In=()=>EAe,Iu=()=>vAe;var rb=null,bAe=t=>(rb&&rb.destroy(),rb=new uo({totalAllowedTime:t}),rb),wAe=()=>rb;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&&In())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((u,d)=>{o=setTimeout(()=>{d(new Error(`${e} stage exceeded its maximum duration of ${n}ms`))},n)}));let c=Date.now(),l="success";try{return await LO({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(u){throw l="failure",u}finally{Q.timing("stage.duration",Date.now()-c,{stage:e,outcome:l}),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 RAe={name:"@netlify/agent-runner-cli",type:"module",version:"1.188.0",description:"CLI tool for running Netlify agents",main:"./dist/index.js",types:"./dist/index.d.ts",exports:"./dist/index.js",bin:{"agent-runner-cli":"./dist/bin.js","agent-runner-cli-local":"./dist/bin-local.js"},files:["dist/**/*.js","dist/**/*.d.ts","dist/skills/**","patches","scripts"],scripts:{prebuild:"rm -rf dist",build:"tsup",dev:"tsup --watch",prepare:"husky install node_modules/@netlify/eslint-config-node/.husky/",prepublishOnly:"npm ci && npm test",prepack:"npm run build",test:"run-s build format test:dev",format:"run-s build format:check-fix:*","format:ci":"run-s build format:check:*","format:check-fix:lint":"run-e format:check:lint format:fix:lint","format:check:lint":'eslint --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:fix:lint":'eslint --fix --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:check-fix:prettier":"run-e format:check:prettier format:fix:prettier","format:check:prettier":'prettier --check --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"format:fix:prettier":'prettier --write --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"test:dev":"run-s build test:dev:*","test:ci":"run-s build test:ci:*","test:dev:vitest":"LOG=0 vitest --exclude '**/integration/**'","test:ci:vitest":"LOG=0 vitest run --coverage --exclude '**/integration/**'","test:smoke":"node scripts/smoke-dist.js","test:integration":"vitest run test/integration/","test:integration:codex":"vitest run test/integration/codex.test.ts","test:integration:claude":"vitest run test/integration/claude.test.ts","test:integration:gemini":"vitest run test/integration/gemini.test.ts","test:integration:opencode":"vitest run test/integration/opencode.test.ts","test:integration:skill-invocation":"vitest run test/integration/skill-invocation.test.ts","check:types":"tsc --noEmit",postinstall:"node scripts/postinstall.js"},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.17.6","@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.280","@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.1","@netlify/otel":"^6.0.6","@netlify/ts-cli":"^1.2.0","@openai/codex":"0.153.4","@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:"6.34.0",zod:"^4.4.3"}};var kAt=PAt(import.meta.url),$At=$c.dirname(kAt),LAt=NAt(import.meta.url),zg=fe("shell"),MW=new Set,AAe={preferLocal:!0},ir=(t,e,r)=>{let[n,i]=DAt(e,r),s={...AAe,...i},o=_Ae(t,n,s);CAe(o,s),PAe(o);let a=r?.idleTimeout;return a&&a>0&&OAe(o,a),o},xAe=(t,e)=>{let r={...AAe,...e},n=yAe(t,r);return CAe(n,r),PAe(n),e?.idleTimeout&&e.idleTimeout>0&&OAe(n,e.idleTimeout),n},DAt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},CAe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||ha.env.NETLIFY_LOCAL_QUIET==="true")return;if(ha.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new tb).pipe(ha.stdout),t.stderr?.pipe(new tb).pipe(ha.stderr);return}t.stdout?.pipe(ha.stdout),t.stderr?.pipe(ha.stderr)},UW=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(ha.kill(-t.pid,e),zg.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return zg.error("Error killing process:",r),!1}},IAe=t=>UW(t,"SIGKILL"),OAe=(t,e)=>{let r=null,n=()=>{zg.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),UW(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(zg.log(`Force killing idle process ${t.pid}`),IAe(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)},PAe=t=>{MW.add(t);let e=wAe();if(e){let r=e.onTimesUp(()=>{zg.log(`Global timer expired, killing process ${t.pid}`),UW(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(zg.log(`Force killing process ${t.pid} after timeout`),IAe(t))},5e3)});t.on("exit",()=>{MW.delete(t),r()}),t.on("error",()=>{MW.delete(t),r()})}};function ma(t,e){if(!ha.env.NETLIFY_LOCAL_MODE)try{let i=LAt.resolve(RAe.name),s=$c.dirname(i);for(;s!==$c.dirname(s);){let o=$c.dirname(s);if($c.basename(o)==="node_modules"){let a=$c.join(o,".bin",e);if(YP.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(ha.env.NODE_PATH){let i=$c.join(ha.env.NODE_PATH,".bin",e);if(YP.existsSync(i))return i}let r=$c.join(t,"node_modules",".bin",e);if(YP.existsSync(r))return r;let n=$c.join($At,"..","node_modules",".bin",e);if(YP.existsSync(n))return n}import _D from"process";import{fileURLToPath as dFt}from"url";import{createRequire as fFt}from"module";import rR from"path";import{readFileSync as pFt}from"fs";var MAt="__netlify__getTracer",UAt="__netlify__shutdownTracers",Tt=(t,e)=>globalThis[MAt]?.(t,e),NAe=async()=>globalThis[UAt]?.();function nb(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 iFt}from"timers/promises";Ne();import Fxt from"process";Ne();var c0t=(t,e)=>{e.recordException(t),e.setStatus({code:Wn.ERROR})};var Mc=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}=R0e(r,n,i);return this._tracer.startActiveSpan(e,s,o,c=>A0e(c,s,a))}withSpan(e,r,n,i){let{opts:s,ctx:o,fn:a}=R0e(r,n,i),c=this._tracer.startSpan(e,s,o);return A0e(c,s,a)}};function R0e(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??Ht.active(),{opts:n,ctx:i,fn:s}}function A0e(t,e,r){var n;let i=(n=e.onException)!==null&&n!==void 0?n:c0t,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)}}Ne();var Yg=t=>t!==null&&typeof t=="object"&&typeof t.then=="function";var yY=class t{_rawAttributes;_asyncAttributesPending=!1;_schemaUrl;_memoizedAttributes;static FromAttributeList(e,r){let n=new t({},r);return n._rawAttributes=D0e(e),n._asyncAttributesPending=e.filter(([i,s])=>Yg(s)).length>0,n}constructor(e,r){let n=e.attributes??{};this._rawAttributes=Object.entries(n).map(([i,s])=>(Yg(s)&&(this._asyncAttributesPending=!0),[i,s])),this._rawAttributes=D0e(this._rawAttributes),this._schemaUrl=l0t(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,Yg(n)?await n:n]}this._asyncAttributesPending=!1}}get attributes(){if(this.asyncAttributesPending&&le.error("Accessing resource attributes before async attributes settled"),this._memoizedAttributes)return this._memoizedAttributes;let e={};for(let[r,n]of this._rawAttributes){if(Yg(n)){le.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=u0t(this,e),n=r?{schemaUrl:r}:void 0;return t.FromAttributeList([...e.getRawAttributes(),...this.getRawAttributes()],n)}};function SY(t,e){return yY.FromAttributeList(Object.entries(t),e)}function D0e(t){return t.map(([e,r])=>Yg(r)?[e,r.catch(n=>{le.debug("promise rejection for resource attribute: %s - %s",e,n)})]:[e,r])}function l0t(t){if(typeof t=="string"||t===void 0)return t;le.warn("Schema URL must be string or undefined, got %s. Schema URL will be ignored.",t)}function u0t(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;le.warn('Schema URL merge conflict: old resource has "%s", updating resource has "%s". Resulting resource will have undefined Schema URL.',r,n)}Ne();var mb=class{emit(e){}enabled(){return!1}},M0e=new mb;var gb=Symbol.for("io.opentelemetry.js.api.logs"),Kg=globalThis;function U0e(t,e,r){return n=>n===t?e:r}var EY=1;var vY=class{getLogger(e,r,n){return new mb}},_N=new vY;var yN=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):M0e}};var _b=class{getLogger(e,r,n){var i;return(i=this._getDelegateLogger(e,r,n))!==null&&i!==void 0?i:new yN(this,e,r,n)}_getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:_N}_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 SN=class t{constructor(){this._proxyLoggerProvider=new _b}static getInstance(){return this._instance||(this._instance=new t),this._instance}setGlobalLoggerProvider(e){return Kg[gb]?this.getLoggerProvider():(Kg[gb]=U0e(EY,e,_N),this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,r;return(r=(e=Kg[gb])===null||e===void 0?void 0:e.call(Kg,EY))!==null&&r!==void 0?r:this._proxyLoggerProvider}getLogger(e,r,n){return this.getLoggerProvider().getLogger(e,r,n)}disable(){delete Kg[gb],this._proxyLoggerProvider=new _b}};var F0e=SN.getInstance();function j0e(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 z0e(t){t.forEach(e=>e.disable())}function TY(t){let e=t.tracerProvider||Ot.getTracerProvider(),r=t.meterProvider||hb.getMeterProvider(),n=t.loggerProvider||F0e.getLoggerProvider(),i=t.instrumentations?.flat()??[];return j0e(i,e,r,n),()=>{z0e(i)}}Ne();var d0t=en("OpenTelemetry SDK Context Key SUPPRESS_TRACING");function q0e(t){return t.getValue(d0t)===!0}var Zg;(function(t){t[t.SUCCESS=0]="SUCCESS",t[t.FAILED=1]="FAILED"})(Zg||(Zg={}));Ne();var bY="[_0-9a-z-*/]",f0t=`[a-z]${bY}{0,255}`,p0t=`[a-z0-9]${bY}{0,240}@[a-z]${bY}{0,13}`,h0t=new RegExp(`^(?:${f0t}|${p0t})$`),m0t=/^[ -~]{0,255}[!-~]$/,g0t=/,|=/;function wY(t){return h0t.test(t)}function RY(t){return m0t.test(t)&&!g0t.test(t)}var _0t=32,B0e=512,V0e=",",H0e="=",EN=class t{_length;_rawTraceState;_internalState;constructor(e){this._rawTraceState=typeof e=="string"?e:"",this._length=this._rawTraceState.length}set(e,r){if(!wY(e)||!RY(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>B0e)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=V0e+e),e=`${n[0]}${H0e}${n[1]}`+e,r++;return e}_getState(){if(this._internalState)return this._internalState;let e=this._rawTraceState.split(V0e),r=new Map,n=0;for(let i of e){let s=i.trim(),o=s.indexOf(H0e);if(o===-1)continue;let a=s.slice(0,o),c=s.slice(o+1);if(!wY(a)||!RY(c))continue;let l=n+s.length+(r.size>0?1:0);if(!(l>B0e)&&(r.set(a,c),n=l,r.size>=_0t))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 vN="traceparent",TN="tracestate",y0t="00",S0t="(?!ff)[\\da-f]{2}",E0t="(?![0]{32})[\\da-f]{32}",v0t="(?![0]{16})[\\da-f]{16}",T0t="[\\da-f]{2}",b0t=new RegExp(`^\\s?(${S0t})-(${E0t})-(${v0t})-(${T0t})(-.*)?\\s?$`);function G0e(t){let e=b0t.exec(t);return!e||e[1]==="00"&&e[5]?null:{traceId:e[2],spanId:e[3],traceFlags:parseInt(e[4],16)}}var Nu=class{inject(e,r,n){let i=Ot.getSpanContext(e);if(!i||q0e(e)||!ki(i))return;let s=`${y0t}-${i.traceId}-${i.spanId}-0${Number(i.traceFlags||Sr.NONE).toString(16)}`;n.set(r,vN,s),i.traceState&&n.set(r,TN,i.traceState.serialize())}extract(e,r,n){let i=n.get(r,vN);if(!i)return e;let s=Array.isArray(i)?i[0]:i;if(typeof s!="string")return e;let o=G0e(s);if(!o)return e;o.isRemote=!0;let a=n.get(r,TN);if(a){let c=Array.isArray(a)?a.join(","):a;o.traceState=new EN(typeof c=="string"?c:void 0)}return Ot.setSpanContext(e,o)}fields(){return[vN,TN]}};var bN=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 yb=class{_isCalled=!1;_deferred=new bN;_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 hk=hn(uK(),1);Ne();var CIe=t=>{throw TypeError(t)},hK=(t,e,r)=>e.has(t)||CIe("Cannot "+r),pk=(t,e,r)=>(hK(t,e,"read from private field"),r?r.call(t):e.get(t)),dK=(t,e,r)=>e.has(t)?CIe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),RIe=(t,e,r,n)=>(hK(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),Uxt=(t,e,r)=>(hK(t,e,"access private method"),r),AIe="__netlify__getTracer",jxt="__netlify__shutdownTracers",zxt="__nfOTLPTrace",kb,$b,pK,IIe,qxt=class{constructor(){dK(this,pK),dK(this,kb),dK(this,$b),RIe(this,kb,new yb(Uxt(this,pK,IIe),this)),RIe(this,$b,le.createComponentLogger({namespace:"netlify-span-exporter"}))}export(t,e){if(pk(this,$b).debug(`export ${t.length.toString()} spans`),pk(this,kb).isCalled){e({code:Zg.FAILED,error:new Error("Exporter has been shutdown")});return}console.log(zxt,JSON.stringify(Bxt(t))),e({code:Zg.SUCCESS})}shutdown(){return pk(this,kb).call()}};kb=new WeakMap;$b=new WeakMap;pK=new WeakSet;IIe=function(){return pk(this,$b).debug("Shutting down"),Promise.resolve()};function Bxt(t){return{resourceSpans:t.map(e=>{let r=e.spanContext();return{resource:{attributes:fk(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||fo.SERVER,startTimeUnixNano:fK(e.startTime),endTimeUnixNano:fK(e.endTime),attributes:fk(e.attributes),droppedAttributesCount:e.droppedAttributesCount,events:e.events.map(n=>({name:n.name,timeUnixNano:fK(n.time),attributes:fk(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:fk(n.attributes??{}),droppedAttributesCount:n.droppedAttributesCount??0})),droppedLinksCount:e.droppedLinksCount}]}]}})}}function fk(t){return Object.keys(t).map(e=>OIe(e,t[e]))}function OIe(t,e){return{key:t,value:PIe(e)}}function PIe(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(PIe)}}:e==="object"&&t!=null?{kvlistValue:{values:Object.entries(t).map(([r,n])=>OIe(r,n))}}:{}}function fK(t){let e=BigInt(1e9);return(BigInt(Math.trunc(t[0]))*e+BigInt(Math.trunc(t[1]))).toString()}var xIe={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"}},NIe=t=>{if(Object.prototype.hasOwnProperty.call(globalThis,AIe))return;let e=Fxt.version.slice(1),r=SY({"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??[Vxt()],i=new hk.NodeTracerProvider({resource:r,spanProcessors:n});i.register({propagator:new Nu});let s=t.instrumentations??[];TY({instrumentations:s,tracerProvider:i}),Object.defineProperty(globalThis,AIe,{enumerable:!1,configurable:!0,writable:!1,value:function(a,c){return a?new Mc(Ot.getTracer(a,c)):new Mc(Ot.getTracer(xIe.name,xIe.version))}}),Object.defineProperty(globalThis,jxt,{enumerable:!1,configurable:!0,writable:!1,value:async()=>await i.shutdown()})},Vxt=()=>new hk.SimpleSpanProcessor(new qxt);Ne();var Lb=hn(uK(),1);Ne();import*as mk from"diagnostics_channel";var kIe=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?Wn.ERROR:Wn.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],l=e[a+1];if(typeof c!="string"&&!Buffer.isBuffer(c)||typeof l!="string"&&!Buffer.isBuffer(l))continue;let u=c.toString().toLowerCase();if(n.some(f=>typeof f=="string"?f==u:f.test(u)))continue;let d=`http.${t}.header.${u}`;i===!0||i.some(f=>typeof f=="string"?f==u:f.test(u))?o[d]="REDACTED":o[d]=l.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 Mc?t:new Mc(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){mk.subscribe(t,e);let r=()=>mk.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:fo.CLIENT},Ht.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:Wn.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 n1e=hn(t1e(),1);var mD=fe("tracing"),r1e=8e3,sFt=5e3,Qw=async(t=sFt)=>{try{await Promise.race([NAe(),iFt(t)])}catch(e){mD.warn("Failed to flush tracers on shutdown",e)}},i1e=async(t,e,r)=>{if(!Tt()){let n=[new Lb.SimpleSpanProcessor(new mJ),new Lb.SimpleSpanProcessor(new n1e.OTLPTraceExporter({url:r.exporterUrl}))];await NIe({serviceName:"@netlify/agent-runner-cli",serviceVersion:t,deploymentEnvironment:"production",siteUrl:"",siteId:process.env.SITE_ID??"",siteName:e,spanProcessors:n,instrumentations:[new kIe({skipHeaders:!0})]})}return r.traceparent?(di.setGlobalPropagator(new Nu),di.extract(Ht.active(),{traceparent:r.traceparent,isRemote:!0})):Ht.active()};function Yt(t,e,r){return mD.log(`\u23F3 TRACE: ${e} starting...`),nb(t,e,r)}var mJ=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(", ")}]`:"";mD.log(`${s} TRACE: ${e.name} completed in ${r.toFixed(2)}ms${o}`),e.status?.code===2&&e.status.message&&mD.log(` \u274C Error: ${e.status.message}`)}};function gJ(){return Ve().captureLlmContentEnabled}function s1e(t){return t.includes("claude")?"anthropic":t.includes("codex")?"openai":t.includes("gemini")?"google":t.includes("opencode")?"opencode":t}function gD(t,e,r){let n={role:t,parts:[{type:"text",content:Ni(e)}]};return r&&(n.finish_reason=r),JSON.stringify([n])}var oFt=new Set([ee.Task,ee.RunCommand,ee.Explore,ee.FileRead,ee.FileWrite,ee.Notebook,ee.Web,ee.Todo,ee.Skill,ee.Tool,ee.Memorize,ee.Deployment,ee.SiteGeneration]);function o1e(t,e,r,n){if(!t.length)return;let i=Tt();if(!i)return;let s=gJ(),o=Math.max(1,(n-r)/t.length);t.forEach((a,c)=>{let l=Math.min(n,r+c*o),u=Math.min(n,l+o),d=a.type==="tool_use"||a.type==="tool_result"||a.category!=null&&oFt.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>r1e?`${a.message.slice(0,r1e)}\u2026`:a.message:void 0;i.startSpan(m,{startTime:l,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":Ni(_)}:{"gen_ai.output.messages":gD("assistant",_)}:{}}}).end(u)})}import{readdir as aFt,rm as cFt}from"fs/promises";import{join as lFt}from"path";async function a1e(t,e=[]){let n=(await aFt(t)).filter(i=>!e.includes(i));await Promise.all(n.map(i=>cFt(lFt(t,i),{recursive:!0,force:!0})))}var uFt=300,eR=t=>Ve().budgetCreditThresholds[t.mode]?.[t.runner]??uFt,tR=({mode:t,sessionCreditLimit:e},r)=>t==="create"&&e!=null&&e<=r;var _J=t=>{let e=eR(t);if(!tR(t,e))return"default";let r=Ve();return r.createAskFirstEnabled&&r.questionsEnabled?"ask_first":r.creditWrapUpEnabled?"budget_constrained":"default"},c1e=t=>{let e=_J(t),r=eR(t);return{budget_eligible:tR(t,r),budget_constrained:e==="budget_constrained",ask_first:e==="ask_first"}};var hFt=rR.dirname(dFt(import.meta.url)),l1e=fFt(import.meta.url),mFt=rR.resolve(hFt,"scripts/scaffold.js"),gFt="scripts/scaffold.js",_Ft=/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+/g,yJ=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},yFt=t=>/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(t),SFt=t=>{let e=yJ(t);return e==="node"||e.endsWith("/node")},al=t=>{if(typeof t!="string")return!1;let e=t.match(_Ft)||[];if(e.length<2)return!1;let r=0;for(;r<e.length&&yFt(yJ(e[r]));)r+=1;if(r>=e.length||!SFt(e[r]))return!1;let n=e[r+1];return n?yJ(n).includes(gFt):!1},Lp=fe("create_stage"),SJ="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.",EFt=`${SJ}
598
598
 
599
599
  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.`,vFt=`${SJ}
600
600
 
@@ -792,7 +792,7 @@ ${o}
792
792
  </extracted_error_chunk>`).join(`
793
793
 
794
794
  `);return s.length>t.length*.8?t:s}import{promises as FUe}from"fs";import ch from"path";var Hzt=/@anthropic-ai\/sdk|['"`]openai['"`]|@google\/genai|new\s+Anthropic\b|new\s+OpenAI\b|GoogleGenAI|ANTHROPIC_API_KEY|OPENAI_API_KEY|GEMINI_API_KEY/,Gzt=/satisfies\s+NetlifyFunction\b|export\s+default\s*\{/,Wzt=/export\s+default\b/,Yzt=/\bexports\.handler\b|\bmodule\.exports\.handler\b|\bmodule\.exports\s*=|export\s+(async\s+)?(const\s+handler\b|function\s+handler\b)/,Kzt=new Set([".js",".ts",".mjs",".mts",".cjs",".cts"]);function Zzt(t){return Gzt.test(t)?"v3":Wzt.test(t)?"v2":Yzt.test(t)?"v1":"unknown"}async function eM(t,e=process.env.FUNCTIONS_DIST||"netlify/functions"){let r={aiTotal:0,v1:0,v2:0,v3:0,unknown:0,v1Files:[]},n=ch.isAbsolute(e)?e:ch.join(t,e),i;try{i=await FUe.readdir(n,{withFileTypes:!0})}catch{return r}for(let s of i){if(!s.isFile()||!Kzt.has(ch.extname(s.name))||s.name.endsWith(".d.ts"))continue;let o;try{o=await FUe.readFile(ch.join(n,s.name),"utf8")}catch{continue}if(!Hzt.test(o))continue;r.aiTotal++;let a=Zzt(o);r[a]++,a==="v1"&&r.v1Files.push(ch.relative(t,ch.join(n,s.name)).split(ch.sep).join("/"))}return r}var jUe=(t,e)=>{let r=t.usage,n=r?.output_tokens??0,i=r?.reasoning_output_tokens??0,s=t.costUsd!=null&&t.costUsd>0?t.costUsd:void 0,o=s==null&&e!=null?e/180:void 0,a=s??o;return{...t.resolvedModel?{"netlify.ai.run.model":t.resolvedModel}:{},"netlify.ai.run.effort":t.effort??"auto",...t.resolvedProviderEffort&&t.resolvedProviderEffort!==t.effort?{"netlify.ai.run.effort.sent":t.resolvedProviderEffort}:{},"netlify.ai.run.outcome":t.error?"error":"completed","netlify.ai.run.step_count":t.steps?.length??0,...t.toolCallCount!=null?{"netlify.ai.run.tool_call_count":t.toolCallCount}:{},...t.toolErrorCount!=null?{"netlify.ai.run.tool_error_count":t.toolErrorCount}:{},...r?.input_tokens!=null?{"netlify.ai.run.tokens.input.total":r.input_tokens}:{},...r?.output_tokens!=null?{"netlify.ai.run.tokens.output.total":r.output_tokens}:{},...r?.reasoning_output_tokens!=null?{"netlify.ai.run.tokens.reasoning.total":r.reasoning_output_tokens}:{},...a!=null?{"netlify.ai.run.cost_usd.total":a,"netlify.ai.run.cost.source":s!=null?"provider":"credits-derived"}:{},...e!=null?{"netlify.ai.run.credits_cost":e}:{},...n>0?{"netlify.ai.run.reasoning_ratio":i/n}:{}}};import{createReadStream as sqt}from"fs";import{request as oqt}from"http";import{request as aqt}from"https";import{pipeline as cqt}from"stream/promises";import sS from"process";import{spawn as uBr}from"child_process";import{existsSync as fBr,mkdirSync as Jzt,writeFileSync as Xzt}from"fs";import{connect as hBr}from"net";import zUe from"path";import Qzt from"process";var eqt=fe("step-preview"),yBr=zUe.join("apps","netlify-react-ui","public","agent-run-preview.json"),tqt=9001,rqt="components-agentrunners-rendersteps--live",SBr=`http://localhost:${tqt}/?path=/story/${rqt}`;var nqt=["id","title","message","category","type","tasks","groupId","parentGroupId","refId"],tM=[],iqt=t=>{let e={};for(let r of nqt){let n=t[r];n!==void 0&&(e[r]=n)}return e},qUe=t=>{let e=Qzt.env.NETLIFY_STEP_PREVIEW_FILE;if(!(!e||!t?.length)){for(let r of t){let n=iqt(r),i=n.id!=null?tM.findIndex(s=>s.id===n.id):-1;i>=0?tM[i]=n:tM.push(n)}try{Jzt(zUe.dirname(e),{recursive:!0}),Xzt(e,JSON.stringify(tM,null,2)+`
795
- `)}catch(r){eqt.info("Could not write step preview file",{error:r?.message})}}};var kR=t=>4*Math.ceil(t/3);var rM=sS.env.NETLIFY_API_URL,nM=sS.env.NETLIFY_API_TOKEN,dr=fe("api"),Ga=()=>sS.env.NETLIFY_LOCAL_MODE==="true",lqt=new Set(["agent_runners","sessions","sites","accounts","branch"]),uqt=new Set(["api","v1","agent_runners","sessions","sites","accounts","classify","diff","result","upload_urls","native_session","upload","update_usage","connections","tokens","ai-gateway","token","database","branch"]),dqt=t=>t.split("/").map((e,r,n)=>e===""?e:lqt.has(n[r-1])?":id":uqt.has(e)?e:":id").join("/"),Dn=async(t,e={})=>{if(!rM||!nM)throw new Error("No API URL or token");let r=new URL(t,rM),n={...e,headers:{...e.headers,Authorization:`Bearer ${nM}`}};sS.env.AGENT_RUNNERS_DEBUG==="true"&&(n.headers["x-nf-debug-logging"]="true"),e.json&&(n.headers||={},n.headers["Content-Type"]="application/json",n.body=JSON.stringify(e.json));let i=e.method??"GET",s=dqt(r.pathname),o=Date.now(),a;try{a=await fetch(r,n)}catch(d){throw dr.error(Il({event:"api.request",method:i,path:r.pathname,resource:s,outcome:"network_error",error:d.message,duration_ms:Date.now()-o})),Q.inc("api.request_failed",1,{status:"network_error",method:i,resource:s}),d}let c=a.ok&&a.status<=299;sS.env.AGENT_RUNNERS_DEBUG==="true"&&(dr.log(`Response headers for ${r}:`),a.headers.forEach((d,f)=>{dr.log(` ${f}: ${d}`)}));let l=Il({event:"api.request",method:i,path:r.pathname,resource:s,status:a.status,request_id:a.headers.get("x-request-id")||a.headers.get("x-nf-request-id"),duration_ms:Date.now()-o});if(c?dr.log(l):(dr.error(l),Q.inc("api.request_failed",1,{status:a.status,method:i,resource:s})),e.raw){if(!c)throw new Error(`API request failed: ${a.status} ${a.statusText}`);return a}let u=await(a.headers.get("content-type")?.includes("application/json")?a.json():a.text());if(!c){let d=typeof u=="string"?u:JSON.stringify(u);throw a.status===404?new Rh(`API request failed: 404 - ${d}`,404,"The site associated with this agent run no longer exists."):a.status===503&&e.gracefulOn503&&d.toLowerCase().includes("usage exceeded")?new ps(`API request failed: 503 - ${d}`,503,"Credit limit reached. Please add more credits to continue using Agent Runners."):new Error(`API request failed: ${a.status} - ${d}`)}return u},BUe=t=>{dr.log("Setting details for api",{apiUrl:t?.constants?.NETLIFY_API_HOST,token:!!t?.constants?.NETLIFY_API_TOKEN}),t?.constants?.NETLIFY_API_HOST&&(rM=`https://${t.constants.NETLIFY_API_HOST}`),t?.constants?.NETLIFY_API_TOKEN&&(nM=t.constants.NETLIFY_API_TOKEN)},VUe=()=>({apiUrl:rM,token:nM}),iM=async(t,e)=>Ga()?(dr.log("Mock API: updateRunner called",{runnerId:t,data:e}),{id:t,...e}):Dn(`/api/v1/agent_runners/${t}`,{method:"PUT",json:e}),un=async(t,e,r)=>{if(Ga()){if(qUe(r?.steps),sS.env.NETLIFY_LOCAL_QUIET==="true")for(let n of r?.steps??[]){let i=n.message??n.title;i&&console.log(i)}else dr.log("Mock API: updateRunnerSession called",JSON.stringify({runnerId:t,sessionId:e,data:r},null,2));return{id:t,sessionId:e,...r}}return Dn(`/api/v1/agent_runners/${t}/sessions/${e}`,{method:"PUT",json:r})},fqt=3,pqt=new Set(["normal","create"]),HUe=async(t,e,r,n)=>{if(!pqt.has(t.mode)||!t.prompt)return;if(Ga()){dr.log("Mock API: classifyRun called",JSON.stringify({runnerId:t.id,sessionId:t.sessionId},null,2));return}let i=(t.sessionHistoryContext??[]).slice(-fqt);try{await Dn(`/api/v1/agent_runners/${t.id}/sessions/${t.sessionId}/classify`,{method:"POST",json:{prompt:t.prompt,result:e,prior_turns:i,...r?{final_agent_config:r}:{},...n?{credit_wrap_up:!0}:{}}})}catch(s){dr.warn("Interaction classification trigger failed (continuing without it):",s)}};var GUe=async t=>Ga()?(dr.log("Mock API: getSite called",{siteId:t}),{id:t,has_database:!1,published_deploy:{id:"id"}}):Dn(`/api/v1/sites/${t}`),oS=async(t,e)=>Ga()?(dr.log("Mock API: getRunnerSession called",{runnerId:t,sessionId:e}),{id:e,runnerId:t,state:"running"}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}`),WUe=async(t,e)=>(await Dn(`/api/v1/agent_runners/${t}/sessions/${e}/diff/result`,{raw:!0})).text(),YUe=(t,e,r)=>Dn(`/api/v1/accounts/${t}/ai-gateway/token`,{headers:{"X-Nf-Agent-Runner-Id":e,"X-Nf-Agent-Runner-Session-Id":r},gracefulOn503:!0}),KUe=(t,e,r)=>Dn(`/api/v1/sites/${t}/ai-gateway/token`,{headers:{"X-Nf-Agent-Runner-Id":e,"X-Nf-Agent-Runner-Session-Id":r},gracefulOn503:!0});var ZUe=async(t,e)=>Ga()?(dr.log("Mock API: getAgentConnectionTokens called",{runnerId:t,sessionId:e}),{connections:[]}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}/connections/tokens`,{method:"POST"}),JUe=async(t,e)=>Ga()?(dr.log("Mock API: getDiffUploadUrls called",{runnerId:t,sessionId:e}),{result:{upload_url:"https://s3.mock.com/mock-upload-url-result",s3_key:"mock-s3-key-result"},cumulative:{upload_url:"https://s3.mock.com/mock-upload-url-cumulative",s3_key:"mock-s3-key-cumulative"}}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}/diff/upload_urls`,{method:"POST"}),XUe=async(t,e)=>Ga()?(dr.log("Mock API: getNativeSessionUploadUrl called",{runnerId:t,sessionId:e}),{upload_url:"https://s3.mock.com/mock-upload-url-native-session",s3_key:"mock-s3-key-native-session"}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}/native_session/upload`,{method:"POST"}),QUe=async(t,e)=>{if(Ga())return dr.log("Mock API: getNativeSessionDownloadUrl called",{runnerId:t,sessionId:e}),{download_url:"https://s3.mock.com/mock-download-url-native-session"};try{return await Dn(`/api/v1/agent_runners/${t}/sessions/${e}/native_session`)}catch(r){if(r instanceof Rh)return dr.log("No native session available to download (404), falling back"),null;throw r}},sM=async(t,e)=>Ga()?(dr.log("Mock API: updateSessionUsage called",{runnerId:t,sessionId:e}),{id:e,runnerId:t,usage:0}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}/update_usage`,{method:"POST"}),eFe="netlifydb_readonly",tFe=async t=>(await Dn(`/api/v1/sites/${t}/database?role=${eFe}`,{raw:!0})).json(),rFe=async(t,e)=>(await Dn(`/api/v1/sites/${t}/database/branch/${encodeURIComponent(e)}?role=${eFe}`,{raw:!0})).json(),nFe=async t=>Dn(`/api/v1/sites/${t}/database`,{method:"POST",json:{}}),iFe=async(t,e)=>Dn(`/api/v1/sites/${t}/database/branch`,{method:"POST",json:{branch_id:e}}),hqt=1e4,sFe=async t=>{dr.log(`Downloading from S3: ${new URL(t).host}`);let e=await fetch(t,{method:"GET",signal:AbortSignal.timeout(hqt)});if(!e.ok)throw new Error(`S3 download failed with status ${e.status}`);return Buffer.from(await e.arrayBuffer())},oFe=async(t,e,{maxRetries:r=3,baseDelayMs:n=500,contentType:i="text/plain"}={})=>{dr.log(`Uploading to S3: ${new URL(t).host}`);for(let s=1;s<=r;s++)try{let o=await fetch(t,{method:"PUT",body:e,headers:{"Content-Type":i}});if(!o.ok)throw new Error(`S3 upload failed with status ${o.status}`);return o}catch(o){if(s===r)throw o;let a=n*2**(s-1);dr.warn(`S3 upload attempt ${s}/${r} failed: ${o.message}. Retrying in ${a}ms...`),await new Promise(c=>setTimeout(c,a))}},mqt=6e4,gqt=(t,e,{contentLength:r,contentType:n,base64:i,timeoutMs:s})=>new Promise((o,a)=>{let c=new URL(t),u=(c.protocol==="http:"?oqt:aqt)(c,{method:"PUT",headers:{"Content-Type":n,"Content-Length":r}});u.setTimeout(s,()=>{u.destroy(new Error(`S3 upload timed out after ${s}ms with no socket activity`))}),u.on("error",a),u.on("response",f=>{f.resume(),f.statusCode>=200&&f.statusCode<=299?o(f.statusCode):a(new Error(`S3 upload failed with status ${f.statusCode}`))});let d=sqt(e,i?{encoding:"base64"}:void 0);cqt(d,u).catch(a)}),T7=async(t,e,{size:r,base64:n=!1,maxRetries:i=3,baseDelayMs:s=500,contentType:o="text/plain",timeoutMs:a=mqt})=>{dr.log(`Uploading file to S3: ${new URL(t).host}`);let c=n?kR(r):r;for(let l=1;l<=i;l++)try{return await gqt(t,e,{contentLength:c,contentType:o,base64:n,timeoutMs:a})}catch(u){if(l===i)throw u;let d=s*2**(l-1);dr.warn(`S3 upload attempt ${l}/${i} failed: ${u.message}. Retrying in ${d}ms...`),await new Promise(f=>setTimeout(f,d))}};var _qt=fe("storage_outcome"),aFe=async({config:t,hasDb:e,pipelineSpan:r,resolvedModel:n,cliVersion:i})=>{let s=r?.spanContext();await un(t.id,t.sessionId,{metadata:{storage_outcome:{...typeof e=="boolean"?{has_db:e}:{},...s?{trace_id:s.traceId,span_id:s.spanId}:{},provider:t.runner,model:n??t.model??"unknown",cli_version:i}}}).catch(o=>_qt.warn("Failed to persist storage_outcome",{error:o?.message}))};import A3t from"fs/promises";import x3t from"path";import CS from"process";var lh=fe("ai_gateway"),b7=null;var $R=async()=>{if(b7)return b7;lh.log("Fetching available AI gateway providers");let t=await fetch(`${VUe().apiUrl}/api/v1/ai-gateway/providers`);if(!t.ok)throw new Error(`Failed to fetch AI gateway providers: ${t.statusText}`);let e=await t.json();return b7=e,lh.log("Cached AI gateway providers",{providerCount:Object.keys(e.providers).length}),e},yqt=async(t,e)=>{let n=(await $R()).providers[t];if(!n)return lh.log(`Provider '${t}' not found`),!1;let i=n.models.includes(e);return lh.log(`Model validation for ${t}/${e}`,{isAvailable:i}),i},Sqt=async t=>{let e=await $R(),r=Object.values(e.providers).some(n=>n.models.includes(t));return lh.log(`Model validation across all providers for ${t}`,{isAvailable:r}),r},cFe=async({config:t})=>{let e,r,n,i,s=!t.site?.published_deploy;if(!(s?t.accountId:t.siteId))throw new Error(`No entity id for ${s?"account":"site"}`);let a=async()=>{clearTimeout(n),lh.log("Requesting AI gateway information");let l=await(s?YUe(t.accountId,t.id,t.sessionId):KUe(t.siteId,t.id,t.sessionId));if({token:e,url:i}=l,r=l.expires_at?l.expires_at*1e3:void 0,process.env.NETLIFY_AI_GATEWAY_KEY=e,process.env.NETLIFY_AI_GATEWAY_BASE_URL=i,lh.log("Got AI gateway information",{token:!!e,expiresAt:r,url:i}),r){let u=r-Date.now()-6e4;u>0&&(n=setTimeout(()=>{a()},u))}};return await Promise.all([a(),$R()]),{get url(){return i},get token(){return e},isModelAvailableForProvider:yqt,isModelAvailable:Sqt}};import Eqt from"crypto";import{createWriteStream as vqt}from"fs";import DR from"fs/promises";import MR from"path";import Tqt from"process";import{Readable as bqt,Transform as wqt}from"stream";import{pipeline as Rqt}from"stream/promises";async function aS(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(l=>setTimeout(l,n*a))}throw o}var LR=fe("asset_fetch"),oM=100*1024*1024,Aqt=6e4,lFe=6,xqt=3,Cqt=300,Iqt=t=>{if(!Cl(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}},Oqt=t=>Eqt.createHash("sha1").update(t).digest("hex").slice(0,8),Pqt=t=>typeof t=="string"&&t.length>0&&t!=="."&&t!==".."&&t===MR.basename(t),Nqt=async t=>{try{return await DR.stat(t),!0}catch{return!1}},kqt=t=>decodeURIComponent(new URL(t).pathname),w7=t=>MR.basename(t)||"attachment",$qt=(t,e)=>{let r=MR.extname(t);return`${t.slice(0,t.length-r.length)}-${Oqt(e)}${r}`},Lqt=t=>{let e=new Map;for(let r of t)e.set(w7(r),(e.get(w7(r))??0)+1);return t.map(r=>{let n=w7(r);return(e.get(n)??0)>1?$qt(n,r):n})},uFe=t=>{let e=t?.name;return e==="TimeoutError"||e==="AbortError"?"timeout":"network"},Dqt=async(t,e)=>{let r;try{r=await fetch(t,{signal:AbortSignal.timeout(Aqt)})}catch(a){throw new qo(`Asset fetch failed: ${a?.message||a}`,uFe(a))}if(!r.ok)throw await r.body?.cancel(),new qo(`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)>oM)throw new qo(`Asset too large: ${n} bytes (max ${oM})`,"too_large");if(!r.body)throw new qo("Asset download failed: missing response body","network");let i=`${e}.part`,s=0,o=new wqt({transform(a,c,l){if(s+=a.length,s>oM){l(new qo(`Asset too large: exceeded ${oM} bytes`,"too_large"));return}l(null,a)}});try{await Rqt(bqt.fromWeb(r.body),o,vqt(i))}catch(a){throw await DR.rm(i,{force:!0}),Cl(a)?a:new qo(`Asset body read failed: ${a?.message||a}`,uFe(a))}try{await DR.rename(i,e)}catch(a){throw await DR.rm(i,{force:!0}),a}},Mqt=async(t,e,r)=>{if(!Pqt(t))return LR.warn(`Skipping attachments for unsafe session id: ${t}`),[];if(!Array.isArray(e)||e.length===0)return[];let n=MR.join(r,mn,Ws,t);await DR.mkdir(n,{recursive:!0});let i=e.filter(o=>typeof o=="string"&&o.length>0),s=Lqt(i.map(kqt));return i.map((o,a)=>({sessionId:t,url:o,dest:MR.join(n,s[a])}))},dFe=async({assetMap:t,cwd:e=Tqt.cwd()})=>{let r=Object.entries(t??{});if(r.length===0)return;let n=(await Promise.all(r.map(([a,c])=>Mqt(a,c,e)))).flat();if(n.length===0)return;let i={};for(let a of n)i[a.sessionId]=(i[a.sessionId]??0)+1;LR.info(`Reconciling ${n.length} attachment(s) across ${Object.keys(i).length} session(s)`);let s={},o=async a=>{if(await Nqt(a.dest))return;let c=performance.now(),l=new URL(a.url).pathname;try{await aS(()=>Dqt(a.url,a.dest),{maxRetries:xqt,baseDelay:Cqt,shouldRetry:Iqt,onRetry:(u,d)=>{let f=Cl(d)?d.kind:"unknown";Q.inc("assets.fetch_retry",1,{kind:f}),LR.info(`Retrying asset download session=${a.sessionId} key=${l} kind=${f} attempt=${u}`)}})}catch(u){let d=Cl(u)?u.kind:"unknown",f=Cl(u)?u.status:void 0;throw LR.error(`Asset download failed session=${a.sessionId} key=${new URL(a.url).pathname} kind=${d} status=${f??"-"} elapsedMs=${Math.round(performance.now()-c)} message=${u?.message||u}`),u}s[a.sessionId]=(s[a.sessionId]??0)+1};for(let a=0;a<n.length;a+=lFe){let c=n.slice(a,a+lFe);await Promise.all(c.map(o))}for(let[a,c]of Object.entries(i)){let l=s[a]??0;LR.info(`Session ${a}: fetched ${l} attachment(s), ${c-l} already present`)}};import{createHash as Uqt}from"crypto";import{createReadStream as Fqt}from"fs";import aM from"fs/promises";import mFe from"os";import cM from"path";var fFe=fe("repo"),gFe="runner-diffs-",lM=t=>`${gFe}${t}-`,_Fe=async t=>{let e=mFe.tmpdir(),r;try{r=await aM.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(gFe)&&!n.startsWith(lM(t))).map(n=>aM.rm(cM.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},kr=(t,e={})=>ir("git",t,{...e,env:{...e.env,NETLIFY_INTERNAL_GIT:"1"}}),uM=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{fFe.info("Getting runner diffs");let n=await C7(r),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!e){let l=O7(s);await Hqt(l,r)}fFe.info("Changes after processing"),await x7(r);let o=await UR(s,r);if(await A7(o,r),i=await qqt(r),!i)return{hasChanges:!1,ignored:o};await kr(["commit","-m","Agent runner [skip ci]"],{cwd:r});let a=await aM.mkdtemp(cM.join(mFe.tmpdir(),lM(t.sessionId))),c=await R7({config:t,diffDir:a,cwd:r,target:{commit:"HEAD"},ignored:o});return await jqt(r),c.hasChanges&&Q.distribution("diff.size",(c.diffBinary??c.diff).size,{phase:"final"}),c},R7=async({config:t,diffDir:e,cwd:r,target:n,ignored:i})=>{let s="commit"in n?n.commit:"--cached",o="indexPath"in n?{GIT_INDEX_FILE:n.indexPath}:void 0,a=async({from:p,fileName:h,binary:m})=>{let _=cM.join(e,h);await kr([...m?["diff",p,s,"--binary"]:["diff",p,s],`--output=${_}`],{stdio:["ignore","ignore","pipe"],cwd:r,env:o});let{size:v}=await aM.stat(_);return{path:_,size:v}},c=await a({from:t.runSha,fileName:"session.patch"});if(c.size===0)return{hasChanges:!1,ignored:i};let l=await a({from:t.runSha,fileName:"session-binary.patch",binary:!0}),u,d;if(t.sha){u=await a({from:t.sha,fileName:"cumulative.patch"});let p=await a({from:t.sha,fileName:"cumulative-binary.patch",binary:!0});await hFe(u,p)||(d=p)}let f={hasChanges:!0,diff:c,resultDiff:u,ignored:i};return await hFe(c,l)||(f.diffBinary=l),d&&(f.resultDiffBinary=d),f},pFe=async t=>{let e=Uqt("sha256");for await(let r of Fqt(t))e.update(r);return e.digest("hex")},hFe=async(t,e)=>t.size===e.size&&await pFe(t.path)===await pFe(e.path),jqt=async(t=process.cwd())=>{process.env.NETLIFY_LOCAL_MODE&&await kr(["reset","--soft","HEAD~1"],{cwd:t})},A7=async(t=[],e=process.cwd())=>{await kr(["add",".",...t],{cwd:e})},x7=async(t=process.cwd())=>{let e=await kr(["status","-s"],{cwd:t});return String(e.stdout??"")},yFe=/.. (.+)?\.log$/,zqt=[yFe],C7=async(t=process.cwd())=>{let e=await x7(t);return{hasChanges:(e.trim().length===0?[]:e.split(`
795
+ `)}catch(r){eqt.info("Could not write step preview file",{error:r?.message})}}};var kR=t=>4*Math.ceil(t/3);var rM=sS.env.NETLIFY_API_URL,nM=sS.env.NETLIFY_API_TOKEN,dr=fe("api"),Ga=()=>sS.env.NETLIFY_LOCAL_MODE==="true",lqt=new Set(["agent_runners","sessions","sites","accounts","branch"]),uqt=new Set(["api","v1","agent_runners","sessions","sites","accounts","classify","diff","result","upload_urls","native_session","upload","update_usage","connections","tokens","ai-gateway","token","database","branch"]),dqt=t=>t.split("/").map((e,r,n)=>e===""?e:lqt.has(n[r-1])?":id":uqt.has(e)?e:":id").join("/"),Dn=async(t,e={})=>{if(!rM||!nM)throw new Error("No API URL or token");let r=new URL(t,rM),n={...e,headers:{...e.headers,Authorization:`Bearer ${nM}`}};sS.env.AGENT_RUNNERS_DEBUG==="true"&&(n.headers["x-nf-debug-logging"]="true"),e.json&&(n.headers||={},n.headers["Content-Type"]="application/json",n.body=JSON.stringify(e.json));let i=e.method??"GET",s=dqt(r.pathname),o=Date.now(),a;try{a=await fetch(r,n)}catch(d){throw dr.error(Il({event:"api.request",method:i,path:r.pathname,resource:s,outcome:"network_error",error:d.message,duration_ms:Date.now()-o})),Q.inc("api.request",1,{method:i,resource:s}),Q.inc("api.request_failed",1,{status:"network_error",method:i,resource:s}),d}let c=a.ok&&a.status<=299;sS.env.AGENT_RUNNERS_DEBUG==="true"&&(dr.log(`Response headers for ${r}:`),a.headers.forEach((d,f)=>{dr.log(` ${f}: ${d}`)}));let l=Il({event:"api.request",method:i,path:r.pathname,resource:s,status:a.status,request_id:a.headers.get("x-request-id")||a.headers.get("x-nf-request-id"),duration_ms:Date.now()-o});if(Q.inc("api.request",1,{method:i,resource:s}),c?dr.log(l):(dr.error(l),Q.inc("api.request_failed",1,{status:a.status,method:i,resource:s})),e.raw){if(!c)throw new Error(`API request failed: ${a.status} ${a.statusText}`);return a}let u=await(a.headers.get("content-type")?.includes("application/json")?a.json():a.text());if(!c){let d=typeof u=="string"?u:JSON.stringify(u);throw a.status===404?new Rh(`API request failed: 404 - ${d}`,404,"The site associated with this agent run no longer exists."):a.status===503&&e.gracefulOn503&&d.toLowerCase().includes("usage exceeded")?new ps(`API request failed: 503 - ${d}`,503,"Credit limit reached. Please add more credits to continue using Agent Runners."):new Error(`API request failed: ${a.status} - ${d}`)}return u},BUe=t=>{dr.log("Setting details for api",{apiUrl:t?.constants?.NETLIFY_API_HOST,token:!!t?.constants?.NETLIFY_API_TOKEN}),t?.constants?.NETLIFY_API_HOST&&(rM=`https://${t.constants.NETLIFY_API_HOST}`),t?.constants?.NETLIFY_API_TOKEN&&(nM=t.constants.NETLIFY_API_TOKEN)},VUe=()=>({apiUrl:rM,token:nM}),iM=async(t,e)=>Ga()?(dr.log("Mock API: updateRunner called",{runnerId:t,data:e}),{id:t,...e}):Dn(`/api/v1/agent_runners/${t}`,{method:"PUT",json:e}),un=async(t,e,r)=>{if(Ga()){if(qUe(r?.steps),sS.env.NETLIFY_LOCAL_QUIET==="true")for(let n of r?.steps??[]){let i=n.message??n.title;i&&console.log(i)}else dr.log("Mock API: updateRunnerSession called",JSON.stringify({runnerId:t,sessionId:e,data:r},null,2));return{id:t,sessionId:e,...r}}return Dn(`/api/v1/agent_runners/${t}/sessions/${e}`,{method:"PUT",json:r})},fqt=3,pqt=new Set(["normal","create"]),HUe=async(t,e,r,n)=>{if(!pqt.has(t.mode)||!t.prompt)return;if(Ga()){dr.log("Mock API: classifyRun called",JSON.stringify({runnerId:t.id,sessionId:t.sessionId},null,2));return}let i=(t.sessionHistoryContext??[]).slice(-fqt);try{await Dn(`/api/v1/agent_runners/${t.id}/sessions/${t.sessionId}/classify`,{method:"POST",json:{prompt:t.prompt,result:e,prior_turns:i,...r?{final_agent_config:r}:{},...n?{credit_wrap_up:!0}:{}}})}catch(s){dr.warn("Interaction classification trigger failed (continuing without it):",s)}};var GUe=async t=>Ga()?(dr.log("Mock API: getSite called",{siteId:t}),{id:t,has_database:!1,published_deploy:{id:"id"}}):Dn(`/api/v1/sites/${t}`),oS=async(t,e)=>Ga()?(dr.log("Mock API: getRunnerSession called",{runnerId:t,sessionId:e}),{id:e,runnerId:t,state:"running"}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}`),WUe=async(t,e)=>(await Dn(`/api/v1/agent_runners/${t}/sessions/${e}/diff/result`,{raw:!0})).text(),YUe=(t,e,r)=>Dn(`/api/v1/accounts/${t}/ai-gateway/token`,{headers:{"X-Nf-Agent-Runner-Id":e,"X-Nf-Agent-Runner-Session-Id":r},gracefulOn503:!0}),KUe=(t,e,r)=>Dn(`/api/v1/sites/${t}/ai-gateway/token`,{headers:{"X-Nf-Agent-Runner-Id":e,"X-Nf-Agent-Runner-Session-Id":r},gracefulOn503:!0});var ZUe=async(t,e)=>Ga()?(dr.log("Mock API: getAgentConnectionTokens called",{runnerId:t,sessionId:e}),{connections:[]}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}/connections/tokens`,{method:"POST"}),JUe=async(t,e)=>Ga()?(dr.log("Mock API: getDiffUploadUrls called",{runnerId:t,sessionId:e}),{result:{upload_url:"https://s3.mock.com/mock-upload-url-result",s3_key:"mock-s3-key-result"},cumulative:{upload_url:"https://s3.mock.com/mock-upload-url-cumulative",s3_key:"mock-s3-key-cumulative"}}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}/diff/upload_urls`,{method:"POST"}),XUe=async(t,e)=>Ga()?(dr.log("Mock API: getNativeSessionUploadUrl called",{runnerId:t,sessionId:e}),{upload_url:"https://s3.mock.com/mock-upload-url-native-session",s3_key:"mock-s3-key-native-session"}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}/native_session/upload`,{method:"POST"}),QUe=async(t,e)=>{if(Ga())return dr.log("Mock API: getNativeSessionDownloadUrl called",{runnerId:t,sessionId:e}),{download_url:"https://s3.mock.com/mock-download-url-native-session"};try{return await Dn(`/api/v1/agent_runners/${t}/sessions/${e}/native_session`)}catch(r){if(r instanceof Rh)return dr.log("No native session available to download (404), falling back"),null;throw r}},sM=async(t,e)=>Ga()?(dr.log("Mock API: updateSessionUsage called",{runnerId:t,sessionId:e}),{id:e,runnerId:t,usage:0}):Dn(`/api/v1/agent_runners/${t}/sessions/${e}/update_usage`,{method:"POST"}),eFe="netlifydb_readonly",tFe=async t=>(await Dn(`/api/v1/sites/${t}/database?role=${eFe}`,{raw:!0})).json(),rFe=async(t,e)=>(await Dn(`/api/v1/sites/${t}/database/branch/${encodeURIComponent(e)}?role=${eFe}`,{raw:!0})).json(),nFe=async t=>Dn(`/api/v1/sites/${t}/database`,{method:"POST",json:{}}),iFe=async(t,e)=>Dn(`/api/v1/sites/${t}/database/branch`,{method:"POST",json:{branch_id:e}}),hqt=1e4,sFe=async t=>{dr.log(`Downloading from S3: ${new URL(t).host}`);let e=await fetch(t,{method:"GET",signal:AbortSignal.timeout(hqt)});if(!e.ok)throw new Error(`S3 download failed with status ${e.status}`);return Buffer.from(await e.arrayBuffer())},oFe=async(t,e,{maxRetries:r=3,baseDelayMs:n=500,contentType:i="text/plain"}={})=>{dr.log(`Uploading to S3: ${new URL(t).host}`);for(let s=1;s<=r;s++)try{let o=await fetch(t,{method:"PUT",body:e,headers:{"Content-Type":i}});if(!o.ok)throw new Error(`S3 upload failed with status ${o.status}`);return o}catch(o){if(s===r)throw o;let a=n*2**(s-1);dr.warn(`S3 upload attempt ${s}/${r} failed: ${o.message}. Retrying in ${a}ms...`),await new Promise(c=>setTimeout(c,a))}},mqt=6e4,gqt=(t,e,{contentLength:r,contentType:n,base64:i,timeoutMs:s})=>new Promise((o,a)=>{let c=new URL(t),u=(c.protocol==="http:"?oqt:aqt)(c,{method:"PUT",headers:{"Content-Type":n,"Content-Length":r}});u.setTimeout(s,()=>{u.destroy(new Error(`S3 upload timed out after ${s}ms with no socket activity`))}),u.on("error",a),u.on("response",f=>{f.resume(),f.statusCode>=200&&f.statusCode<=299?o(f.statusCode):a(new Error(`S3 upload failed with status ${f.statusCode}`))});let d=sqt(e,i?{encoding:"base64"}:void 0);cqt(d,u).catch(a)}),T7=async(t,e,{size:r,base64:n=!1,maxRetries:i=3,baseDelayMs:s=500,contentType:o="text/plain",timeoutMs:a=mqt})=>{dr.log(`Uploading file to S3: ${new URL(t).host}`);let c=n?kR(r):r;for(let l=1;l<=i;l++)try{return await gqt(t,e,{contentLength:c,contentType:o,base64:n,timeoutMs:a})}catch(u){if(l===i)throw u;let d=s*2**(l-1);dr.warn(`S3 upload attempt ${l}/${i} failed: ${u.message}. Retrying in ${d}ms...`),await new Promise(f=>setTimeout(f,d))}};var _qt=fe("storage_outcome"),aFe=async({config:t,hasDb:e,pipelineSpan:r,resolvedModel:n,cliVersion:i})=>{let s=r?.spanContext();await un(t.id,t.sessionId,{metadata:{storage_outcome:{...typeof e=="boolean"?{has_db:e}:{},...s?{trace_id:s.traceId,span_id:s.spanId}:{},provider:t.runner,model:n??t.model??"unknown",cli_version:i}}}).catch(o=>_qt.warn("Failed to persist storage_outcome",{error:o?.message}))};import A3t from"fs/promises";import x3t from"path";import CS from"process";var lh=fe("ai_gateway"),b7=null;var $R=async()=>{if(b7)return b7;lh.log("Fetching available AI gateway providers");let t=await fetch(`${VUe().apiUrl}/api/v1/ai-gateway/providers`);if(!t.ok)throw new Error(`Failed to fetch AI gateway providers: ${t.statusText}`);let e=await t.json();return b7=e,lh.log("Cached AI gateway providers",{providerCount:Object.keys(e.providers).length}),e},yqt=async(t,e)=>{let n=(await $R()).providers[t];if(!n)return lh.log(`Provider '${t}' not found`),!1;let i=n.models.includes(e);return lh.log(`Model validation for ${t}/${e}`,{isAvailable:i}),i},Sqt=async t=>{let e=await $R(),r=Object.values(e.providers).some(n=>n.models.includes(t));return lh.log(`Model validation across all providers for ${t}`,{isAvailable:r}),r},cFe=async({config:t})=>{let e,r,n,i,s=!t.site?.published_deploy;if(!(s?t.accountId:t.siteId))throw new Error(`No entity id for ${s?"account":"site"}`);let a=async()=>{clearTimeout(n),lh.log("Requesting AI gateway information");let l=await(s?YUe(t.accountId,t.id,t.sessionId):KUe(t.siteId,t.id,t.sessionId));if({token:e,url:i}=l,r=l.expires_at?l.expires_at*1e3:void 0,process.env.NETLIFY_AI_GATEWAY_KEY=e,process.env.NETLIFY_AI_GATEWAY_BASE_URL=i,lh.log("Got AI gateway information",{token:!!e,expiresAt:r,url:i}),r){let u=r-Date.now()-6e4;u>0&&(n=setTimeout(()=>{a()},u))}};return await Promise.all([a(),$R()]),{get url(){return i},get token(){return e},isModelAvailableForProvider:yqt,isModelAvailable:Sqt}};import Eqt from"crypto";import{createWriteStream as vqt}from"fs";import DR from"fs/promises";import MR from"path";import Tqt from"process";import{Readable as bqt,Transform as wqt}from"stream";import{pipeline as Rqt}from"stream/promises";async function aS(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(l=>setTimeout(l,n*a))}throw o}var LR=fe("asset_fetch"),oM=100*1024*1024,Aqt=6e4,lFe=6,xqt=3,Cqt=300,Iqt=t=>{if(!Cl(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}},Oqt=t=>Eqt.createHash("sha1").update(t).digest("hex").slice(0,8),Pqt=t=>typeof t=="string"&&t.length>0&&t!=="."&&t!==".."&&t===MR.basename(t),Nqt=async t=>{try{return await DR.stat(t),!0}catch{return!1}},kqt=t=>decodeURIComponent(new URL(t).pathname),w7=t=>MR.basename(t)||"attachment",$qt=(t,e)=>{let r=MR.extname(t);return`${t.slice(0,t.length-r.length)}-${Oqt(e)}${r}`},Lqt=t=>{let e=new Map;for(let r of t)e.set(w7(r),(e.get(w7(r))??0)+1);return t.map(r=>{let n=w7(r);return(e.get(n)??0)>1?$qt(n,r):n})},uFe=t=>{let e=t?.name;return e==="TimeoutError"||e==="AbortError"?"timeout":"network"},Dqt=async(t,e)=>{let r;try{r=await fetch(t,{signal:AbortSignal.timeout(Aqt)})}catch(a){throw new qo(`Asset fetch failed: ${a?.message||a}`,uFe(a))}if(!r.ok)throw await r.body?.cancel(),new qo(`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)>oM)throw new qo(`Asset too large: ${n} bytes (max ${oM})`,"too_large");if(!r.body)throw new qo("Asset download failed: missing response body","network");let i=`${e}.part`,s=0,o=new wqt({transform(a,c,l){if(s+=a.length,s>oM){l(new qo(`Asset too large: exceeded ${oM} bytes`,"too_large"));return}l(null,a)}});try{await Rqt(bqt.fromWeb(r.body),o,vqt(i))}catch(a){throw await DR.rm(i,{force:!0}),Cl(a)?a:new qo(`Asset body read failed: ${a?.message||a}`,uFe(a))}try{await DR.rename(i,e)}catch(a){throw await DR.rm(i,{force:!0}),a}},Mqt=async(t,e,r)=>{if(!Pqt(t))return LR.warn(`Skipping attachments for unsafe session id: ${t}`),[];if(!Array.isArray(e)||e.length===0)return[];let n=MR.join(r,mn,Ws,t);await DR.mkdir(n,{recursive:!0});let i=e.filter(o=>typeof o=="string"&&o.length>0),s=Lqt(i.map(kqt));return i.map((o,a)=>({sessionId:t,url:o,dest:MR.join(n,s[a])}))},dFe=async({assetMap:t,cwd:e=Tqt.cwd()})=>{let r=Object.entries(t??{});if(r.length===0)return;let n=(await Promise.all(r.map(([a,c])=>Mqt(a,c,e)))).flat();if(n.length===0)return;let i={};for(let a of n)i[a.sessionId]=(i[a.sessionId]??0)+1;LR.info(`Reconciling ${n.length} attachment(s) across ${Object.keys(i).length} session(s)`);let s={},o=async a=>{if(await Nqt(a.dest))return;let c=performance.now(),l=new URL(a.url).pathname;try{await aS(()=>Dqt(a.url,a.dest),{maxRetries:xqt,baseDelay:Cqt,shouldRetry:Iqt,onRetry:(u,d)=>{let f=Cl(d)?d.kind:"unknown";Q.inc("assets.fetch_retry",1,{kind:f}),LR.info(`Retrying asset download session=${a.sessionId} key=${l} kind=${f} attempt=${u}`)}})}catch(u){let d=Cl(u)?u.kind:"unknown",f=Cl(u)?u.status:void 0;throw LR.error(`Asset download failed session=${a.sessionId} key=${new URL(a.url).pathname} kind=${d} status=${f??"-"} elapsedMs=${Math.round(performance.now()-c)} message=${u?.message||u}`),u}s[a.sessionId]=(s[a.sessionId]??0)+1};for(let a=0;a<n.length;a+=lFe){let c=n.slice(a,a+lFe);await Promise.all(c.map(o))}for(let[a,c]of Object.entries(i)){let l=s[a]??0;LR.info(`Session ${a}: fetched ${l} attachment(s), ${c-l} already present`)}};import{createHash as Uqt}from"crypto";import{createReadStream as Fqt}from"fs";import aM from"fs/promises";import mFe from"os";import cM from"path";var fFe=fe("repo"),gFe="runner-diffs-",lM=t=>`${gFe}${t}-`,_Fe=async t=>{let e=mFe.tmpdir(),r;try{r=await aM.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(gFe)&&!n.startsWith(lM(t))).map(n=>aM.rm(cM.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},kr=(t,e={})=>ir("git",t,{...e,env:{...e.env,NETLIFY_INTERNAL_GIT:"1"}}),uM=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{fFe.info("Getting runner diffs");let n=await C7(r),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!e){let l=O7(s);await Hqt(l,r)}fFe.info("Changes after processing"),await x7(r);let o=await UR(s,r);if(await A7(o,r),i=await qqt(r),!i)return{hasChanges:!1,ignored:o};await kr(["commit","-m","Agent runner [skip ci]"],{cwd:r});let a=await aM.mkdtemp(cM.join(mFe.tmpdir(),lM(t.sessionId))),c=await R7({config:t,diffDir:a,cwd:r,target:{commit:"HEAD"},ignored:o});return await jqt(r),c.hasChanges&&Q.distribution("diff.size",(c.diffBinary??c.diff).size,{phase:"final"}),c},R7=async({config:t,diffDir:e,cwd:r,target:n,ignored:i})=>{let s="commit"in n?n.commit:"--cached",o="indexPath"in n?{GIT_INDEX_FILE:n.indexPath}:void 0,a=async({from:p,fileName:h,binary:m})=>{let _=cM.join(e,h);await kr([...m?["diff",p,s,"--binary"]:["diff",p,s],`--output=${_}`],{stdio:["ignore","ignore","pipe"],cwd:r,env:o});let{size:v}=await aM.stat(_);return{path:_,size:v}},c=await a({from:t.runSha,fileName:"session.patch"});if(c.size===0)return{hasChanges:!1,ignored:i};let l=await a({from:t.runSha,fileName:"session-binary.patch",binary:!0}),u,d;if(t.sha){u=await a({from:t.sha,fileName:"cumulative.patch"});let p=await a({from:t.sha,fileName:"cumulative-binary.patch",binary:!0});await hFe(u,p)||(d=p)}let f={hasChanges:!0,diff:c,resultDiff:u,ignored:i};return await hFe(c,l)||(f.diffBinary=l),d&&(f.resultDiffBinary=d),f},pFe=async t=>{let e=Uqt("sha256");for await(let r of Fqt(t))e.update(r);return e.digest("hex")},hFe=async(t,e)=>t.size===e.size&&await pFe(t.path)===await pFe(e.path),jqt=async(t=process.cwd())=>{process.env.NETLIFY_LOCAL_MODE&&await kr(["reset","--soft","HEAD~1"],{cwd:t})},A7=async(t=[],e=process.cwd())=>{await kr(["add",".",...t],{cwd:e})},x7=async(t=process.cwd())=>{let e=await kr(["status","-s"],{cwd:t});return String(e.stdout??"")},yFe=/.. (.+)?\.log$/,zqt=[yFe],C7=async(t=process.cwd())=>{let e=await x7(t);return{hasChanges:(e.trim().length===0?[]:e.split(`
796
796
  `).filter(i=>zqt.some(o=>o instanceof RegExp?o.test(i):i===o)?!1:i[1]?.trim()!=="")).length!==0,status:e}},qqt=async(t=process.cwd())=>{try{return await kr(["diff","--staged","--quiet"],{cwd:t}),!1}catch{return!0}},I7=async(t=process.cwd())=>{let{stdout:e}=await kr(["rev-parse","HEAD"],{cwd:t});return String(e??"").trim()},Bqt=1,Vqt=async t=>{try{return await kr(["rev-parse","--verify","--quiet","HEAD"],{cwd:t}),!0}catch(e){if(e.exitCode===Bqt)return!1;throw e}},SFe=async(t=process.cwd())=>{if(!await Vqt(t))return!0;let{stdout:e}=await kr(["ls-tree","--name-only","HEAD"],{cwd:t});return String(e??"").trim().length===0},EFe=async(t=process.cwd())=>{let{stdout:e}=await kr(["rev-list","--max-parents=0","HEAD"],{cwd:t});return String(e??"").trim()},UR=async(t,e=process.cwd())=>{t||=await x7(e);let r=[".netlify","node_modules","dist",".next","out",".nuxt",".output",".cache",".turbo",".parcel-cache","coverage",".nyc_output","storybook-static","public/build","CLAUDE.local.md"],n=[];return t.split(`
797
797
  `).forEach(i=>{r.forEach(o=>{let a=i===`?? ${o}`,c=i.startsWith(`?? ${o}/`)||i.startsWith(`?? ${o}${cM.sep}`);(a||c)&&n.push(`:!${o}`)});let s=i.match(yFe)?.[1];s&&n.push(`:!${s}.log`)}),n},vFe=async(t=process.cwd())=>{await kr(["reset","--hard","HEAD"],{cwd:t})},TFe=async(t=process.cwd())=>{let e=await kr(["clean","-fd","-e",".netlify"],{stdio:["ignore","pipe","pipe"],cwd:t});return String(e.stdout??"").split(`
798
798
  `).filter(r=>r.startsWith("Removing ")).map(r=>r.slice(9))},O7=t=>{let e=t.split(`