@netlify/agent-runner-cli 1.176.0-PAW-469.4 → 1.176.0-PAW-469.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin-local.js CHANGED
@@ -98,8 +98,8 @@ ${s}
98
98
  `);return o.length>t.length*.8?t:o}import{promises as Cse}from"fs";import yd from"path";var W2e=/@anthropic-ai\/sdk|['"`]openai['"`]|@google\/genai|new\s+Anthropic\b|new\s+OpenAI\b|GoogleGenAI|ANTHROPIC_API_KEY|OPENAI_API_KEY|GEMINI_API_KEY/,Y2e=/satisfies\s+NetlifyFunction\b|export\s+default\s*\{/,K2e=/export\s+default\b/,Z2e=/\bexports\.handler\b|\bmodule\.exports\.handler\b|\bmodule\.exports\s*=|export\s+(async\s+)?(const\s+handler\b|function\s+handler\b)/,J2e=new Set([".js",".ts",".mjs",".mts",".cjs",".cts"]);function X2e(t){return Y2e.test(t)?"v3":K2e.test(t)?"v2":Z2e.test(t)?"v1":"unknown"}async function A0(t,e=process.env.FUNCTIONS_DIST||"netlify/functions"){let r={aiTotal:0,v1:0,v2:0,v3:0,unknown:0,v1Files:[]},n=yd.isAbsolute(e)?e:yd.join(t,e),i;try{i=await Cse.readdir(n,{withFileTypes:!0})}catch{return r}for(let o of i){if(!o.isFile()||!J2e.has(yd.extname(o.name))||o.name.endsWith(".d.ts"))continue;let s;try{s=await Cse.readFile(yd.join(n,o.name),"utf8")}catch{continue}if(!W2e.test(s))continue;r.aiTotal++;let a=X2e(s);r[a]++,a==="v1"&&r.v1Files.push(yd.relative(t,yd.join(n,o.name)).split(yd.sep).join("/"))}return r}var Ise=(t,e)=>{let r=t.usage,n=r?.output_tokens??0,i=r?.reasoning_output_tokens??0,o=t.costUsd!=null&&t.costUsd>0?t.costUsd:void 0,s=o==null&&e!=null?e/180:void 0,a=o??s;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":o!=null?"provider":"credits-derived"}:{},...e!=null?{"netlify.ai.run.credits_cost":e}:{},...n>0?{"netlify.ai.run.reasoning_ratio":i/n}:{}}};import{createReadStream as Sqe}from"fs";import{request as Eqe}from"http";import{request as vqe}from"https";import{pipeline as bqe}from"stream/promises";import wh from"process";import{AsyncLocalStorage as Q2e}from"async_hooks";import eqe from"dgram";import Sd from"process";var tqe="buildbot.agent_runner.",rqe=8125,nqe=t=>{let e=Object.keys(t);return e.length===0?"":"|#"+e.map(r=>`${r}:${t[r]}`).join(",")},iE=(t,e,r,n={})=>`${tqe}${t}:${e}|${r}${nqe(n)}`,iqe={service:"buildbot"},Pse={},cz=new Q2e,sE=t=>{Pse={...t}},x0=(t,e)=>{let r=cz.getStore()??{};return cz.run({...r,...t},e)},oE=t=>({...Pse,...cz.getStore()??{},...t,...iqe}),oqe=(t,e)=>{let r=!1,n=eqe.createSocket("udp4");return n.unref(),n.once("error",i=>{if(!r){let o=i.code??i.message;Sd.stderr.write(`[metrics] UDP error: ${o}
99
99
  `),r=!0}}),i=>{r||n.send(i,e,t,o=>{if(o&&!r){let s=o.code??o.message;Sd.stderr.write(`[metrics] UDP send to ${t}:${e} failed: ${s}
100
100
  `),r=!0}})}},az=()=>{},Ose=()=>!!Sd.env.VITEST,Nse=()=>({enabled:!!Sd.env.HOST_NODE_IP&&!Ose()}),sqe=()=>{if(Ose())return az;let t=Sd.env.HOST_NODE_IP;if(!t)return az;let e=Sd.env.DD_AGENT_PORT,r=e===void 0?rqe:Number(e);return!Number.isInteger(r)||r<=0||r>65535?(Sd.stderr.write(`[metrics] DD_AGENT_PORT="${e}" is not a valid port; metrics disabled
101
- `),az):oqe(t,r)},aqe=(t=sqe())=>({inc(e,r=1,n={}){t(iE(e,r,"c",oE(n)))},gauge(e,r,n={}){t(iE(e,r,"g",oE(n)))},histogram(e,r,n={}){t(iE(e,r,"h",oE(n)))},timing(e,r,n={}){t(iE(e,r,"ms",oE(n)))},distribution(e,r,n={}){t(iE(e,r,"d",oE(n)))}}),K=aqe(),R0=({previewDeployed:t,hadFailedAttempts:e})=>{K.inc("deploy.final_outcome",1,{outcome:t?e?"recovered":"success":"no_preview"})},al=(t,e={})=>{let r=t.input_tokens??0,n=t.output_tokens??0,i=t.reasoning_output_tokens??0,o=t.cache_creation_input_tokens??0,s=t.cache_read_input_tokens??0;K.distribution("inference.tokens",r,{...e,kind:"input"}),K.distribution("inference.tokens",n,{...e,kind:"output"}),K.distribution("inference.tokens",i,{...e,kind:"reasoning"});let a=t.total_tokens??r+n+i+o+s;K.distribution("inference.tokens.total",a,e)};import{spawn as uz}from"child_process";import{existsSync as cqe,mkdirSync as lqe,writeFileSync as uqe}from"fs";import{connect as dqe}from"net";import bh from"path";import Da from"process";var $o=ie("step-preview"),fqe=bh.join("apps","netlify-react-ui","public","agent-run-preview.json"),lz=9001,pqe="components-agentrunners-rendersteps--live",C0=`http://localhost:${lz}/?path=/story/${pqe}`,dz=()=>{let t=Da.env.NETLIFY_REACT_UI_DIR;if(!t)return $o.error("--preview needs the react-ui repo: set NETLIFY_REACT_UI_DIR to your netlify-react-ui checkout"),null;let e=bh.resolve(t);return cqe(bh.join(e,"apps","netlify-react-ui","public"))?e:($o.error(`NETLIFY_REACT_UI_DIR does not look like netlify-react-ui: ${e}`),null)},kse=()=>{let t=Da.env.NETLIFY_STEP_PREVIEW_FILE;if(t)return bh.resolve(t);let e=dz();return e?bh.join(e,fqe):null},hqe=t=>new Promise(e=>{let r=dqe({port:t,host:"127.0.0.1"}),n=i=>{r.destroy(),e(i)};r.once("connect",()=>n(!0)),r.once("error",()=>n(!1)),r.setTimeout(500,()=>n(!1))}),mqe=t=>{let e=Da.platform==="darwin"?"open":Da.platform==="win32"?"start":"xdg-open";try{let r=uz(e,[t],{stdio:"ignore",detached:!0,shell:Da.platform==="win32"});r.on("error",()=>$o.log(`Open \u2192 ${t}`)),r.unref()}catch{$o.log(`Open \u2192 ${t}`)}},gqe=(t,e)=>{if(Da.platform==="win32"){$o.log(`Open when ready \u2192 ${e}`);return}let r=Da.platform==="darwin"?"open":"xdg-open";try{let n=uz("sh",["-c",`until nc -z 127.0.0.1 ${t} 2>/dev/null; do sleep 1; done; ${r} '${e}'`],{stdio:"ignore",detached:!0});n.on("error",()=>$o.log(`Open when ready \u2192 ${e}`)),n.unref()}catch{$o.log(`Open when ready \u2192 ${e}`)}},Mse=async t=>{if(await hqe(lz)){$o.log(`Storybook already running \u2192 opening ${C0}`),mqe(C0);return}let e=r=>$o.error("Could not launch Storybook; start it manually with `yarn storybook`",{error:r?.message});try{let r=uz("yarn",["storybook"],{cwd:t,env:{...Da.env,STORIES:"src/components/AgentRunners/Sessions",BROWSER:"none"},stdio:"ignore",detached:!0});r.on("error",e),r.unref(),$o.log(`Started Storybook in ${t} (booting\u2026). Will open ${C0}`),gqe(lz,C0)}catch(r){e(r)}},_qe=["id","title","message","category","type","tasks","groupId","parentGroupId","refId"],I0=[],yqe=t=>{let e={};for(let r of _qe){let n=t[r];n!==void 0&&(e[r]=n)}return e},$se=t=>{let e=Da.env.NETLIFY_STEP_PREVIEW_FILE;if(!(!e||!t?.length)){for(let r of t){let n=yqe(r),i=n.id!=null?I0.findIndex(o=>o.id===n.id):-1;i>=0?I0[i]=n:I0.push(n)}try{lqe(bh.dirname(e),{recursive:!0}),uqe(e,JSON.stringify(I0,null,2)+`
102
- `)}catch(r){$o.info("Could not write step preview file",{error:r?.message})}}};var Do=class extends Error{constructor(r,n,i,o=!1){super(r);this.statusCode=n;this.userMessage=i;this.isCreditLimitExceeded=o;this.name="GracefulShutdownError"}},La=t=>t instanceof Do;var Th=class extends Error{constructor(e){super(e),this.name="ProviderError"}};var Cs=class extends Error{constructor(r,n,i){super(r);this.kind=n;this.status=i;this.name="AssetDownloadError"}},cl=t=>t instanceof Cs;var aE=t=>4*Math.ceil(t/3);var P0=wh.env.NETLIFY_API_URL,O0=wh.env.NETLIFY_API_TOKEN,rr=ie("api"),Is=()=>wh.env.NETLIFY_LOCAL_MODE==="true",Jr=async(t,e={})=>{if(!P0||!O0)throw new Error("No API URL or token");let r=new URL(t,P0),n={...e,headers:{...e.headers,Authorization:`Bearer ${O0}`}};wh.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=await fetch(r,n),o=i.ok&&i.status<=299;if(wh.env.AGENT_RUNNERS_DEBUG==="true")rr.log(`Response headers for ${r}:`),i.headers.forEach((a,c)=>{rr.log(` ${c}: ${a}`)});else{let a=i.headers.get("x-request-id")||i.headers.get("x-nf-request-id");rr.log(`Request ID for ${r}: ${a||"N/A"}`)}if(o||(rr.error(`Got status ${i.status} for request ${r}`),K.inc("api.request_failed",1,{status:i.status})),e.raw){if(!o)throw new Error(`API request failed: ${i.status} ${i.statusText}`);return i}let s=await(i.headers.get("content-type")?.includes("application/json")?i.json():i.text());if(!o){let a=typeof s=="string"?s:JSON.stringify(s);throw i.status===404?new Do(`API request failed: 404 - ${a}`,404,"The site associated with this agent run no longer exists."):i.status===503&&e.gracefulOn503&&a.toLowerCase().includes("usage exceeded")?new Do(`API request failed: 503 - ${a}`,503,"Credit limit reached. Please add more credits to continue using Agent Runners.",!0):new Error(`API request failed: ${i.status} - ${a}`)}return s},Dse=t=>{rr.log("Setting details for api",{apiUrl:t?.constants?.NETLIFY_API_HOST,token:!!t?.constants?.NETLIFY_API_TOKEN}),t?.constants?.NETLIFY_API_HOST&&(P0=`https://${t.constants.NETLIFY_API_HOST}`),t?.constants?.NETLIFY_API_TOKEN&&(O0=t.constants.NETLIFY_API_TOKEN)},Lse=()=>({apiUrl:P0,token:O0}),N0=async(t,e)=>Is()?(rr.log("Mock API: updateRunner called",{runnerId:t,data:e}),{id:t,...e}):Jr(`/api/v1/agent_runners/${t}`,{method:"PUT",json:e}),mn=async(t,e,r)=>{if(Is()){if($se(r?.steps),wh.env.NETLIFY_LOCAL_QUIET==="true")for(let n of r?.steps??[]){let i=n.message??n.title;i&&console.log(i)}else rr.log("Mock API: updateRunnerSession called",JSON.stringify({runnerId:t,sessionId:e,data:r},null,2));return{id:t,sessionId:e,...r}}return Jr(`/api/v1/agent_runners/${t}/sessions/${e}`,{method:"PUT",json:r})},Tqe=3,wqe=new Set(["normal","create"]),Use=async(t,e,r,n)=>{if(!wqe.has(t.mode)||!t.prompt)return;if(Is()){rr.log("Mock API: classifyRun called",JSON.stringify({runnerId:t.id,sessionId:t.sessionId},null,2));return}let i=(t.sessionHistoryContext??[]).slice(-Tqe);try{await Jr(`/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(o){rr.warn("Interaction classification trigger failed (continuing without it):",o)}};var Fse=async t=>Is()?(rr.log("Mock API: getSite called",{siteId:t}),{id:t,has_database:!1,published_deploy:{id:"id"}}):Jr(`/api/v1/sites/${t}`),Ah=async(t,e)=>Is()?(rr.log("Mock API: getRunnerSession called",{runnerId:t,sessionId:e}),{id:e,runnerId:t,state:"running"}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}`),zse=async(t,e)=>(await Jr(`/api/v1/agent_runners/${t}/sessions/${e}/diff/result`,{raw:!0})).text(),jse=(t,e,r)=>Jr(`/api/v1/accounts/${t}/ai-gateway/token`,{headers:{"X-Nf-Agent-Runner-Id":e,"X-Nf-Agent-Runner-Session-Id":r},gracefulOn503:!0}),Bse=(t,e,r)=>Jr(`/api/v1/sites/${t}/ai-gateway/token`,{headers:{"X-Nf-Agent-Runner-Id":e,"X-Nf-Agent-Runner-Session-Id":r},gracefulOn503:!0});var qse=async(t,e)=>Is()?(rr.log("Mock API: getAgentConnectionTokens called",{runnerId:t,sessionId:e}),{connections:[]}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}/connections/tokens`,{method:"POST"}),Vse=async(t,e)=>Is()?(rr.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"}}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}/diff/upload_urls`,{method:"POST"}),Gse=async(t,e)=>Is()?(rr.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"}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}/native_session/upload`,{method:"POST"}),Hse=async(t,e)=>{if(Is())return rr.log("Mock API: getNativeSessionDownloadUrl called",{runnerId:t,sessionId:e}),{download_url:"https://s3.mock.com/mock-download-url-native-session"};try{return await Jr(`/api/v1/agent_runners/${t}/sessions/${e}/native_session`)}catch(r){if(r instanceof Do&&r.statusCode===404)return rr.log("No native session available to download (404), falling back"),null;throw r}},k0=async(t,e)=>Is()?(rr.log("Mock API: updateSessionUsage called",{runnerId:t,sessionId:e}),{id:e,runnerId:t,usage:0}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}/update_usage`,{method:"POST"}),Wse="netlifydb_readonly",Yse=async t=>(await Jr(`/api/v1/sites/${t}/database?role=${Wse}`,{raw:!0})).json(),Kse=async(t,e)=>(await Jr(`/api/v1/sites/${t}/database/branch/${encodeURIComponent(e)}?role=${Wse}`,{raw:!0})).json(),Zse=async t=>Jr(`/api/v1/sites/${t}/database`,{method:"POST",json:{}}),Jse=async(t,e)=>Jr(`/api/v1/sites/${t}/database/branch`,{method:"POST",json:{branch_id:e}}),Aqe=1e4,Xse=async t=>{rr.log(`Downloading from S3: ${new URL(t).host}`);let e=await fetch(t,{method:"GET",signal:AbortSignal.timeout(Aqe)});if(!e.ok)throw new Error(`S3 download failed with status ${e.status}`);return Buffer.from(await e.arrayBuffer())},Qse=async(t,e,{maxRetries:r=3,baseDelayMs:n=500,contentType:i="text/plain"}={})=>{rr.log(`Uploading to S3: ${new URL(t).host}`);for(let o=1;o<=r;o++)try{let s=await fetch(t,{method:"PUT",body:e,headers:{"Content-Type":i}});if(!s.ok)throw new Error(`S3 upload failed with status ${s.status}`);return s}catch(s){if(o===r)throw s;let a=n*2**(o-1);rr.warn(`S3 upload attempt ${o}/${r} failed: ${s.message}. Retrying in ${a}ms...`),await new Promise(c=>setTimeout(c,a))}},xqe=6e4,Rqe=(t,e,{contentLength:r,contentType:n,base64:i,timeoutMs:o})=>new Promise((s,a)=>{let c=new URL(t),u=(c.protocol==="http:"?Eqe:vqe)(c,{method:"PUT",headers:{"Content-Type":n,"Content-Length":r}});u.setTimeout(o,()=>{u.destroy(new Error(`S3 upload timed out after ${o}ms with no socket activity`))}),u.on("error",a),u.on("response",f=>{f.resume(),f.statusCode>=200&&f.statusCode<=299?s(f.statusCode):a(new Error(`S3 upload failed with status ${f.statusCode}`))});let d=Sqe(e,i?{encoding:"base64"}:void 0);bqe(d,u).catch(a)}),fz=async(t,e,{size:r,base64:n=!1,maxRetries:i=3,baseDelayMs:o=500,contentType:s="text/plain",timeoutMs:a=xqe})=>{rr.log(`Uploading file to S3: ${new URL(t).host}`);let c=n?aE(r):r;for(let l=1;l<=i;l++)try{return await Rqe(t,e,{contentLength:c,contentType:s,base64:n,timeoutMs:a})}catch(u){if(l===i)throw u;let d=o*2**(l-1);rr.warn(`S3 upload attempt ${l}/${i} failed: ${u.message}. Retrying in ${d}ms...`),await new Promise(f=>setTimeout(f,d))}};var Cqe=ie("storage_outcome"),eae=async({config:t,hasDb:e,pipelineSpan:r,resolvedModel:n,cliVersion:i})=>{let o=r?.spanContext();await mn(t.id,t.sessionId,{metadata:{storage_outcome:{...typeof e=="boolean"?{has_db:e}:{},...o?{trace_id:o.traceId,span_id:o.spanId}:{},provider:t.runner,model:n??t.model??"unknown",cli_version:i}}}).catch(s=>Cqe.warn("Failed to persist storage_outcome",{error:s?.message}))};import Opt from"fs/promises";import Npt from"path";import V_ from"process";var Ed=ie("ai_gateway"),pz=null;var cE=async()=>{if(pz)return pz;Ed.log("Fetching available AI gateway providers");let t=await fetch(`${Lse().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 pz=e,Ed.log("Cached AI gateway providers",{providerCount:Object.keys(e.providers).length}),e},Iqe=async(t,e)=>{let n=(await cE()).providers[t];if(!n)return Ed.log(`Provider '${t}' not found`),!1;let i=n.models.includes(e);return Ed.log(`Model validation for ${t}/${e}`,{isAvailable:i}),i},Pqe=async t=>{let e=await cE(),r=Object.values(e.providers).some(n=>n.models.includes(t));return Ed.log(`Model validation across all providers for ${t}`,{isAvailable:r}),r},tae=async({config:t})=>{let e,r,n,i,o=!t.site?.published_deploy;if(!(o?t.accountId:t.siteId))throw new Error(`No entity id for ${o?"account":"site"}`);let a=async()=>{clearTimeout(n),Ed.log("Requesting AI gateway information");let l=await(o?jse(t.accountId,t.id,t.sessionId):Bse(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,Ed.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(),cE()]),{get url(){return i},get token(){return e},isModelAvailableForProvider:Iqe,isModelAvailable:Pqe}};import Oqe from"crypto";import{createWriteStream as Nqe}from"fs";import uE from"fs/promises";import dE from"path";import kqe from"process";import{Readable as Mqe,Transform as $qe}from"stream";import{pipeline as Dqe}from"stream/promises";async function M0(t,e){let{maxRetries:r,baseDelay:n,onRetry:i,shouldRetry:o}=e,s;for(let a=1;a<=r;a++)try{return await t()}catch(c){if(s=c,a===r||o&&!o(s))throw s;i&&i(a,s),await new Promise(l=>setTimeout(l,n*a))}throw s}var lE=ie("asset_fetch"),$0=100*1024*1024,Lqe=6e4,rae=6,Uqe=3,Fqe=300,zqe=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}},jqe=t=>Oqe.createHash("sha1").update(t).digest("hex").slice(0,8),Bqe=t=>typeof t=="string"&&t.length>0&&t!=="."&&t!==".."&&t===dE.basename(t),qqe=async t=>{try{return await uE.stat(t),!0}catch{return!1}},Vqe=t=>decodeURIComponent(new URL(t).pathname),hz=t=>dE.basename(t)||"attachment",Gqe=(t,e)=>{let r=dE.extname(t);return`${t.slice(0,t.length-r.length)}-${jqe(e)}${r}`},Hqe=t=>{let e=new Map;for(let r of t)e.set(hz(r),(e.get(hz(r))??0)+1);return t.map(r=>{let n=hz(r);return(e.get(n)??0)>1?Gqe(n,r):n})},nae=t=>{let e=t?.name;return e==="TimeoutError"||e==="AbortError"?"timeout":"network"},Wqe=async(t,e)=>{let r;try{r=await fetch(t,{signal:AbortSignal.timeout(Lqe)})}catch(a){throw new Cs(`Asset fetch failed: ${a?.message||a}`,nae(a))}if(!r.ok)throw await r.body?.cancel(),new Cs(`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)>$0)throw new Cs(`Asset too large: ${n} bytes (max ${$0})`,"too_large");if(!r.body)throw new Cs("Asset download failed: missing response body","network");let i=`${e}.part`,o=0,s=new $qe({transform(a,c,l){if(o+=a.length,o>$0){l(new Cs(`Asset too large: exceeded ${$0} bytes`,"too_large"));return}l(null,a)}});try{await Dqe(Mqe.fromWeb(r.body),s,Nqe(i))}catch(a){throw await uE.rm(i,{force:!0}),cl(a)?a:new Cs(`Asset body read failed: ${a?.message||a}`,nae(a))}try{await uE.rename(i,e)}catch(a){throw await uE.rm(i,{force:!0}),a}},Yqe=async(t,e,r)=>{if(!Bqe(t))return lE.warn(`Skipping attachments for unsafe session id: ${t}`),[];if(!Array.isArray(e)||e.length===0)return[];let n=dE.join(r,Zr,Mo,t);await uE.mkdir(n,{recursive:!0});let i=e.filter(s=>typeof s=="string"&&s.length>0),o=Hqe(i.map(Vqe));return i.map((s,a)=>({sessionId:t,url:s,dest:dE.join(n,o[a])}))},iae=async({assetMap:t,cwd:e=kqe.cwd()})=>{let r=Object.entries(t??{});if(r.length===0)return;let n=(await Promise.all(r.map(([a,c])=>Yqe(a,c,e)))).flat();if(n.length===0)return;let i={};for(let a of n)i[a.sessionId]=(i[a.sessionId]??0)+1;lE.info(`Reconciling ${n.length} attachment(s) across ${Object.keys(i).length} session(s)`);let o={},s=async a=>{if(await qqe(a.dest))return;let c=performance.now(),l=new URL(a.url).pathname;try{await M0(()=>Wqe(a.url,a.dest),{maxRetries:Uqe,baseDelay:Fqe,shouldRetry:zqe,onRetry:(u,d)=>{let f=cl(d)?d.kind:"unknown";K.inc("assets.fetch_retry",1,{kind:f}),lE.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 lE.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}o[a.sessionId]=(o[a.sessionId]??0)+1};for(let a=0;a<n.length;a+=rae){let c=n.slice(a,a+rae);await Promise.all(c.map(s))}for(let[a,c]of Object.entries(i)){let l=o[a]??0;lE.info(`Session ${a}: fetched ${l} attachment(s), ${c-l} already present`)}};var Kqe=ie("utils"),Zqe=t=>new Promise(e=>{setTimeout(e,t)});var mz=t=>{try{return new URL(t).hostname||null}catch{return null}},D0=(t,e=3e3)=>{let r=!1,n=null,i=[],o=null,s=(...a)=>{if(r)return n=a,new Promise(u=>{i.push(u)});r=!0;let c,l=new Promise(u=>{c=u});return o=(async()=>{await Promise.resolve();let u=await t(...a);for(c(u);;){if(await Zqe(e),!n)return r=!1,o=null,u;let d=n,f=i;n=null,i=[],u=await t(...d),f.forEach(p=>{p(u)})}})(),l};return s.flush=async()=>{if((r||n)&&o)return await o,s.flush()},s.cancel=()=>{n=null,i.forEach(a=>a(void 0)),i=[]},s},ll=(t,e,r=!1)=>{let n=null,i=null,o=null,s=function(...a){i=a,o=this;let c=r&&!n;clearTimeout(n),n=setTimeout(()=>{n=null,r||(t.apply(o,i),i=null,o=null)},e),c&&(t.apply(o,i),i=null,o=null)};return s.cancel=()=>{clearTimeout(n),n=null,i=null,o=null},s.flush=()=>{if(n){clearTimeout(n);let a=i,c=o;n=null,i=null,o=null,t.apply(c,a)}},s},oae=(t,e=!0,r)=>{if(t)try{return JSON.parse(t)}catch(n){e&&(r?.error?r.error("Could not parse JSON",n):Kqe.error("Could not parse JSON",n))}},Jqe=t=>t.charAt(0).toUpperCase()+t.slice(1),Ps=t=>t.split("-").map(e=>e.length===2?e.toUpperCase():Jqe(e)).join(" ");function Ua(t,e){e&&t.log(`Skill invoked: ${e}`)}var L0=t=>Object.fromEntries(Object.entries(t).filter(([,e])=>e!==void 0)),sae=(t,e,r=!1)=>{if(r)return;let n=60,i=55,o=".netlify.app",s="agent-",a=6;if(!e)return`${s}${t.slice(0,a)}`;let c=`--${e}${o}`;if(c.length>i)return"";let l=n-c.length;if(l<=0)return"";if(l>=s.length+a){let u=Math.min(l-s.length,t.length);return`${s}${t.slice(0,u)}`}return t.slice(0,l)};var gz=t=>{let e=t.match(/<<-?\s*['"]?(\w+)['"]?/);if(!e)return{command:t};let r=t.indexOf(e[0]),n=t.slice(r+e[0].length).trim();return{command:t.slice(0,r).trim(),heredocContent:n||void 0}},Xqe=1e4,_z=(t,e=Xqe)=>{if(!t||typeof t!="string"||t.length<=e)return t;let n=t.startsWith("```")?"\n... [truncated]\n```":"... [truncated]";return t.slice(0,e)+n};import{createHash as OYe}from"crypto";import{createReadStream as NYe}from"fs";import WC from"fs/promises";import Rfe from"os";import YC from"path";import Ls from"process";import Va from"path";import GC from"fs";import{fileURLToPath as AYe}from"url";import{createRequire as xYe}from"module";function lr(t){if(typeof t!="object"||t===null)return!1;let e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)}import{fileURLToPath as Qqe}from"url";var xh=(t,e)=>{let r=Sz(e4e(t));if(typeof r!="string")throw new TypeError(`${e} must be a string or a file URL: ${r}.`);return r},e4e=t=>yz(t)?t.toString():t,yz=t=>typeof t!="string"&&t&&Object.getPrototypeOf(t)===String.prototype,Sz=t=>t instanceof URL?Qqe(t):t;var U0=(t,e=[],r={})=>{let n=xh(t,"First argument"),[i,o]=lr(e)?[[],e]:[e,r];if(!Array.isArray(i))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${i}`);if(i.some(c=>typeof c=="object"&&c!==null))throw new TypeError(`Second argument must be an array of strings: ${i}`);let s=i.map(String),a=s.find(c=>c.includes("\0"));if(a!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${a}`);if(!lr(o))throw new TypeError(`Last argument must be an options object: ${o}`);return[n,s,o]};import{ChildProcess as a4e}from"child_process";import{StringDecoder as t4e}from"string_decoder";var{toString:aae}=Object.prototype,cae=t=>aae.call(t)==="[object ArrayBuffer]",vr=t=>aae.call(t)==="[object Uint8Array]",Fa=t=>new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r4e=new TextEncoder,lae=t=>r4e.encode(t),n4e=new TextDecoder,F0=t=>n4e.decode(t),uae=(t,e)=>i4e(t,e).join(""),i4e=(t,e)=>{if(e==="utf8"&&t.every(o=>typeof o=="string"))return t;let r=new t4e(e),n=t.map(o=>typeof o=="string"?lae(o):o).map(o=>r.write(o)),i=r.end();return i===""?n:[...n,i]},fE=t=>t.length===1&&vr(t[0])?t[0]:Ez(o4e(t)),o4e=t=>t.map(e=>typeof e=="string"?lae(e):e),Ez=t=>{let e=new Uint8Array(s4e(t)),r=0;for(let n of t)e.set(n,r),r+=n.length;return e},s4e=t=>{let e=0;for(let r of t)e+=r.length;return e};var hae=t=>Array.isArray(t)&&Array.isArray(t.raw),mae=(t,e)=>{let r=[];for(let[o,s]of t.entries())r=c4e({templates:t,expressions:e,tokens:r,index:o,template:s});if(r.length===0)throw new TypeError("Template script must not be empty");let[n,...i]=r;return[n,i,{}]},c4e=({templates:t,expressions:e,tokens:r,index:n,template:i})=>{if(i===void 0)throw new TypeError(`Invalid backslash sequence: ${t.raw[n]}`);let{nextTokens:o,leadingWhitespaces:s,trailingWhitespaces:a}=l4e(i,t.raw[n]),c=fae(r,o,s);if(n===e.length)return c;let l=e[n],u=Array.isArray(l)?l.map(d=>pae(d)):[pae(l)];return fae(c,u,a)},l4e=(t,e)=>{if(e.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let r=[],n=0,i=dae.has(e[0]);for(let s=0,a=0;s<t.length;s+=1,a+=1){let c=e[a];if(dae.has(c))n!==s&&r.push(t.slice(n,s)),n=s+1;else if(c==="\\"){let l=e[a+1];l===`
101
+ `),az):oqe(t,r)},aqe=(t=sqe())=>({inc(e,r=1,n={}){t(iE(e,r,"c",oE(n)))},gauge(e,r,n={}){t(iE(e,r,"g",oE(n)))},histogram(e,r,n={}){t(iE(e,r,"h",oE(n)))},timing(e,r,n={}){t(iE(e,r,"ms",oE(n)))},distribution(e,r,n={}){t(iE(e,r,"d",oE(n)))}}),Y=aqe(),R0=({previewDeployed:t,hadFailedAttempts:e})=>{Y.inc("deploy.final_outcome",1,{outcome:t?e?"recovered":"success":"no_preview"})},al=(t,e={})=>{let r=t.input_tokens??0,n=t.output_tokens??0,i=t.reasoning_output_tokens??0,o=t.cache_creation_input_tokens??0,s=t.cache_read_input_tokens??0;Y.distribution("inference.tokens",r,{...e,kind:"input"}),Y.distribution("inference.tokens",n,{...e,kind:"output"}),Y.distribution("inference.tokens",i,{...e,kind:"reasoning"});let a=t.total_tokens??r+n+i+o+s;Y.distribution("inference.tokens.total",a,e)};import{spawn as uz}from"child_process";import{existsSync as cqe,mkdirSync as lqe,writeFileSync as uqe}from"fs";import{connect as dqe}from"net";import bh from"path";import Da from"process";var $o=ie("step-preview"),fqe=bh.join("apps","netlify-react-ui","public","agent-run-preview.json"),lz=9001,pqe="components-agentrunners-rendersteps--live",C0=`http://localhost:${lz}/?path=/story/${pqe}`,dz=()=>{let t=Da.env.NETLIFY_REACT_UI_DIR;if(!t)return $o.error("--preview needs the react-ui repo: set NETLIFY_REACT_UI_DIR to your netlify-react-ui checkout"),null;let e=bh.resolve(t);return cqe(bh.join(e,"apps","netlify-react-ui","public"))?e:($o.error(`NETLIFY_REACT_UI_DIR does not look like netlify-react-ui: ${e}`),null)},kse=()=>{let t=Da.env.NETLIFY_STEP_PREVIEW_FILE;if(t)return bh.resolve(t);let e=dz();return e?bh.join(e,fqe):null},hqe=t=>new Promise(e=>{let r=dqe({port:t,host:"127.0.0.1"}),n=i=>{r.destroy(),e(i)};r.once("connect",()=>n(!0)),r.once("error",()=>n(!1)),r.setTimeout(500,()=>n(!1))}),mqe=t=>{let e=Da.platform==="darwin"?"open":Da.platform==="win32"?"start":"xdg-open";try{let r=uz(e,[t],{stdio:"ignore",detached:!0,shell:Da.platform==="win32"});r.on("error",()=>$o.log(`Open \u2192 ${t}`)),r.unref()}catch{$o.log(`Open \u2192 ${t}`)}},gqe=(t,e)=>{if(Da.platform==="win32"){$o.log(`Open when ready \u2192 ${e}`);return}let r=Da.platform==="darwin"?"open":"xdg-open";try{let n=uz("sh",["-c",`until nc -z 127.0.0.1 ${t} 2>/dev/null; do sleep 1; done; ${r} '${e}'`],{stdio:"ignore",detached:!0});n.on("error",()=>$o.log(`Open when ready \u2192 ${e}`)),n.unref()}catch{$o.log(`Open when ready \u2192 ${e}`)}},Mse=async t=>{if(await hqe(lz)){$o.log(`Storybook already running \u2192 opening ${C0}`),mqe(C0);return}let e=r=>$o.error("Could not launch Storybook; start it manually with `yarn storybook`",{error:r?.message});try{let r=uz("yarn",["storybook"],{cwd:t,env:{...Da.env,STORIES:"src/components/AgentRunners/Sessions",BROWSER:"none"},stdio:"ignore",detached:!0});r.on("error",e),r.unref(),$o.log(`Started Storybook in ${t} (booting\u2026). Will open ${C0}`),gqe(lz,C0)}catch(r){e(r)}},_qe=["id","title","message","category","type","tasks","groupId","parentGroupId","refId"],I0=[],yqe=t=>{let e={};for(let r of _qe){let n=t[r];n!==void 0&&(e[r]=n)}return e},$se=t=>{let e=Da.env.NETLIFY_STEP_PREVIEW_FILE;if(!(!e||!t?.length)){for(let r of t){let n=yqe(r),i=n.id!=null?I0.findIndex(o=>o.id===n.id):-1;i>=0?I0[i]=n:I0.push(n)}try{lqe(bh.dirname(e),{recursive:!0}),uqe(e,JSON.stringify(I0,null,2)+`
102
+ `)}catch(r){$o.info("Could not write step preview file",{error:r?.message})}}};var Do=class extends Error{constructor(r,n,i,o=!1){super(r);this.statusCode=n;this.userMessage=i;this.isCreditLimitExceeded=o;this.name="GracefulShutdownError"}},La=t=>t instanceof Do;var Th=class extends Error{constructor(e){super(e),this.name="ProviderError"}};var Cs=class extends Error{constructor(r,n,i){super(r);this.kind=n;this.status=i;this.name="AssetDownloadError"}},cl=t=>t instanceof Cs;var aE=t=>4*Math.ceil(t/3);var P0=wh.env.NETLIFY_API_URL,O0=wh.env.NETLIFY_API_TOKEN,rr=ie("api"),Is=()=>wh.env.NETLIFY_LOCAL_MODE==="true",Jr=async(t,e={})=>{if(!P0||!O0)throw new Error("No API URL or token");let r=new URL(t,P0),n={...e,headers:{...e.headers,Authorization:`Bearer ${O0}`}};wh.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=await fetch(r,n),o=i.ok&&i.status<=299;if(wh.env.AGENT_RUNNERS_DEBUG==="true")rr.log(`Response headers for ${r}:`),i.headers.forEach((a,c)=>{rr.log(` ${c}: ${a}`)});else{let a=i.headers.get("x-request-id")||i.headers.get("x-nf-request-id");rr.log(`Request ID for ${r}: ${a||"N/A"}`)}if(o||(rr.error(`Got status ${i.status} for request ${r}`),Y.inc("api.request_failed",1,{status:i.status})),e.raw){if(!o)throw new Error(`API request failed: ${i.status} ${i.statusText}`);return i}let s=await(i.headers.get("content-type")?.includes("application/json")?i.json():i.text());if(!o){let a=typeof s=="string"?s:JSON.stringify(s);throw i.status===404?new Do(`API request failed: 404 - ${a}`,404,"The site associated with this agent run no longer exists."):i.status===503&&e.gracefulOn503&&a.toLowerCase().includes("usage exceeded")?new Do(`API request failed: 503 - ${a}`,503,"Credit limit reached. Please add more credits to continue using Agent Runners.",!0):new Error(`API request failed: ${i.status} - ${a}`)}return s},Dse=t=>{rr.log("Setting details for api",{apiUrl:t?.constants?.NETLIFY_API_HOST,token:!!t?.constants?.NETLIFY_API_TOKEN}),t?.constants?.NETLIFY_API_HOST&&(P0=`https://${t.constants.NETLIFY_API_HOST}`),t?.constants?.NETLIFY_API_TOKEN&&(O0=t.constants.NETLIFY_API_TOKEN)},Lse=()=>({apiUrl:P0,token:O0}),N0=async(t,e)=>Is()?(rr.log("Mock API: updateRunner called",{runnerId:t,data:e}),{id:t,...e}):Jr(`/api/v1/agent_runners/${t}`,{method:"PUT",json:e}),mn=async(t,e,r)=>{if(Is()){if($se(r?.steps),wh.env.NETLIFY_LOCAL_QUIET==="true")for(let n of r?.steps??[]){let i=n.message??n.title;i&&console.log(i)}else rr.log("Mock API: updateRunnerSession called",JSON.stringify({runnerId:t,sessionId:e,data:r},null,2));return{id:t,sessionId:e,...r}}return Jr(`/api/v1/agent_runners/${t}/sessions/${e}`,{method:"PUT",json:r})},Tqe=3,wqe=new Set(["normal","create"]),Use=async(t,e,r,n)=>{if(!wqe.has(t.mode)||!t.prompt)return;if(Is()){rr.log("Mock API: classifyRun called",JSON.stringify({runnerId:t.id,sessionId:t.sessionId},null,2));return}let i=(t.sessionHistoryContext??[]).slice(-Tqe);try{await Jr(`/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(o){rr.warn("Interaction classification trigger failed (continuing without it):",o)}};var Fse=async t=>Is()?(rr.log("Mock API: getSite called",{siteId:t}),{id:t,has_database:!1,published_deploy:{id:"id"}}):Jr(`/api/v1/sites/${t}`),Ah=async(t,e)=>Is()?(rr.log("Mock API: getRunnerSession called",{runnerId:t,sessionId:e}),{id:e,runnerId:t,state:"running"}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}`),zse=async(t,e)=>(await Jr(`/api/v1/agent_runners/${t}/sessions/${e}/diff/result`,{raw:!0})).text(),jse=(t,e,r)=>Jr(`/api/v1/accounts/${t}/ai-gateway/token`,{headers:{"X-Nf-Agent-Runner-Id":e,"X-Nf-Agent-Runner-Session-Id":r},gracefulOn503:!0}),Bse=(t,e,r)=>Jr(`/api/v1/sites/${t}/ai-gateway/token`,{headers:{"X-Nf-Agent-Runner-Id":e,"X-Nf-Agent-Runner-Session-Id":r},gracefulOn503:!0});var qse=async(t,e)=>Is()?(rr.log("Mock API: getAgentConnectionTokens called",{runnerId:t,sessionId:e}),{connections:[]}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}/connections/tokens`,{method:"POST"}),Vse=async(t,e)=>Is()?(rr.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"}}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}/diff/upload_urls`,{method:"POST"}),Gse=async(t,e)=>Is()?(rr.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"}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}/native_session/upload`,{method:"POST"}),Hse=async(t,e)=>{if(Is())return rr.log("Mock API: getNativeSessionDownloadUrl called",{runnerId:t,sessionId:e}),{download_url:"https://s3.mock.com/mock-download-url-native-session"};try{return await Jr(`/api/v1/agent_runners/${t}/sessions/${e}/native_session`)}catch(r){if(r instanceof Do&&r.statusCode===404)return rr.log("No native session available to download (404), falling back"),null;throw r}},k0=async(t,e)=>Is()?(rr.log("Mock API: updateSessionUsage called",{runnerId:t,sessionId:e}),{id:e,runnerId:t,usage:0}):Jr(`/api/v1/agent_runners/${t}/sessions/${e}/update_usage`,{method:"POST"}),Wse="netlifydb_readonly",Yse=async t=>(await Jr(`/api/v1/sites/${t}/database?role=${Wse}`,{raw:!0})).json(),Kse=async(t,e)=>(await Jr(`/api/v1/sites/${t}/database/branch/${encodeURIComponent(e)}?role=${Wse}`,{raw:!0})).json(),Zse=async t=>Jr(`/api/v1/sites/${t}/database`,{method:"POST",json:{}}),Jse=async(t,e)=>Jr(`/api/v1/sites/${t}/database/branch`,{method:"POST",json:{branch_id:e}}),Aqe=1e4,Xse=async t=>{rr.log(`Downloading from S3: ${new URL(t).host}`);let e=await fetch(t,{method:"GET",signal:AbortSignal.timeout(Aqe)});if(!e.ok)throw new Error(`S3 download failed with status ${e.status}`);return Buffer.from(await e.arrayBuffer())},Qse=async(t,e,{maxRetries:r=3,baseDelayMs:n=500,contentType:i="text/plain"}={})=>{rr.log(`Uploading to S3: ${new URL(t).host}`);for(let o=1;o<=r;o++)try{let s=await fetch(t,{method:"PUT",body:e,headers:{"Content-Type":i}});if(!s.ok)throw new Error(`S3 upload failed with status ${s.status}`);return s}catch(s){if(o===r)throw s;let a=n*2**(o-1);rr.warn(`S3 upload attempt ${o}/${r} failed: ${s.message}. Retrying in ${a}ms...`),await new Promise(c=>setTimeout(c,a))}},xqe=6e4,Rqe=(t,e,{contentLength:r,contentType:n,base64:i,timeoutMs:o})=>new Promise((s,a)=>{let c=new URL(t),u=(c.protocol==="http:"?Eqe:vqe)(c,{method:"PUT",headers:{"Content-Type":n,"Content-Length":r}});u.setTimeout(o,()=>{u.destroy(new Error(`S3 upload timed out after ${o}ms with no socket activity`))}),u.on("error",a),u.on("response",f=>{f.resume(),f.statusCode>=200&&f.statusCode<=299?s(f.statusCode):a(new Error(`S3 upload failed with status ${f.statusCode}`))});let d=Sqe(e,i?{encoding:"base64"}:void 0);bqe(d,u).catch(a)}),fz=async(t,e,{size:r,base64:n=!1,maxRetries:i=3,baseDelayMs:o=500,contentType:s="text/plain",timeoutMs:a=xqe})=>{rr.log(`Uploading file to S3: ${new URL(t).host}`);let c=n?aE(r):r;for(let l=1;l<=i;l++)try{return await Rqe(t,e,{contentLength:c,contentType:s,base64:n,timeoutMs:a})}catch(u){if(l===i)throw u;let d=o*2**(l-1);rr.warn(`S3 upload attempt ${l}/${i} failed: ${u.message}. Retrying in ${d}ms...`),await new Promise(f=>setTimeout(f,d))}};var Cqe=ie("storage_outcome"),eae=async({config:t,hasDb:e,pipelineSpan:r,resolvedModel:n,cliVersion:i})=>{let o=r?.spanContext();await mn(t.id,t.sessionId,{metadata:{storage_outcome:{...typeof e=="boolean"?{has_db:e}:{},...o?{trace_id:o.traceId,span_id:o.spanId}:{},provider:t.runner,model:n??t.model??"unknown",cli_version:i}}}).catch(s=>Cqe.warn("Failed to persist storage_outcome",{error:s?.message}))};import Opt from"fs/promises";import Npt from"path";import V_ from"process";var Ed=ie("ai_gateway"),pz=null;var cE=async()=>{if(pz)return pz;Ed.log("Fetching available AI gateway providers");let t=await fetch(`${Lse().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 pz=e,Ed.log("Cached AI gateway providers",{providerCount:Object.keys(e.providers).length}),e},Iqe=async(t,e)=>{let n=(await cE()).providers[t];if(!n)return Ed.log(`Provider '${t}' not found`),!1;let i=n.models.includes(e);return Ed.log(`Model validation for ${t}/${e}`,{isAvailable:i}),i},Pqe=async t=>{let e=await cE(),r=Object.values(e.providers).some(n=>n.models.includes(t));return Ed.log(`Model validation across all providers for ${t}`,{isAvailable:r}),r},tae=async({config:t})=>{let e,r,n,i,o=!t.site?.published_deploy;if(!(o?t.accountId:t.siteId))throw new Error(`No entity id for ${o?"account":"site"}`);let a=async()=>{clearTimeout(n),Ed.log("Requesting AI gateway information");let l=await(o?jse(t.accountId,t.id,t.sessionId):Bse(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,Ed.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(),cE()]),{get url(){return i},get token(){return e},isModelAvailableForProvider:Iqe,isModelAvailable:Pqe}};import Oqe from"crypto";import{createWriteStream as Nqe}from"fs";import uE from"fs/promises";import dE from"path";import kqe from"process";import{Readable as Mqe,Transform as $qe}from"stream";import{pipeline as Dqe}from"stream/promises";async function M0(t,e){let{maxRetries:r,baseDelay:n,onRetry:i,shouldRetry:o}=e,s;for(let a=1;a<=r;a++)try{return await t()}catch(c){if(s=c,a===r||o&&!o(s))throw s;i&&i(a,s),await new Promise(l=>setTimeout(l,n*a))}throw s}var lE=ie("asset_fetch"),$0=100*1024*1024,Lqe=6e4,rae=6,Uqe=3,Fqe=300,zqe=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}},jqe=t=>Oqe.createHash("sha1").update(t).digest("hex").slice(0,8),Bqe=t=>typeof t=="string"&&t.length>0&&t!=="."&&t!==".."&&t===dE.basename(t),qqe=async t=>{try{return await uE.stat(t),!0}catch{return!1}},Vqe=t=>decodeURIComponent(new URL(t).pathname),hz=t=>dE.basename(t)||"attachment",Gqe=(t,e)=>{let r=dE.extname(t);return`${t.slice(0,t.length-r.length)}-${jqe(e)}${r}`},Hqe=t=>{let e=new Map;for(let r of t)e.set(hz(r),(e.get(hz(r))??0)+1);return t.map(r=>{let n=hz(r);return(e.get(n)??0)>1?Gqe(n,r):n})},nae=t=>{let e=t?.name;return e==="TimeoutError"||e==="AbortError"?"timeout":"network"},Wqe=async(t,e)=>{let r;try{r=await fetch(t,{signal:AbortSignal.timeout(Lqe)})}catch(a){throw new Cs(`Asset fetch failed: ${a?.message||a}`,nae(a))}if(!r.ok)throw await r.body?.cancel(),new Cs(`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)>$0)throw new Cs(`Asset too large: ${n} bytes (max ${$0})`,"too_large");if(!r.body)throw new Cs("Asset download failed: missing response body","network");let i=`${e}.part`,o=0,s=new $qe({transform(a,c,l){if(o+=a.length,o>$0){l(new Cs(`Asset too large: exceeded ${$0} bytes`,"too_large"));return}l(null,a)}});try{await Dqe(Mqe.fromWeb(r.body),s,Nqe(i))}catch(a){throw await uE.rm(i,{force:!0}),cl(a)?a:new Cs(`Asset body read failed: ${a?.message||a}`,nae(a))}try{await uE.rename(i,e)}catch(a){throw await uE.rm(i,{force:!0}),a}},Yqe=async(t,e,r)=>{if(!Bqe(t))return lE.warn(`Skipping attachments for unsafe session id: ${t}`),[];if(!Array.isArray(e)||e.length===0)return[];let n=dE.join(r,Zr,Mo,t);await uE.mkdir(n,{recursive:!0});let i=e.filter(s=>typeof s=="string"&&s.length>0),o=Hqe(i.map(Vqe));return i.map((s,a)=>({sessionId:t,url:s,dest:dE.join(n,o[a])}))},iae=async({assetMap:t,cwd:e=kqe.cwd()})=>{let r=Object.entries(t??{});if(r.length===0)return;let n=(await Promise.all(r.map(([a,c])=>Yqe(a,c,e)))).flat();if(n.length===0)return;let i={};for(let a of n)i[a.sessionId]=(i[a.sessionId]??0)+1;lE.info(`Reconciling ${n.length} attachment(s) across ${Object.keys(i).length} session(s)`);let o={},s=async a=>{if(await qqe(a.dest))return;let c=performance.now(),l=new URL(a.url).pathname;try{await M0(()=>Wqe(a.url,a.dest),{maxRetries:Uqe,baseDelay:Fqe,shouldRetry:zqe,onRetry:(u,d)=>{let f=cl(d)?d.kind:"unknown";Y.inc("assets.fetch_retry",1,{kind:f}),lE.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 lE.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}o[a.sessionId]=(o[a.sessionId]??0)+1};for(let a=0;a<n.length;a+=rae){let c=n.slice(a,a+rae);await Promise.all(c.map(s))}for(let[a,c]of Object.entries(i)){let l=o[a]??0;lE.info(`Session ${a}: fetched ${l} attachment(s), ${c-l} already present`)}};var Kqe=ie("utils"),Zqe=t=>new Promise(e=>{setTimeout(e,t)});var mz=t=>{try{return new URL(t).hostname||null}catch{return null}},D0=(t,e=3e3)=>{let r=!1,n=null,i=[],o=null,s=(...a)=>{if(r)return n=a,new Promise(u=>{i.push(u)});r=!0;let c,l=new Promise(u=>{c=u});return o=(async()=>{await Promise.resolve();let u=await t(...a);for(c(u);;){if(await Zqe(e),!n)return r=!1,o=null,u;let d=n,f=i;n=null,i=[],u=await t(...d),f.forEach(p=>{p(u)})}})(),l};return s.flush=async()=>{if((r||n)&&o)return await o,s.flush()},s.cancel=()=>{n=null,i.forEach(a=>a(void 0)),i=[]},s},ll=(t,e,r=!1)=>{let n=null,i=null,o=null,s=function(...a){i=a,o=this;let c=r&&!n;clearTimeout(n),n=setTimeout(()=>{n=null,r||(t.apply(o,i),i=null,o=null)},e),c&&(t.apply(o,i),i=null,o=null)};return s.cancel=()=>{clearTimeout(n),n=null,i=null,o=null},s.flush=()=>{if(n){clearTimeout(n);let a=i,c=o;n=null,i=null,o=null,t.apply(c,a)}},s},oae=(t,e=!0,r)=>{if(t)try{return JSON.parse(t)}catch(n){e&&(r?.error?r.error("Could not parse JSON",n):Kqe.error("Could not parse JSON",n))}},Jqe=t=>t.charAt(0).toUpperCase()+t.slice(1),Ps=t=>t.split("-").map(e=>e.length===2?e.toUpperCase():Jqe(e)).join(" ");function Ua(t,e){e&&t.log(`Skill invoked: ${e}`)}var L0=t=>Object.fromEntries(Object.entries(t).filter(([,e])=>e!==void 0)),sae=(t,e,r=!1)=>{if(r)return;let n=60,i=55,o=".netlify.app",s="agent-",a=6;if(!e)return`${s}${t.slice(0,a)}`;let c=`--${e}${o}`;if(c.length>i)return"";let l=n-c.length;if(l<=0)return"";if(l>=s.length+a){let u=Math.min(l-s.length,t.length);return`${s}${t.slice(0,u)}`}return t.slice(0,l)};var gz=t=>{let e=t.match(/<<-?\s*['"]?(\w+)['"]?/);if(!e)return{command:t};let r=t.indexOf(e[0]),n=t.slice(r+e[0].length).trim();return{command:t.slice(0,r).trim(),heredocContent:n||void 0}},Xqe=1e4,_z=(t,e=Xqe)=>{if(!t||typeof t!="string"||t.length<=e)return t;let n=t.startsWith("```")?"\n... [truncated]\n```":"... [truncated]";return t.slice(0,e)+n};import{createHash as OYe}from"crypto";import{createReadStream as NYe}from"fs";import WC from"fs/promises";import Rfe from"os";import YC from"path";import Ls from"process";import Va from"path";import GC from"fs";import{fileURLToPath as AYe}from"url";import{createRequire as xYe}from"module";function lr(t){if(typeof t!="object"||t===null)return!1;let e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)}import{fileURLToPath as Qqe}from"url";var xh=(t,e)=>{let r=Sz(e4e(t));if(typeof r!="string")throw new TypeError(`${e} must be a string or a file URL: ${r}.`);return r},e4e=t=>yz(t)?t.toString():t,yz=t=>typeof t!="string"&&t&&Object.getPrototypeOf(t)===String.prototype,Sz=t=>t instanceof URL?Qqe(t):t;var U0=(t,e=[],r={})=>{let n=xh(t,"First argument"),[i,o]=lr(e)?[[],e]:[e,r];if(!Array.isArray(i))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${i}`);if(i.some(c=>typeof c=="object"&&c!==null))throw new TypeError(`Second argument must be an array of strings: ${i}`);let s=i.map(String),a=s.find(c=>c.includes("\0"));if(a!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${a}`);if(!lr(o))throw new TypeError(`Last argument must be an options object: ${o}`);return[n,s,o]};import{ChildProcess as a4e}from"child_process";import{StringDecoder as t4e}from"string_decoder";var{toString:aae}=Object.prototype,cae=t=>aae.call(t)==="[object ArrayBuffer]",vr=t=>aae.call(t)==="[object Uint8Array]",Fa=t=>new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r4e=new TextEncoder,lae=t=>r4e.encode(t),n4e=new TextDecoder,F0=t=>n4e.decode(t),uae=(t,e)=>i4e(t,e).join(""),i4e=(t,e)=>{if(e==="utf8"&&t.every(o=>typeof o=="string"))return t;let r=new t4e(e),n=t.map(o=>typeof o=="string"?lae(o):o).map(o=>r.write(o)),i=r.end();return i===""?n:[...n,i]},fE=t=>t.length===1&&vr(t[0])?t[0]:Ez(o4e(t)),o4e=t=>t.map(e=>typeof e=="string"?lae(e):e),Ez=t=>{let e=new Uint8Array(s4e(t)),r=0;for(let n of t)e.set(n,r),r+=n.length;return e},s4e=t=>{let e=0;for(let r of t)e+=r.length;return e};var hae=t=>Array.isArray(t)&&Array.isArray(t.raw),mae=(t,e)=>{let r=[];for(let[o,s]of t.entries())r=c4e({templates:t,expressions:e,tokens:r,index:o,template:s});if(r.length===0)throw new TypeError("Template script must not be empty");let[n,...i]=r;return[n,i,{}]},c4e=({templates:t,expressions:e,tokens:r,index:n,template:i})=>{if(i===void 0)throw new TypeError(`Invalid backslash sequence: ${t.raw[n]}`);let{nextTokens:o,leadingWhitespaces:s,trailingWhitespaces:a}=l4e(i,t.raw[n]),c=fae(r,o,s);if(n===e.length)return c;let l=e[n],u=Array.isArray(l)?l.map(d=>pae(d)):[pae(l)];return fae(c,u,a)},l4e=(t,e)=>{if(e.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let r=[],n=0,i=dae.has(e[0]);for(let s=0,a=0;s<t.length;s+=1,a+=1){let c=e[a];if(dae.has(c))n!==s&&r.push(t.slice(n,s)),n=s+1;else if(c==="\\"){let l=e[a+1];l===`
103
103
  `?(s-=1,a+=1):l==="u"&&e[a+2]==="{"?a=e.indexOf("}",a+3):a+=u4e[l]??1}}let o=n===t.length;return o||r.push(t.slice(n)),{nextTokens:r,leadingWhitespaces:i,trailingWhitespaces:o}},dae=new Set([" "," ","\r",`
104
104
  `]),u4e={x:3,u:5},fae=(t,e,r)=>r||t.length===0||e.length===0?[...t,...e]:[...t.slice(0,-1),`${t.at(-1)}${e[0]}`,...e.slice(1)],pae=t=>{let e=typeof t;if(e==="string")return t;if(e==="number")return String(t);if(lr(t)&&("stdout"in t||"isMaxBuffer"in t))return d4e(t);throw t instanceof a4e||Object.prototype.toString.call(t)==="[object Promise]"?new TypeError("Unexpected subprocess in template expression. Please use ${await subprocess} instead of ${subprocess}."):new TypeError(`Unexpected "${e}" in template expression`)},d4e=({stdout:t})=>{if(typeof t=="string")return t;if(vr(t))return F0(t);throw t===void 0?new TypeError(`Missing result.stdout in template expression. This is probably due to the previous subprocess' "stdout" option.`):new TypeError(`Unexpected "${typeof t}" stdout in template expression`)};import{spawnSync as m3e}from"child_process";import{debuglog as f4e}from"util";import vz from"process";var Lo=t=>z0.includes(t),z0=[vz.stdin,vz.stdout,vz.stderr],Xi=["stdin","stdout","stderr"],j0=t=>Xi[t]??`stdio[${t}]`;var _ae=t=>{let e={...t};for(let r of wz)e[r]=bz(t,r);return e},bz=(t,e)=>{let r=Array.from({length:p4e(t)+1}),n=h4e(t[e],r,e);return S4e(n,e)},p4e=({stdio:t})=>Array.isArray(t)?Math.max(t.length,Xi.length):Xi.length,h4e=(t,e,r)=>lr(t)?m4e(t,e,r):e.fill(t),m4e=(t,e,r)=>{for(let n of Object.keys(t).sort(g4e))for(let i of _4e(n,r,e))e[i]=t[n];return e},g4e=(t,e)=>gae(t)<gae(e)?1:-1,gae=t=>t==="stdout"||t==="stderr"?0:t==="all"?2:1,_4e=(t,e,r)=>{if(t==="ipc")return[r.length-1];let n=Tz(t);if(n===void 0||n===0)throw new TypeError(`"${e}.${t}" is invalid.
105
105
  It must be "${e}.stdout", "${e}.stderr", "${e}.all", "${e}.ipc", or "${e}.fd3", "${e}.fd4" (and so on).`);if(n>=r.length)throw new TypeError(`"${e}.${t}" is invalid: that file descriptor does not exist.
@@ -141,7 +141,7 @@ For example, you can use the \`pathToFileURL()\` method of the \`url\` core modu
141
141
  `,LF:`
142
142
  `,concatBytes:uj},D6e=(t,e)=>{let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r},L6e={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:D6e};import{Buffer as U6e}from"buffer";var Due=(t,e)=>t?void 0:F6e.bind(void 0,e),F6e=function*(t,e){if(typeof e!="string"&&!vr(e)&&!U6e.isBuffer(e))throw new TypeError(`The \`${t}\` option's transform must use "objectMode: true" to receive as input: ${typeof e}.`);yield e},Lue=(t,e)=>t?z6e.bind(void 0,e):j6e.bind(void 0,e),z6e=function*(t,e){Uue(t,e),yield e},j6e=function*(t,e){if(Uue(t,e),typeof e!="string"&&!vr(e))throw new TypeError(`The \`${t}\` option's function must yield a string or an Uint8Array, not ${typeof e}.`);yield e},Uue=(t,e)=>{if(e==null)throw new TypeError(`The \`${t}\` option's function must not call \`yield ${e}\`.
143
143
  Instead, \`yield\` should either be called with a value, or not be called at all. For example:
144
- if (condition) { yield value; }`)};import{Buffer as B6e}from"buffer";import{StringDecoder as q6e}from"string_decoder";var PC=(t,e,r)=>{if(r)return;if(t)return{transform:V6e.bind(void 0,new TextEncoder)};let n=new q6e(e);return{transform:G6e.bind(void 0,n),final:H6e.bind(void 0,n)}},V6e=function*(t,e){B6e.isBuffer(e)?yield Fa(e):typeof e=="string"?yield t.encode(e):yield e},G6e=function*(t,e){yield vr(e)?t.write(e):e},H6e=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Fue}from"util";var fj=Fue(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),OC=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Y6e}=e[r];for await(let i of n(t))yield*OC(i,e,r+1)},zue=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*W6e(r,Number(e),t)},W6e=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*OC(n,r,e+1)},jue=Fue(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),Y6e=function*(t){yield t};var pj=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Bue=(t,e)=>[...e.flatMap(r=>[...Ad(r,t,0)]),...bE(t)],Ad=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Z6e}=e[r];for(let i of n(t))yield*Ad(i,e,r+1)},bE=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*K6e(r,Number(e),t)},K6e=function*(t,e,r){if(t!==void 0)for(let n of t())yield*Ad(n,r,e+1)},Z6e=function*(t){yield t};var hj=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:o},{encoding:s})=>{let a={},c=Vue(t,s,o),l=wd(e),u=wd(r),d=l?fj.bind(void 0,OC,a):pj.bind(void 0,Ad),f=l||u?fj.bind(void 0,zue,a):pj.bind(void 0,bE),p=l||u?jue.bind(void 0,a):void 0;return{stream:new J6e({writableObjectMode:n,writableHighWaterMark:que(n),readableObjectMode:i,readableHighWaterMark:que(i),transform(m,g,_){d([m,c,0],this,_)},flush(m){f([c],this,m)},destroy:p})}},NC=(t,e,r,n)=>{let i=e.filter(({type:s})=>s==="generator"),o=n?i.reverse():i;for(let{value:s,optionName:a}of o){let c=Vue(s,r,a);t=Bue(c,t)}return t},Vue=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:o},s,a)=>{let c={};return[{transform:Due(n,a)},PC(r,s,n),IC(r,o,n,c),{transform:t,final:e},{transform:Lue(i,a)},$ue({binary:r,preserveNewlines:o,readableObjectMode:i,state:c})].filter(Boolean)};var Gue=(t,e)=>{for(let r of X6e(t))Q6e(t,r,e)},X6e=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),Q6e=(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 ${fl[a]} with synchronous methods.`)}let s=i.map(({contents:a})=>a).map(a=>e3e(a,n));r.input=fE(s)},e3e=(t,e)=>{let r=NC(t,e,"utf8",!0);return t3e(r),fE(r)},t3e=t=>{let e=t.find(r=>typeof r!="string"&&!vr(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 o3e,appendFileSync as s3e}from"fs";var kC=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&Ch(r,n)&&!wi.has(e)&&r3e(n)&&(t.some(({type:i,value:o})=>i==="native"&&n3e.has(o))||t.every(({type:i})=>Qi.has(i))),r3e=t=>t===1||t===2,n3e=new Set(["pipe","overlapped"]),Hue=async(t,e,r,n)=>{for await(let i of t)i3e(e)||Yue(i,r,n)},Wue=(t,e,r)=>{for(let n of t)Yue(n,e,r)},i3e=t=>t._readableState.pipes.length>0,Yue=(t,e,r)=>{let n=W0(t);Os({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var Kue=({fileDescriptors:t,syncResult:{output:e},options:r,isMaxBuffer:n,verboseInfo:i})=>{if(e===null)return{output:Array.from({length:3})};let o={},s=new Set([]);return{output:e.map((c,l)=>a3e({result:c,fileDescriptors:t,fdNumber:l,state:o,outputFiles:s,isMaxBuffer:n,verboseInfo:i},r)),...o}},a3e=({result:t,fileDescriptors:e,fdNumber:r,state:n,outputFiles:i,isMaxBuffer:o,verboseInfo:s},{buffer:a,encoding:c,lines:l,stripFinalNewline:u,maxBuffer:d})=>{if(t===null)return;let f=Zle(t,o,d),p=Fa(f),{stdioItems:h,objectMode:m}=e[r],g=c3e([p],h,c,n),{serializedResult:_,finalResult:v=_}=l3e({chunks:g,objectMode:m,encoding:c,lines:l,stripFinalNewline:u,fdNumber:r});u3e({serializedResult:_,fdNumber:r,state:n,verboseInfo:s,encoding:c,stdioItems:h,objectMode:m});let w=a[r]?v:void 0;try{return n.error===void 0&&d3e(_,h,i),w}catch(y){return n.error=y,w}},c3e=(t,e,r,n)=>{try{return NC(t,e,r,!1)}catch(i){return n.error=i,t}},l3e=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:o})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:fE(t)};let s=uae(t,r);return n[o]?{serializedResult:s,finalResult:dj(s,!i[o],e)}:{serializedResult:s}},u3e=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:o,objectMode:s})=>{if(!kC({stdioItems:o,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=dj(t,!1,s);try{Wue(a,e,n)}catch(c){r.error??=c}},d3e=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:o})=>RC.has(o))){let o=typeof n=="string"?n:n.toString();i||r.has(o)?s3e(n,t):(r.add(o),o3e(n,t))}};var Zue=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,Ba(e,r,"all")]:Array.isArray(e)?[Ba(t,r,"all"),...e]:vr(t)&&vr(e)?Ez([t,e]):`${t}${e}`};import{once as mj}from"events";var Jue=async(t,e)=>{let[r,n]=await f3e(t);return e.isForcefullyTerminated??=!1,[r,n]},f3e=async t=>{let[e,r]=await Promise.allSettled([mj(t,"spawn"),mj(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?Xue(t):r.value},Xue=async t=>{try{return await mj(t,"exit")}catch{return Xue(t)}},Que=async t=>{let[e,r]=await t;if(!p3e(e,r)&&gj(e,r))throw new Uo;return[e,r]},p3e=(t,e)=>t===void 0&&e===void 0,gj=(t,e)=>t!==0||e!==null;var ede=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let o=h3e(t,e,r),s=o?.code==="ETIMEDOUT",a=Kle(o,n,i);return{resultError:o,exitCode:e,signal:r,timedOut:s,isMaxBuffer:a}},h3e=(t,e,r)=>t!==void 0?t:gj(e,r)?new Uo:void 0;var tde=(t,e,r)=>{let{file:n,commandArguments:i,command:o,escapedCommand:s,startTime:a,verboseInfo:c,options:l,fileDescriptors:u}=g3e(t,e,r),d=S3e({file:n,commandArguments:i,options:l,command:o,escapedCommand:s,verboseInfo:c,fileDescriptors:u,startTime:a});return Uh(d,c,l)},g3e=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:o,verboseInfo:s}=K0(t,e,r),a=_3e(r),{file:c,commandArguments:l,options:u}=mC(t,e,a);y3e(u);let d=Oue(u,s);return{file:c,commandArguments:l,command:n,escapedCommand:i,startTime:o,verboseInfo:s,options:u,fileDescriptors:d}},_3e=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,y3e=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&MC("ipcInput"),t&&MC("ipc: true"),r&&MC("detached: true"),n&&MC("cancelSignal")},MC=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},S3e=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:o,fileDescriptors:s,startTime:a})=>{let c=E3e({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:a});if(c.failed)return c;let{resultError:l,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p}=ede(c,r),{output:h,error:m=l}=Kue({fileDescriptors:s,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:o}),g=h.map((v,w)=>Ba(v,r,w)),_=Ba(Zue(h,r),r,"all");return b3e({error:m,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p,stdio:g,all:_,options:r,command:n,escapedCommand:i,startTime:a})},E3e=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:o,startTime:s})=>{try{Gue(o,r);let a=v3e(r);return m3e(...gC(t,e,a))}catch(a){return Lh({error:a,command:n,escapedCommand:i,fileDescriptors:o,options:r,startTime:s,isSync:!0})}},v3e=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:TC(e)}),b3e=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:o,all:s,options:a,command:c,escapedCommand:l,startTime:u})=>t===void 0?wC({command:c,escapedCommand:l,stdio:o,all:s,ipcOutput:[],options:a,startTime:u}):vE({error:t,command:c,escapedCommand:l,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:o,all:s,ipcOutput:[],options:a,startTime:u,isSync:!0});import{setMaxListeners as lYe}from"events";import{spawn as uYe}from"child_process";import sde from"process";import{once as _j,on as T3e}from"events";var rde=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:o}={})=>(Oh({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:lC(t)}),w3e({anyProcess:t,channel:e,isSubprocess:r,filter:o,reference:i})),w3e=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{oC(e,i);let o=dl(t,e,r),s=new AbortController;try{return await Promise.race([A3e(o,n,s),x3e(o,r,s),R3e(o,r,s)])}catch(a){throw Nh(t),a}finally{s.abort(),sC(e,i)}},A3e=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await _j(t,"message",{signal:r});return n}for await(let[n]of T3e(t,"message",{signal:r}))if(e(n))return n},x3e=async(t,e,{signal:r})=>{await _j(t,"disconnect",{signal:r}),Bce(e)},R3e=async(t,e,{signal:r})=>{let[n]=await _j(t,"strict:error",{signal:r});throw rC(n,e)};import{once as ide,on as C3e}from"events";var ode=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>yj({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),yj=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:o})=>{Oh({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:lC(t)}),oC(e,o);let s=dl(t,e,r),a=new AbortController,c={};return I3e(t,s,a),P3e({ipcEmitter:s,isSubprocess:r,controller:a,state:c}),O3e({anyProcess:t,channel:e,ipcEmitter:s,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:o})},I3e=async(t,e,r)=>{try{await ide(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},P3e=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await ide(t,"strict:error",{signal:r.signal});n.error=rC(i,e),r.abort()}catch{}},O3e=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:o,state:s,reference:a}){try{for await(let[c]of C3e(r,"message",{signal:o.signal}))nde(s),yield c}catch{nde(s)}finally{o.abort(),sC(e,a),n||Nh(t),i&&await t}},nde=({error:t})=>{if(t)throw t};var ade=(t,{ipc:e})=>{Object.assign(t,lde(t,!1,e))},cde=()=>{let t=sde,e=!0,r=sde.channel!==void 0;return{...lde(t,e,r),getCancelSignal:mle.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},lde=(t,e,r)=>({sendMessage:pC.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:rde.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:ode.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as N3e}from"child_process";import{PassThrough as k3e,Readable as M3e,Writable as $3e,Duplex as D3e}from"stream";var ude=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:o,verboseInfo:s})=>{cj(n);let a=new N3e;L3e(a,n),Object.assign(a,{readable:U3e,writable:F3e,duplex:z3e});let c=Lh({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:o,isSync:!1}),l=j3e(c,s,i);return{subprocess:a,promise:l}},L3e=(t,e)=>{let r=TE(),n=TE(),i=TE(),o=Array.from({length:e.length-3},TE),s=TE(),a=[r,n,i,...o];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:s,stdio:a})},TE=()=>{let t=new k3e;return t.end(),t},U3e=()=>new M3e({read(){}}),F3e=()=>new $3e({write(){}}),z3e=()=>new D3e({read(){},write(){}}),j3e=async(t,e,r)=>Uh(t,e,r);import{createReadStream as dde,createWriteStream as fde}from"fs";import{Buffer as B3e}from"buffer";import{Readable as wE,Writable as q3e,Duplex as V3e}from"stream";var hde=(t,e)=>CC(G3e,t,e,!1),AE=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${fl[t]}.`)},pde={fileNumber:AE,generator:hj,asyncGenerator:hj,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:V3e.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},G3e={input:{...pde,fileUrl:({value:t})=>({stream:dde(t)}),filePath:({value:{file:t}})=>({stream:dde(t)}),webStream:({value:t})=>({stream:wE.fromWeb(t)}),iterable:({value:t})=>({stream:wE.from(t)}),asyncIterable:({value:t})=>({stream:wE.from(t)}),string:({value:t})=>({stream:wE.from(t)}),uint8Array:({value:t})=>({stream:wE.from(B3e.from(t))})},output:{...pde,fileUrl:({value:t})=>({stream:fde(t)}),filePath:({value:{file:t,append:e}})=>({stream:fde(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:q3e.fromWeb(t)}),iterable:AE,asyncIterable:AE,string:AE,uint8Array:AE}};import{on as H3e,once as mde}from"events";import{PassThrough as W3e,getDefaultHighWaterMark as Y3e}from"stream";import{finished as yde}from"stream/promises";function xd(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)Ej(i);let e=t.some(({readableObjectMode:i})=>i),r=K3e(t,e),n=new Sj({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var K3e=(t,e)=>{if(t.length===0)return Y3e(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},Sj=class extends W3e{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#o=Symbol("unpipe");#i=new WeakMap;add(e){if(Ej(e),this.#e.has(e))return;this.#e.add(e),this.#n??=Z3e(this,this.#e,this.#o);let r=Q3e({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#t,onFinished:this.#n,unpipeEvent:this.#o});this.#i.set(e,r),e.pipe(this,{end:!1})}async remove(e){if(Ej(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)}},Z3e=async(t,e,r)=>{$C(t,gde);let n=new AbortController;try{await Promise.race([J3e(t,n),X3e(t,e,r,n)])}finally{n.abort(),$C(t,-gde)}},J3e=async(t,{signal:e})=>{try{await yde(t,{signal:e,cleanup:!0})}catch(r){throw Sde(t,r),r}},X3e=async(t,e,r,{signal:n})=>{for await(let[i]of H3e(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},Ej=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Q3e=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:o,unpipeEvent:s})=>{$C(t,_de);let a=new AbortController;try{await Promise.race([eWe(o,e,a),tWe({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),rWe({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:s,controller:a})])}finally{a.abort(),$C(t,-_de)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?vj(t):nWe(t))},eWe=async(t,e,{signal:r})=>{try{await t,r.aborted||vj(e)}catch(n){r.aborted||Sde(e,n)}},tWe=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:o}})=>{try{await yde(e,{signal:o,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(s){if(o.aborted||!r.has(e))return;Ede(s)?i.add(e):vde(t,s)}},rWe=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:o}})=>{if(await mde(t,i,{signal:o}),!t.readable)return mde(o,"abort",{signal:o});e.delete(t),r.delete(t),n.delete(t)},nWe=t=>{t.writable&&t.end()},Sde=(t,e)=>{Ede(e)?vj(t):vde(t,e)},Ede=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",vj=t=>{(t.readable||t.writable)&&t.destroy()},vde=(t,e)=>{t.destroyed||(t.once("error",iWe),t.destroy(e))},iWe=()=>{},$C=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},gde=2,_de=1;import{finished as bde}from"stream/promises";var zh=(t,e)=>{t.pipe(e),oWe(t,e),sWe(t,e)},oWe=async(t,e)=>{if(!(Lo(t)||Lo(e))){try{await bde(t,{cleanup:!0,readable:!0,writable:!1})}catch{}bj(e)}},bj=t=>{t.writable&&t.end()},sWe=async(t,e)=>{if(!(Lo(t)||Lo(e))){try{await bde(e,{cleanup:!0,readable:!1,writable:!0})}catch{}Tj(t)}},Tj=t=>{t.readable&&t.destroy()};var Tde=(t,e,r)=>{let n=new Map;for(let[i,{stdioItems:o,direction:s}]of Object.entries(e)){for(let{stream:a}of o.filter(({type:c})=>Qi.has(c)))aWe(t,a,s,i);for(let{stream:a}of o.filter(({type:c})=>!Qi.has(c)))lWe({subprocess:t,stream:a,direction:s,fdNumber:i,pipeGroups:n,controller:r})}for(let[i,o]of n.entries()){let s=o.length===1?o[0]:xd(o);zh(s,i)}},aWe=(t,e,r,n)=>{r==="output"?zh(t.stdio[n],e):zh(e,t.stdio[n]);let i=cWe[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},cWe=["stdin","stdout","stderr"],lWe=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:o})=>{if(e===void 0)return;uWe(e,o);let[s,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(s)??[];i.set(s,[...c,a])},uWe=(t,{signal:e})=>{Lo(t)&&bd(t,dWe,e)},dWe=2;import{addAbortListener as hWe}from"events";var Rd=[];Rd.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Rd.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Rd.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var DC=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",wj=Symbol.for("signal-exit emitter"),Aj=globalThis,fWe=Object.defineProperty.bind(Object),xj=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(Aj[wj])return Aj[wj];fWe(Aj,wj,{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 o of this.listeners[e])i=o(r,n)===!0||i;return e==="exit"&&(i=this.emit("afterExit",r,n)||i),i}},LC=class{},pWe=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),Rj=class extends LC{onExit(){return()=>{}}load(){}unload(){}},Cj=class extends LC{#e=Ij.platform==="win32"?"SIGINT":"SIGHUP";#r=new xj;#t;#n;#o;#i={};#s=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of Rd)this.#i[r]=()=>{let n=this.#t.listeners(r),{count:i}=this.#r,o=e;if(typeof o.__signal_exit_emitter__=="object"&&typeof o.__signal_exit_emitter__.count=="number"&&(i+=o.__signal_exit_emitter__.count),n.length===i){this.unload();let s=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#e:r;s||e.kill(e.pid,a)}};this.#o=e.reallyExit,this.#n=e.emit}onExit(e,r){if(!DC(this.#t))return()=>{};this.#s===!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.#s){this.#s=!0,this.#r.count+=1;for(let e of Rd)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.#s&&(this.#s=!1,Rd.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.#o,this.#r.count-=1)}#a(e){return DC(this.#t)?(this.#t.exitCode=e||0,this.#r.emit("exit",this.#t.exitCode,null),this.#o.call(this.#t,this.#t.exitCode)):0}#c(e,...r){let n=this.#n;if(e==="exit"&&DC(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)}},Ij=globalThis.process,{onExit:wde,load:Mjt,unload:$jt}=pWe(DC(Ij)?new Cj(Ij):new Rj);var Ade=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=wde(()=>{t.kill()});hWe(n,()=>{i()})};var Rde=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let o=Y0(),{destination:s,destinationStream:a,destinationError:c,from:l,unpipeSignal:u}=mWe(r,n,i),{sourceStream:d,sourceError:f}=_We(t,l),{options:p,fileDescriptors:h}=ks.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:s,destinationStream:a,destinationError:c,unpipeSignal:u,fileDescriptors:h,startTime:o}},mWe=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:o,unpipeSignal:s}={}}=gWe(t,e,...r),a=iC(n,o);return{destination:n,destinationStream:a,from:i,unpipeSignal:s}}catch(n){return{destinationError:n}}},gWe=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(xde,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||yz(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,o,s]=U0(r,...n);return{destination:e(xde)(i,o,s),pipeOptions:s}}if(ks.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}`)},xde=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),_We=(t,e)=>{try{return{sourceStream:kh(t,e)}}catch(r){return{sourceError:r}}};var Ide=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:o,startTime:s})=>{let a=yWe({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw Pj({error:a,fileDescriptors:i,sourceOptions:o,startTime:s})},yWe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return Tj(t),n;if(e!==void 0)return bj(r),e},Pj=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>Lh({error:t,command:Cde,escapedCommand:Cde,fileDescriptors:e,options:r,startTime:n,isSync:!1}),Cde="source.pipe(destination)";var Pde=async t=>{let[{status:e,reason:r,value:n=r},{status:i,reason:o,value:s=o}]=await t;if(s.pipedFrom.includes(n)||s.pipedFrom.push(n),i==="rejected")throw s;if(e==="rejected")throw n;return s};import{finished as SWe}from"stream/promises";var Ode=(t,e,r)=>{let n=UC.has(e)?vWe(t,e):EWe(t,e);return bd(t,TWe,r.signal),bd(e,wWe,r.signal),bWe(e),n},EWe=(t,e)=>{let r=xd([t]);return zh(r,e),UC.set(e,r),r},vWe=(t,e)=>{let r=UC.get(e);return r.add(t),r},bWe=async t=>{try{await SWe(t,{cleanup:!0,readable:!1,writable:!0})}catch{}UC.delete(t)},UC=new WeakMap,TWe=2,wWe=1;import{aborted as AWe}from"util";var Nde=(t,e)=>t===void 0?[]:[xWe(t,e)],xWe=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:o})=>{await AWe(t,e),await r.remove(e);let s=new Error("Pipe canceled by `unpipeSignal` option.");throw Pj({error:s,fileDescriptors:n,sourceOptions:i,startTime:o})};var FC=(t,...e)=>{if(lr(e[0]))return FC.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=Rde(t,...e),i=RWe({...n,destination:r});return i.pipe=FC.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},RWe=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:o,destinationError:s,unpipeSignal:a,fileDescriptors:c,startTime:l})=>{let u=CWe(t,i);Ide({sourceStream:e,sourceError:n,destinationStream:o,destinationError:s,fileDescriptors:c,sourceOptions:r,startTime:l});let d=new AbortController;try{let f=Ode(e,o,d);return await Promise.race([Pde(u),...Nde(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:l})])}finally{d.abort()}},CWe=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as $We}from"timers/promises";import{on as IWe}from"events";import{getDefaultHighWaterMark as PWe}from"stream";var zC=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:o})=>{let s=new AbortController;return OWe(e,s),Mde({stream:t,controller:s,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:o})},OWe=async(t,e)=>{try{await t}catch{}finally{e.abort()}},Oj=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:o})=>{let s=new AbortController;NWe(e,s,t);let a=t.readableObjectMode&&!o;return Mde({stream:t,controller:s,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},NWe=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},Mde=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s})=>{let a=IWe(t,"data",{signal:e.signal,highWaterMark:kde,highWatermark:kde});return kWe({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s})},Nj=PWe(!0),kde=Nj,kWe=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s}){let a=MWe({binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s});try{for await(let[c]of t)yield*Ad(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*bE(a)}},MWe=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[PC(t,r,!e),IC(t,i,!n,{})].filter(Boolean);var $de=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,buffer:i,maxBuffer:o,lines:s,allMixed:a,stripFinalNewline:c,verboseInfo:l,streamInfo:u})=>{let d=DWe({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:l,streamInfo:u});if(!i){await Promise.all([LWe(t),d]);return}let f=lj(c,r),p=Oj({stream:t,onStreamEnd:e,lines:s,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([UWe({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:o,lines:s}),d]);return h},DWe=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:o,streamInfo:{fileDescriptors:s}})=>{if(!kC({stdioItems:s[r]?.stdioItems,encoding:n,verboseInfo:o,fdNumber:r}))return;let a=Oj({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await Hue(a,t,r,o)},LWe=async t=>{await $We(),t.readableFlowing===null&&t.resume()},UWe=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:o,lines:s})=>{try{return e||s?await EC(r,{maxBuffer:o}):i==="buffer"?new Uint8Array(await vC(r,{maxBuffer:o})):await Dh(r,{maxBuffer:o})}catch(a){return Dde(Hle({error:a,stream:t,readableObjectMode:e,lines:s,encoding:i,fdNumber:n}))}},kj=async t=>{try{return await t}catch(e){return Dde(e)}},Dde=({bufferedData:t})=>cae(t)?new Uint8Array(t):t;import{finished as FWe}from"stream/promises";var xE=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let o=zWe(t,r),s=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],FWe(t,{cleanup:!0,signal:s.signal})])}catch(a){o.stdinCleanedUp||qWe(a,e,r,n)}finally{s.abort()}},zWe=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&jWe(t,r,n),n},jWe=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{BWe(e,r),n.call(t,...i)}},BWe=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},qWe=(t,e,r,n)=>{if(!VWe(t,e,r,n))throw t},VWe=(t,e,r,n=!0)=>r.propagating?Lde(t)||jC(t):(r.propagating=!0,Mj(r,e)===n?Lde(t):jC(t)),Mj=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",jC=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Lde=t=>t?.code==="EPIPE";var Ude=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:o,verboseInfo:s,streamInfo:a})=>t.stdio.map((c,l)=>$j({stream:c,fdNumber:l,encoding:e,buffer:r[l],maxBuffer:n[l],lines:i[l],allMixed:!1,stripFinalNewline:o,verboseInfo:s,streamInfo:a})),$j=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:o,allMixed:s,stripFinalNewline:a,verboseInfo:c,streamInfo:l})=>{if(!t)return;let u=xE(t,e,l);if(Mj(l,e)){await u;return}let[d]=await Promise.all([$de({stream:t,onStreamEnd:u,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:o,allMixed:s,stripFinalNewline:a,verboseInfo:c,streamInfo:l}),u]);return d};var Fde=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?xd([t,e].filter(Boolean)):void 0,zde=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:o,verboseInfo:s,streamInfo:a})=>$j({...GWe(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:HWe(t),stripFinalNewline:o,verboseInfo:s,streamInfo:a}),GWe=({stdout:t,stderr:e,all:r},[,n,i])=>{let o=n||i;return o?n?i?{stream:r,buffer:o}:{stream:t,buffer:o}:{stream:e,buffer:o}:{stream:r,buffer:o}},HWe=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as WWe}from"events";var jde=t=>Ch(t,"ipc"),Bde=(t,e)=>{let r=W0(t);Os({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var qde=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:o})=>{if(!n)return i;let s=jde(o),a=za(e,"ipc"),c=za(r,"ipc");for await(let l of yj({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(Wle(t,i,c),i.push(l)),s&&Bde(l,o);return i},Vde=async(t,e)=>(await Promise.allSettled([t]),e);var Gde=async({subprocess:t,options:{encoding:e,buffer:r,maxBuffer:n,lines:i,timeoutDuration:o,cancelSignal:s,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:l,ipc:u,ipcInput:d},context:f,verboseInfo:p,fileDescriptors:h,originalStreams:m,onInternalError:g,controller:_})=>{let v=Jue(t,f),w={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:v,propagating:!1},y=Ude({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:w}),T=zde({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:w}),A=[],R=qde({subprocess:t,buffer:r,maxBuffer:n,ipc:u,ipcOutput:A,verboseInfo:p}),P=YWe(m,t,w),k=KWe(h,w);try{return await Promise.race([Promise.all([{},Que(v),Promise.all(y),T,R,Ale(t,d),...P,...k]),g,ZWe(t,_),...Ele(t,o,f,_),...jce({subprocess:t,cancelSignal:s,gracefulCancel:a,context:f,controller:_}),...yle({subprocess:t,cancelSignal:s,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:_})])}catch(L){return f.terminationReason??="other",Promise.all([{error:L},v,Promise.all(y.map(S=>kj(S))),kj(T),Vde(R,A),Promise.allSettled(P),Promise.allSettled(k)])}},YWe=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:xE(n,i,r)),KWe=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:o=i})=>zo(o,{checkOpen:!1})&&!Lo(o)).map(({type:i,value:o,stream:s=o})=>xE(s,n,e,{isSameDirection:Qi.has(i),stopOnExit:i==="native"}))),ZWe=async(t,{signal:e})=>{let[r]=await WWe(t,"error",{signal:e});throw r};var Hde=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),RE=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),o=Ns();return i.push(o),{resolve:o.resolve.bind(o),promises:i}},jh=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 JWe}from"stream";import{callbackify as XWe}from"util";import{finished as Wde}from"stream/promises";var Dj=async t=>{if(t!==void 0)try{await Lj(t)}catch{}},Yde=async t=>{if(t!==void 0)try{await Uj(t)}catch{}},Lj=async t=>{await Wde(t,{cleanup:!0,readable:!1,writable:!0})},Uj=async t=>{await Wde(t,{cleanup:!0,readable:!0,writable:!1})},BC=async(t,e)=>{if(await t,e)throw e},qC=(t,e,r)=>{r&&!jC(r)?t.destroy(r):e&&t.destroy()};var Kde=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:o=!0}={})=>{let s=i||wi.has(r),{subprocessStdout:a,waitReadableDestroy:c}=Fj(t,n,e),{readableEncoding:l,readableObjectMode:u,readableHighWaterMark:d}=zj(a,s),{read:f,onStdoutDataDone:p}=jj({subprocessStdout:a,subprocess:t,binary:s,encoding:r,preserveNewlines:o}),h=new JWe({read:f,destroy:XWe(qj.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:u,encoding:l});return Bj({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},Fj=(t,e,r)=>{let n=kh(t,e),i=RE(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},zj=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:Nj},jj=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let o=Ns(),s=zC({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){QWe(this,s,o)},onStdoutDataDone:o}},QWe=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},Bj=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await Uj(t),await n,await Dj(i),await e,r.readable&&r.push(null)}catch(o){await Dj(i),Zde(r,o)}},qj=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await jh(r,e)&&(Zde(t,n),await BC(e,n))},Zde=(t,e)=>{qC(t,t.readable,e)};import{Writable as eYe}from"stream";import{callbackify as Jde}from"util";var Xde=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:o}=Vj(t,r,e),s=new eYe({...Gj(n,t,i),destroy:Jde(Wj.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:o})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return Hj(n,s),s},Vj=(t,e,r)=>{let n=iC(t,e),i=RE(r,n,"writableFinal"),o=RE(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:o}},Gj=(t,e,r)=>({write:tYe.bind(void 0,t),final:Jde(rYe.bind(void 0,t,e,r))}),tYe=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},rYe=async(t,e,r)=>{await jh(r,e)&&(t.writable&&t.end(),await e)},Hj=async(t,e,r)=>{try{await Lj(t),e.writable&&e.end()}catch(n){await Yde(r),Qde(e,n)}},Wj=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await jh(r,e),await jh(n,e)&&(Qde(t,i),await BC(e,i))},Qde=(t,e)=>{qC(t,t.writable,e)};import{Duplex as nYe}from"stream";import{callbackify as iYe}from"util";var efe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:o=!0,preserveNewlines:s=!0}={})=>{let a=o||wi.has(r),{subprocessStdout:c,waitReadableDestroy:l}=Fj(t,n,e),{subprocessStdin:u,waitWritableFinal:d,waitWritableDestroy:f}=Vj(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=zj(c,a),{read:g,onStdoutDataDone:_}=jj({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:s}),v=new nYe({read:g,...Gj(u,t,d),destroy:iYe(oYe.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 Bj({subprocessStdout:c,onStdoutDataDone:_,readable:v,subprocess:t,subprocessStdin:u}),Hj(u,v,c),v},oYe=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:o},s)=>{await Promise.all([qj({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},s),Wj({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:o},s)])};var Yj=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let o=n||wi.has(e),s=kh(t,r),a=zC({subprocessStdout:s,subprocess:t,binary:o,shouldEncode:!0,encoding:e,preserveNewlines:i});return sYe(a,s,t)},sYe=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var tfe=(t,{encoding:e})=>{let r=Hde();t.readable=Kde.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=Xde.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=efe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=Yj.bind(void 0,t,e),t[Symbol.asyncIterator]=Yj.bind(void 0,t,e,{})};var rfe=(t,e)=>{for(let[r,n]of cYe){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},aYe=(async()=>{})().constructor.prototype,cYe=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(aYe,t)]);var nfe=(t,e,r,n)=>{let{file:i,commandArguments:o,command:s,escapedCommand:a,startTime:c,verboseInfo:l,options:u,fileDescriptors:d}=dYe(t,e,r),{subprocess:f,promise:p}=pYe({file:i,commandArguments:o,options:u,startTime:c,verboseInfo:l,command:s,escapedCommand:a,fileDescriptors:d});return f.pipe=FC.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),rfe(f,p),ks.set(f,{options:u,fileDescriptors:d}),f},dYe=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:o,verboseInfo:s}=K0(t,e,r),{file:a,commandArguments:c,options:l}=mC(t,e,r),u=fYe(l),d=hde(u,s);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:o,verboseInfo:s,options:u,fileDescriptors:d}},fYe=({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}},pYe=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:o,escapedCommand:s,fileDescriptors:a})=>{let c;try{c=uYe(...gC(t,e,r))}catch(h){return ude({error:h,command:o,escapedCommand:s,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let l=new AbortController;lYe(Number.POSITIVE_INFINITY,l.signal);let u=[...c.stdio];Tde(c,a,l),Ade(c,r,l);let d={},f=Ns();c.kill=Fce.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:l}),c.all=Fde(c,r),tfe(c,r),ade(c,r);let p=hYe({subprocess:c,options:r,startTime:n,verboseInfo:i,fileDescriptors:a,originalStreams:u,command:o,escapedCommand:s,context:d,onInternalError:f,controller:l});return{subprocess:c,promise:p}},hYe=async({subprocess:t,options:e,startTime:r,verboseInfo:n,fileDescriptors:i,originalStreams:o,command:s,escapedCommand:a,context:c,onInternalError:l,controller:u})=>{let[d,[f,p],h,m,g]=await Gde({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:o,onInternalError:l,controller:u});u.abort(),l.resolve();let _=h.map((y,T)=>Ba(y,e,T)),v=Ba(m,e,"all"),w=mYe({errorInfo:d,exitCode:f,signal:p,stdio:_,all:v,ipcOutput:g,context:c,options:e,command:s,escapedCommand:a,startTime:r});return Uh(w,n,e)},mYe=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:o,context:s,options:a,command:c,escapedCommand:l,startTime:u})=>"error"in t?vE({error:t.error,command:c,escapedCommand:l,timedOut:s.terminationReason==="timeout",isCanceled:s.terminationReason==="cancel"||s.terminationReason==="gracefulCancel",isGracefullyCanceled:s.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof Ms,isForcefullyTerminated:s.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:o,options:a,startTime:u,isSync:!1}):wC({command:c,escapedCommand:l,stdio:n,all:i,ipcOutput:o,options:a,startTime:u});var VC=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,gYe(n,t[n],i)]));return{...t,...r}},gYe=(t,e,r)=>_Ye.has(t)&&lr(e)&&lr(r)?{...e,...r}:r,_Ye=new Set(["env",...wz]);var pl=(t,e,r,n)=>{let i=(s,a,c)=>pl(s,a,r,c),o=(...s)=>yYe({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...s);return n!==void 0&&n(o,i,e),o},yYe=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},o,...s)=>{if(lr(o))return i(t,VC(r,o),n);let{file:a,commandArguments:c,options:l,isSync:u}=SYe({mapArguments:t,firstArgument:o,nextArguments:s,deepOptions:e,boundOptions:r});return u?tde(a,c,l):nfe(a,c,l,i)},SYe=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let o=hae(e)?mae(e,r):[e,...r],[s,a,c]=U0(...o),l=VC(VC(n,i),c),{file:u=s,commandArguments:d=a,options:f=l,isSync:p=!1}=t({file:s,commandArguments:a,options:l});return{file:u,commandArguments:d,options:f,isSync:p}};var ife=({file:t,commandArguments:e})=>sfe(t,e),ofe=({file:t,commandArguments:e})=>({...sfe(t,e),isSync:!0}),sfe=(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]=EYe(t);return{file:r,commandArguments:n}},EYe=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(vYe)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},vYe=/ +/g;var afe=(t,e,r)=>{t.sync=e(bYe,r),t.s=t.sync},cfe=({options:t})=>lfe(t),bYe=({options:t})=>({...lfe(t),isSync:!0}),lfe=t=>({options:{...TYe(t),...t}}),TYe=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},ufe={preferLocal:!0};var dfe=pl(()=>({})),wqt=pl(()=>({isSync:!0})),ffe=pl(ife),Aqt=pl(ofe),xqt=pl(ble),Rqt=pl(cfe,{},ufe,afe),{sendMessage:Cqt,getOneMessage:Iqt,getEachMessage:Pqt,getCancelSignal:Oqt}=cde();var pfe=!1,hfe=()=>{pfe=!0},qa=()=>pfe;var CE=null,mfe=t=>(CE&&CE.destroy(),CE=new Ds({totalAllowedTime:t}),CE),gfe=()=>CE;var Ds=class{constructor({totalAllowedTime:e}){this.withStageTimer=async(e,r,n,{interruptible:i=!0}={})=>{if(this.isTimeExpired())throw new Error(`${e} stage did not complete in the allowed time. Time has already expired.`);if(i&&qa())throw new Error(`Aborting ${e} stage \u2014 shutting down`);let o=this.onTimesUp(()=>{throw new Error(`${e} stage did not complete in the allowed time.`)}),s=null,a=null;n!==void 0&&(a=new Promise((u,d)=>{s=setTimeout(()=>{d(new Error(`${e} stage exceeded its maximum duration of ${n}ms`))},n)}));let c=Date.now(),l="success";try{return await x0({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(u){throw l="failure",u}finally{K.timing("stage.duration",Date.now()-c,{stage:e,outcome:l}),o(),s&&clearTimeout(s)}};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 _fe={name:"@netlify/agent-runner-cli",type:"module",version:"1.176.0-PAW-469.4",description:"CLI tool for running Netlify agents",main:"./dist/index.js",types:"./dist/index.d.ts",exports:"./dist/index.js",bin:{"agent-runner-cli":"./dist/bin.js","agent-runner-cli-local":"./dist/bin-local.js"},files:["dist/**/*.js","dist/**/*.d.ts","dist/skills/**","patches","scripts"],scripts:{prebuild:"rm -rf dist",build:"tsup",dev:"tsup --watch",prepare:"husky install node_modules/@netlify/eslint-config-node/.husky/",prepublishOnly:"npm ci && npm test",prepack:"npm run build",test:"run-s build format test:dev",format:"run-s build format:check-fix:*","format:ci":"run-s build format:check:*","format:check-fix:lint":"run-e format:check:lint format:fix:lint","format:check:lint":'eslint --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:fix:lint":'eslint --fix --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:check-fix:prettier":"run-e format:check:prettier format:fix:prettier","format:check:prettier":'prettier --check --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"format:fix:prettier":'prettier --write --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"test:dev":"run-s build test:dev:*","test:ci":"run-s build test:ci:*","test:dev:vitest":"LOG=0 vitest --exclude '**/integration/**'","test:ci:vitest":"LOG=0 vitest run --coverage --exclude '**/integration/**'","test:smoke":"node scripts/smoke-dist.js","test:integration":"vitest run test/integration/","test:integration:codex":"vitest run test/integration/codex.test.ts","test:integration:claude":"vitest run test/integration/claude.test.ts","test:integration:gemini":"vitest run test/integration/gemini.test.ts","test:integration:opencode":"vitest run test/integration/opencode.test.ts","test:integration: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.219","@anthropic-ai/sdk":"0.91.1","@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.1",minimist:"^1.2.8",openai:"6.34.0",zod:"^4.4.3"}};var RYe=AYe(import.meta.url),CYe=Va.dirname(RYe),IYe=xYe(import.meta.url),Bh=ie("shell"),Kj=new Set,yfe={preferLocal:!0},Ft=(t,e,r)=>{let[n,i]=PYe(e,r),o={...yfe,...i},s=dfe(t,n,o);Efe(s,o),Tfe(s);let a=r?.idleTimeout;return a&&a>0&&bfe(s,a),s},Sfe=(t,e)=>{let r={...yfe,...e},n=ffe(t,r);return Efe(n,r),Tfe(n),e?.idleTimeout&&e.idleTimeout>0&&bfe(n,e.idleTimeout),n},PYe=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},Efe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ls.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ls.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new nE).pipe(Ls.stdout),t.stderr?.pipe(new nE).pipe(Ls.stderr);return}t.stdout?.pipe(Ls.stdout),t.stderr?.pipe(Ls.stderr)},Zj=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ls.kill(-t.pid,e),Bh.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return Bh.error("Error killing process:",r),!1}},vfe=t=>Zj(t,"SIGKILL"),bfe=(t,e)=>{let r=null,n=()=>{Bh.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),Zj(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(Bh.log(`Force killing idle process ${t.pid}`),vfe(t))},5e3)},i=()=>{r&&clearTimeout(r),r=setTimeout(n,e)};i(),t.stdout?.on("data",i),t.stderr?.on("data",i);let o=()=>{r&&(clearTimeout(r),r=null)};t.on("exit",o),t.on("error",o)},Tfe=t=>{Kj.add(t);let e=gfe();if(e){let r=e.onTimesUp(()=>{Bh.log(`Global timer expired, killing process ${t.pid}`),Zj(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(Bh.log(`Force killing process ${t.pid} after timeout`),vfe(t))},5e3)});t.on("exit",()=>{Kj.delete(t),r()}),t.on("error",()=>{Kj.delete(t),r()})}};function HC(t,e){return!!jo(t,e)}function jo(t,e){if(!Ls.env.NETLIFY_LOCAL_MODE)try{let i=IYe.resolve(_fe.name),o=Va.dirname(i);for(;o!==Va.dirname(o);){let s=Va.dirname(o);if(Va.basename(s)==="node_modules"){let a=Va.join(s,".bin",e);if(GC.existsSync(a))return a;break}o=s}}catch(i){console.error("Could not resolve package.json",i)}if(Ls.env.NODE_PATH){let i=Va.join(Ls.env.NODE_PATH,".bin",e);if(GC.existsSync(i))return i}let r=Va.join(t,"node_modules",".bin",e);if(GC.existsSync(r))return r;let n=Va.join(CYe,"..","node_modules",".bin",e);if(GC.existsSync(n))return n}var wfe=ie("repo"),Cfe="runner-diffs-",KC=t=>`${Cfe}${t}-`,Ife=async t=>{let e=Rfe.tmpdir(),r;try{r=await WC.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(Cfe)&&!n.startsWith(KC(t))).map(n=>WC.rm(YC.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},nr=(t,e={})=>Ft("git",t,{...e,env:{...e.env,NETLIFY_INTERNAL_GIT:"1"}}),ZC=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{wfe.info("Getting runner diffs");let n=await Qj(r),{hasChanges:i}=n,{status:o}=n;if(!i)return{hasChanges:!1};if(!e){let h=eB(o);await LYe(h,r)}wfe.info("Changes after processing"),await Xj(r);let s=await OE(o,r);if(await Jj(s,r),i=await MYe(r),!i)return{hasChanges:!1,ignored:s};await nr(["commit","-m","Agent runner [skip ci]"],{cwd:r});let a=await WC.mkdtemp(YC.join(Rfe.tmpdir(),KC(t.sessionId))),c=async({from:h,to:m,fileName:g,binary:_})=>{let v=YC.join(a,g);await nr([..._?["diff",h,m,"--binary"]:["diff",h,m],`--output=${v}`],{stdio:["ignore","ignore","pipe"],cwd:r});let{size:y}=await WC.stat(v);return{path:v,size:y}},l=await c({from:t.runSha,to:"HEAD",fileName:"session.patch"});if(i=l.size>0,!i)return await xfe(r),{hasChanges:!1,ignored:s};let u=await c({from:t.runSha,to:"HEAD",fileName:"session-binary.patch",binary:!0}),d,f;if(t.sha){d=await c({from:t.sha,to:"HEAD",fileName:"cumulative.patch"});let h=await c({from:t.sha,to:"HEAD",fileName:"cumulative-binary.patch",binary:!0});await IE(d,h)||(f=h)}await xfe(r),K.distribution("diff.size",u.size);let p={hasChanges:!0,diff:l,resultDiff:d,ignored:s};return await IE(l,u)||(p.diffBinary=u),f&&(p.resultDiffBinary=f),p},Afe=async t=>{let e=OYe("sha256");for await(let r of NYe(t))e.update(r);return e.digest("hex")},IE=async(t,e)=>t.size===e.size&&await Afe(t.path)===await Afe(e.path),xfe=async(t=process.cwd())=>{process.env.NETLIFY_LOCAL_MODE&&await nr(["reset","--soft","HEAD~1"],{cwd:t})},Jj=async(t=[],e=process.cwd())=>{await nr(["add",".",...t],{cwd:e})},Xj=async(t=process.cwd())=>{let e=await nr(["status","-s"],{cwd:t});return String(e.stdout??"")},Pfe=/.. (.+)?\.log$/,kYe=[Pfe],Qj=async(t=process.cwd())=>{let e=await Xj(t);return{hasChanges:(e.trim().length===0?[]:e.split(`
144
+ if (condition) { yield value; }`)};import{Buffer as B6e}from"buffer";import{StringDecoder as q6e}from"string_decoder";var PC=(t,e,r)=>{if(r)return;if(t)return{transform:V6e.bind(void 0,new TextEncoder)};let n=new q6e(e);return{transform:G6e.bind(void 0,n),final:H6e.bind(void 0,n)}},V6e=function*(t,e){B6e.isBuffer(e)?yield Fa(e):typeof e=="string"?yield t.encode(e):yield e},G6e=function*(t,e){yield vr(e)?t.write(e):e},H6e=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Fue}from"util";var fj=Fue(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),OC=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Y6e}=e[r];for await(let i of n(t))yield*OC(i,e,r+1)},zue=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*W6e(r,Number(e),t)},W6e=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*OC(n,r,e+1)},jue=Fue(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),Y6e=function*(t){yield t};var pj=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Bue=(t,e)=>[...e.flatMap(r=>[...Ad(r,t,0)]),...bE(t)],Ad=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Z6e}=e[r];for(let i of n(t))yield*Ad(i,e,r+1)},bE=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*K6e(r,Number(e),t)},K6e=function*(t,e,r){if(t!==void 0)for(let n of t())yield*Ad(n,r,e+1)},Z6e=function*(t){yield t};var hj=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:o},{encoding:s})=>{let a={},c=Vue(t,s,o),l=wd(e),u=wd(r),d=l?fj.bind(void 0,OC,a):pj.bind(void 0,Ad),f=l||u?fj.bind(void 0,zue,a):pj.bind(void 0,bE),p=l||u?jue.bind(void 0,a):void 0;return{stream:new J6e({writableObjectMode:n,writableHighWaterMark:que(n),readableObjectMode:i,readableHighWaterMark:que(i),transform(m,g,_){d([m,c,0],this,_)},flush(m){f([c],this,m)},destroy:p})}},NC=(t,e,r,n)=>{let i=e.filter(({type:s})=>s==="generator"),o=n?i.reverse():i;for(let{value:s,optionName:a}of o){let c=Vue(s,r,a);t=Bue(c,t)}return t},Vue=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:o},s,a)=>{let c={};return[{transform:Due(n,a)},PC(r,s,n),IC(r,o,n,c),{transform:t,final:e},{transform:Lue(i,a)},$ue({binary:r,preserveNewlines:o,readableObjectMode:i,state:c})].filter(Boolean)};var Gue=(t,e)=>{for(let r of X6e(t))Q6e(t,r,e)},X6e=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),Q6e=(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 ${fl[a]} with synchronous methods.`)}let s=i.map(({contents:a})=>a).map(a=>e3e(a,n));r.input=fE(s)},e3e=(t,e)=>{let r=NC(t,e,"utf8",!0);return t3e(r),fE(r)},t3e=t=>{let e=t.find(r=>typeof r!="string"&&!vr(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 o3e,appendFileSync as s3e}from"fs";var kC=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&Ch(r,n)&&!wi.has(e)&&r3e(n)&&(t.some(({type:i,value:o})=>i==="native"&&n3e.has(o))||t.every(({type:i})=>Qi.has(i))),r3e=t=>t===1||t===2,n3e=new Set(["pipe","overlapped"]),Hue=async(t,e,r,n)=>{for await(let i of t)i3e(e)||Yue(i,r,n)},Wue=(t,e,r)=>{for(let n of t)Yue(n,e,r)},i3e=t=>t._readableState.pipes.length>0,Yue=(t,e,r)=>{let n=W0(t);Os({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var Kue=({fileDescriptors:t,syncResult:{output:e},options:r,isMaxBuffer:n,verboseInfo:i})=>{if(e===null)return{output:Array.from({length:3})};let o={},s=new Set([]);return{output:e.map((c,l)=>a3e({result:c,fileDescriptors:t,fdNumber:l,state:o,outputFiles:s,isMaxBuffer:n,verboseInfo:i},r)),...o}},a3e=({result:t,fileDescriptors:e,fdNumber:r,state:n,outputFiles:i,isMaxBuffer:o,verboseInfo:s},{buffer:a,encoding:c,lines:l,stripFinalNewline:u,maxBuffer:d})=>{if(t===null)return;let f=Zle(t,o,d),p=Fa(f),{stdioItems:h,objectMode:m}=e[r],g=c3e([p],h,c,n),{serializedResult:_,finalResult:v=_}=l3e({chunks:g,objectMode:m,encoding:c,lines:l,stripFinalNewline:u,fdNumber:r});u3e({serializedResult:_,fdNumber:r,state:n,verboseInfo:s,encoding:c,stdioItems:h,objectMode:m});let w=a[r]?v:void 0;try{return n.error===void 0&&d3e(_,h,i),w}catch(y){return n.error=y,w}},c3e=(t,e,r,n)=>{try{return NC(t,e,r,!1)}catch(i){return n.error=i,t}},l3e=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:o})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:fE(t)};let s=uae(t,r);return n[o]?{serializedResult:s,finalResult:dj(s,!i[o],e)}:{serializedResult:s}},u3e=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:o,objectMode:s})=>{if(!kC({stdioItems:o,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=dj(t,!1,s);try{Wue(a,e,n)}catch(c){r.error??=c}},d3e=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:o})=>RC.has(o))){let o=typeof n=="string"?n:n.toString();i||r.has(o)?s3e(n,t):(r.add(o),o3e(n,t))}};var Zue=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,Ba(e,r,"all")]:Array.isArray(e)?[Ba(t,r,"all"),...e]:vr(t)&&vr(e)?Ez([t,e]):`${t}${e}`};import{once as mj}from"events";var Jue=async(t,e)=>{let[r,n]=await f3e(t);return e.isForcefullyTerminated??=!1,[r,n]},f3e=async t=>{let[e,r]=await Promise.allSettled([mj(t,"spawn"),mj(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?Xue(t):r.value},Xue=async t=>{try{return await mj(t,"exit")}catch{return Xue(t)}},Que=async t=>{let[e,r]=await t;if(!p3e(e,r)&&gj(e,r))throw new Uo;return[e,r]},p3e=(t,e)=>t===void 0&&e===void 0,gj=(t,e)=>t!==0||e!==null;var ede=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let o=h3e(t,e,r),s=o?.code==="ETIMEDOUT",a=Kle(o,n,i);return{resultError:o,exitCode:e,signal:r,timedOut:s,isMaxBuffer:a}},h3e=(t,e,r)=>t!==void 0?t:gj(e,r)?new Uo:void 0;var tde=(t,e,r)=>{let{file:n,commandArguments:i,command:o,escapedCommand:s,startTime:a,verboseInfo:c,options:l,fileDescriptors:u}=g3e(t,e,r),d=S3e({file:n,commandArguments:i,options:l,command:o,escapedCommand:s,verboseInfo:c,fileDescriptors:u,startTime:a});return Uh(d,c,l)},g3e=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:o,verboseInfo:s}=K0(t,e,r),a=_3e(r),{file:c,commandArguments:l,options:u}=mC(t,e,a);y3e(u);let d=Oue(u,s);return{file:c,commandArguments:l,command:n,escapedCommand:i,startTime:o,verboseInfo:s,options:u,fileDescriptors:d}},_3e=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,y3e=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&MC("ipcInput"),t&&MC("ipc: true"),r&&MC("detached: true"),n&&MC("cancelSignal")},MC=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},S3e=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:o,fileDescriptors:s,startTime:a})=>{let c=E3e({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:a});if(c.failed)return c;let{resultError:l,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p}=ede(c,r),{output:h,error:m=l}=Kue({fileDescriptors:s,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:o}),g=h.map((v,w)=>Ba(v,r,w)),_=Ba(Zue(h,r),r,"all");return b3e({error:m,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p,stdio:g,all:_,options:r,command:n,escapedCommand:i,startTime:a})},E3e=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:o,startTime:s})=>{try{Gue(o,r);let a=v3e(r);return m3e(...gC(t,e,a))}catch(a){return Lh({error:a,command:n,escapedCommand:i,fileDescriptors:o,options:r,startTime:s,isSync:!0})}},v3e=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:TC(e)}),b3e=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:o,all:s,options:a,command:c,escapedCommand:l,startTime:u})=>t===void 0?wC({command:c,escapedCommand:l,stdio:o,all:s,ipcOutput:[],options:a,startTime:u}):vE({error:t,command:c,escapedCommand:l,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:o,all:s,ipcOutput:[],options:a,startTime:u,isSync:!0});import{setMaxListeners as lYe}from"events";import{spawn as uYe}from"child_process";import sde from"process";import{once as _j,on as T3e}from"events";var rde=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:o}={})=>(Oh({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:lC(t)}),w3e({anyProcess:t,channel:e,isSubprocess:r,filter:o,reference:i})),w3e=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{oC(e,i);let o=dl(t,e,r),s=new AbortController;try{return await Promise.race([A3e(o,n,s),x3e(o,r,s),R3e(o,r,s)])}catch(a){throw Nh(t),a}finally{s.abort(),sC(e,i)}},A3e=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await _j(t,"message",{signal:r});return n}for await(let[n]of T3e(t,"message",{signal:r}))if(e(n))return n},x3e=async(t,e,{signal:r})=>{await _j(t,"disconnect",{signal:r}),Bce(e)},R3e=async(t,e,{signal:r})=>{let[n]=await _j(t,"strict:error",{signal:r});throw rC(n,e)};import{once as ide,on as C3e}from"events";var ode=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>yj({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),yj=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:o})=>{Oh({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:lC(t)}),oC(e,o);let s=dl(t,e,r),a=new AbortController,c={};return I3e(t,s,a),P3e({ipcEmitter:s,isSubprocess:r,controller:a,state:c}),O3e({anyProcess:t,channel:e,ipcEmitter:s,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:o})},I3e=async(t,e,r)=>{try{await ide(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},P3e=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await ide(t,"strict:error",{signal:r.signal});n.error=rC(i,e),r.abort()}catch{}},O3e=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:o,state:s,reference:a}){try{for await(let[c]of C3e(r,"message",{signal:o.signal}))nde(s),yield c}catch{nde(s)}finally{o.abort(),sC(e,a),n||Nh(t),i&&await t}},nde=({error:t})=>{if(t)throw t};var ade=(t,{ipc:e})=>{Object.assign(t,lde(t,!1,e))},cde=()=>{let t=sde,e=!0,r=sde.channel!==void 0;return{...lde(t,e,r),getCancelSignal:mle.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},lde=(t,e,r)=>({sendMessage:pC.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:rde.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:ode.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as N3e}from"child_process";import{PassThrough as k3e,Readable as M3e,Writable as $3e,Duplex as D3e}from"stream";var ude=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:o,verboseInfo:s})=>{cj(n);let a=new N3e;L3e(a,n),Object.assign(a,{readable:U3e,writable:F3e,duplex:z3e});let c=Lh({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:o,isSync:!1}),l=j3e(c,s,i);return{subprocess:a,promise:l}},L3e=(t,e)=>{let r=TE(),n=TE(),i=TE(),o=Array.from({length:e.length-3},TE),s=TE(),a=[r,n,i,...o];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:s,stdio:a})},TE=()=>{let t=new k3e;return t.end(),t},U3e=()=>new M3e({read(){}}),F3e=()=>new $3e({write(){}}),z3e=()=>new D3e({read(){},write(){}}),j3e=async(t,e,r)=>Uh(t,e,r);import{createReadStream as dde,createWriteStream as fde}from"fs";import{Buffer as B3e}from"buffer";import{Readable as wE,Writable as q3e,Duplex as V3e}from"stream";var hde=(t,e)=>CC(G3e,t,e,!1),AE=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${fl[t]}.`)},pde={fileNumber:AE,generator:hj,asyncGenerator:hj,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:V3e.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},G3e={input:{...pde,fileUrl:({value:t})=>({stream:dde(t)}),filePath:({value:{file:t}})=>({stream:dde(t)}),webStream:({value:t})=>({stream:wE.fromWeb(t)}),iterable:({value:t})=>({stream:wE.from(t)}),asyncIterable:({value:t})=>({stream:wE.from(t)}),string:({value:t})=>({stream:wE.from(t)}),uint8Array:({value:t})=>({stream:wE.from(B3e.from(t))})},output:{...pde,fileUrl:({value:t})=>({stream:fde(t)}),filePath:({value:{file:t,append:e}})=>({stream:fde(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:q3e.fromWeb(t)}),iterable:AE,asyncIterable:AE,string:AE,uint8Array:AE}};import{on as H3e,once as mde}from"events";import{PassThrough as W3e,getDefaultHighWaterMark as Y3e}from"stream";import{finished as yde}from"stream/promises";function xd(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)Ej(i);let e=t.some(({readableObjectMode:i})=>i),r=K3e(t,e),n=new Sj({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var K3e=(t,e)=>{if(t.length===0)return Y3e(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},Sj=class extends W3e{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#o=Symbol("unpipe");#i=new WeakMap;add(e){if(Ej(e),this.#e.has(e))return;this.#e.add(e),this.#n??=Z3e(this,this.#e,this.#o);let r=Q3e({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#t,onFinished:this.#n,unpipeEvent:this.#o});this.#i.set(e,r),e.pipe(this,{end:!1})}async remove(e){if(Ej(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)}},Z3e=async(t,e,r)=>{$C(t,gde);let n=new AbortController;try{await Promise.race([J3e(t,n),X3e(t,e,r,n)])}finally{n.abort(),$C(t,-gde)}},J3e=async(t,{signal:e})=>{try{await yde(t,{signal:e,cleanup:!0})}catch(r){throw Sde(t,r),r}},X3e=async(t,e,r,{signal:n})=>{for await(let[i]of H3e(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},Ej=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Q3e=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:o,unpipeEvent:s})=>{$C(t,_de);let a=new AbortController;try{await Promise.race([eWe(o,e,a),tWe({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),rWe({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:s,controller:a})])}finally{a.abort(),$C(t,-_de)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?vj(t):nWe(t))},eWe=async(t,e,{signal:r})=>{try{await t,r.aborted||vj(e)}catch(n){r.aborted||Sde(e,n)}},tWe=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:o}})=>{try{await yde(e,{signal:o,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(s){if(o.aborted||!r.has(e))return;Ede(s)?i.add(e):vde(t,s)}},rWe=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:o}})=>{if(await mde(t,i,{signal:o}),!t.readable)return mde(o,"abort",{signal:o});e.delete(t),r.delete(t),n.delete(t)},nWe=t=>{t.writable&&t.end()},Sde=(t,e)=>{Ede(e)?vj(t):vde(t,e)},Ede=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",vj=t=>{(t.readable||t.writable)&&t.destroy()},vde=(t,e)=>{t.destroyed||(t.once("error",iWe),t.destroy(e))},iWe=()=>{},$C=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},gde=2,_de=1;import{finished as bde}from"stream/promises";var zh=(t,e)=>{t.pipe(e),oWe(t,e),sWe(t,e)},oWe=async(t,e)=>{if(!(Lo(t)||Lo(e))){try{await bde(t,{cleanup:!0,readable:!0,writable:!1})}catch{}bj(e)}},bj=t=>{t.writable&&t.end()},sWe=async(t,e)=>{if(!(Lo(t)||Lo(e))){try{await bde(e,{cleanup:!0,readable:!1,writable:!0})}catch{}Tj(t)}},Tj=t=>{t.readable&&t.destroy()};var Tde=(t,e,r)=>{let n=new Map;for(let[i,{stdioItems:o,direction:s}]of Object.entries(e)){for(let{stream:a}of o.filter(({type:c})=>Qi.has(c)))aWe(t,a,s,i);for(let{stream:a}of o.filter(({type:c})=>!Qi.has(c)))lWe({subprocess:t,stream:a,direction:s,fdNumber:i,pipeGroups:n,controller:r})}for(let[i,o]of n.entries()){let s=o.length===1?o[0]:xd(o);zh(s,i)}},aWe=(t,e,r,n)=>{r==="output"?zh(t.stdio[n],e):zh(e,t.stdio[n]);let i=cWe[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},cWe=["stdin","stdout","stderr"],lWe=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:o})=>{if(e===void 0)return;uWe(e,o);let[s,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(s)??[];i.set(s,[...c,a])},uWe=(t,{signal:e})=>{Lo(t)&&bd(t,dWe,e)},dWe=2;import{addAbortListener as hWe}from"events";var Rd=[];Rd.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Rd.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Rd.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var DC=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",wj=Symbol.for("signal-exit emitter"),Aj=globalThis,fWe=Object.defineProperty.bind(Object),xj=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(Aj[wj])return Aj[wj];fWe(Aj,wj,{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 o of this.listeners[e])i=o(r,n)===!0||i;return e==="exit"&&(i=this.emit("afterExit",r,n)||i),i}},LC=class{},pWe=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),Rj=class extends LC{onExit(){return()=>{}}load(){}unload(){}},Cj=class extends LC{#e=Ij.platform==="win32"?"SIGINT":"SIGHUP";#r=new xj;#t;#n;#o;#i={};#s=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of Rd)this.#i[r]=()=>{let n=this.#t.listeners(r),{count:i}=this.#r,o=e;if(typeof o.__signal_exit_emitter__=="object"&&typeof o.__signal_exit_emitter__.count=="number"&&(i+=o.__signal_exit_emitter__.count),n.length===i){this.unload();let s=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#e:r;s||e.kill(e.pid,a)}};this.#o=e.reallyExit,this.#n=e.emit}onExit(e,r){if(!DC(this.#t))return()=>{};this.#s===!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.#s){this.#s=!0,this.#r.count+=1;for(let e of Rd)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.#s&&(this.#s=!1,Rd.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.#o,this.#r.count-=1)}#a(e){return DC(this.#t)?(this.#t.exitCode=e||0,this.#r.emit("exit",this.#t.exitCode,null),this.#o.call(this.#t,this.#t.exitCode)):0}#c(e,...r){let n=this.#n;if(e==="exit"&&DC(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)}},Ij=globalThis.process,{onExit:wde,load:Mjt,unload:$jt}=pWe(DC(Ij)?new Cj(Ij):new Rj);var Ade=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=wde(()=>{t.kill()});hWe(n,()=>{i()})};var Rde=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let o=Y0(),{destination:s,destinationStream:a,destinationError:c,from:l,unpipeSignal:u}=mWe(r,n,i),{sourceStream:d,sourceError:f}=_We(t,l),{options:p,fileDescriptors:h}=ks.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:s,destinationStream:a,destinationError:c,unpipeSignal:u,fileDescriptors:h,startTime:o}},mWe=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:o,unpipeSignal:s}={}}=gWe(t,e,...r),a=iC(n,o);return{destination:n,destinationStream:a,from:i,unpipeSignal:s}}catch(n){return{destinationError:n}}},gWe=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(xde,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||yz(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,o,s]=U0(r,...n);return{destination:e(xde)(i,o,s),pipeOptions:s}}if(ks.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}`)},xde=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),_We=(t,e)=>{try{return{sourceStream:kh(t,e)}}catch(r){return{sourceError:r}}};var Ide=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:o,startTime:s})=>{let a=yWe({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw Pj({error:a,fileDescriptors:i,sourceOptions:o,startTime:s})},yWe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return Tj(t),n;if(e!==void 0)return bj(r),e},Pj=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>Lh({error:t,command:Cde,escapedCommand:Cde,fileDescriptors:e,options:r,startTime:n,isSync:!1}),Cde="source.pipe(destination)";var Pde=async t=>{let[{status:e,reason:r,value:n=r},{status:i,reason:o,value:s=o}]=await t;if(s.pipedFrom.includes(n)||s.pipedFrom.push(n),i==="rejected")throw s;if(e==="rejected")throw n;return s};import{finished as SWe}from"stream/promises";var Ode=(t,e,r)=>{let n=UC.has(e)?vWe(t,e):EWe(t,e);return bd(t,TWe,r.signal),bd(e,wWe,r.signal),bWe(e),n},EWe=(t,e)=>{let r=xd([t]);return zh(r,e),UC.set(e,r),r},vWe=(t,e)=>{let r=UC.get(e);return r.add(t),r},bWe=async t=>{try{await SWe(t,{cleanup:!0,readable:!1,writable:!0})}catch{}UC.delete(t)},UC=new WeakMap,TWe=2,wWe=1;import{aborted as AWe}from"util";var Nde=(t,e)=>t===void 0?[]:[xWe(t,e)],xWe=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:o})=>{await AWe(t,e),await r.remove(e);let s=new Error("Pipe canceled by `unpipeSignal` option.");throw Pj({error:s,fileDescriptors:n,sourceOptions:i,startTime:o})};var FC=(t,...e)=>{if(lr(e[0]))return FC.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=Rde(t,...e),i=RWe({...n,destination:r});return i.pipe=FC.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},RWe=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:o,destinationError:s,unpipeSignal:a,fileDescriptors:c,startTime:l})=>{let u=CWe(t,i);Ide({sourceStream:e,sourceError:n,destinationStream:o,destinationError:s,fileDescriptors:c,sourceOptions:r,startTime:l});let d=new AbortController;try{let f=Ode(e,o,d);return await Promise.race([Pde(u),...Nde(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:l})])}finally{d.abort()}},CWe=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as $We}from"timers/promises";import{on as IWe}from"events";import{getDefaultHighWaterMark as PWe}from"stream";var zC=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:o})=>{let s=new AbortController;return OWe(e,s),Mde({stream:t,controller:s,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:o})},OWe=async(t,e)=>{try{await t}catch{}finally{e.abort()}},Oj=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:o})=>{let s=new AbortController;NWe(e,s,t);let a=t.readableObjectMode&&!o;return Mde({stream:t,controller:s,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},NWe=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},Mde=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s})=>{let a=IWe(t,"data",{signal:e.signal,highWaterMark:kde,highWatermark:kde});return kWe({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s})},Nj=PWe(!0),kde=Nj,kWe=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s}){let a=MWe({binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s});try{for await(let[c]of t)yield*Ad(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*bE(a)}},MWe=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[PC(t,r,!e),IC(t,i,!n,{})].filter(Boolean);var $de=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,buffer:i,maxBuffer:o,lines:s,allMixed:a,stripFinalNewline:c,verboseInfo:l,streamInfo:u})=>{let d=DWe({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:l,streamInfo:u});if(!i){await Promise.all([LWe(t),d]);return}let f=lj(c,r),p=Oj({stream:t,onStreamEnd:e,lines:s,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([UWe({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:o,lines:s}),d]);return h},DWe=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:o,streamInfo:{fileDescriptors:s}})=>{if(!kC({stdioItems:s[r]?.stdioItems,encoding:n,verboseInfo:o,fdNumber:r}))return;let a=Oj({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await Hue(a,t,r,o)},LWe=async t=>{await $We(),t.readableFlowing===null&&t.resume()},UWe=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:o,lines:s})=>{try{return e||s?await EC(r,{maxBuffer:o}):i==="buffer"?new Uint8Array(await vC(r,{maxBuffer:o})):await Dh(r,{maxBuffer:o})}catch(a){return Dde(Hle({error:a,stream:t,readableObjectMode:e,lines:s,encoding:i,fdNumber:n}))}},kj=async t=>{try{return await t}catch(e){return Dde(e)}},Dde=({bufferedData:t})=>cae(t)?new Uint8Array(t):t;import{finished as FWe}from"stream/promises";var xE=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let o=zWe(t,r),s=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],FWe(t,{cleanup:!0,signal:s.signal})])}catch(a){o.stdinCleanedUp||qWe(a,e,r,n)}finally{s.abort()}},zWe=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&jWe(t,r,n),n},jWe=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{BWe(e,r),n.call(t,...i)}},BWe=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},qWe=(t,e,r,n)=>{if(!VWe(t,e,r,n))throw t},VWe=(t,e,r,n=!0)=>r.propagating?Lde(t)||jC(t):(r.propagating=!0,Mj(r,e)===n?Lde(t):jC(t)),Mj=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",jC=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Lde=t=>t?.code==="EPIPE";var Ude=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:o,verboseInfo:s,streamInfo:a})=>t.stdio.map((c,l)=>$j({stream:c,fdNumber:l,encoding:e,buffer:r[l],maxBuffer:n[l],lines:i[l],allMixed:!1,stripFinalNewline:o,verboseInfo:s,streamInfo:a})),$j=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:o,allMixed:s,stripFinalNewline:a,verboseInfo:c,streamInfo:l})=>{if(!t)return;let u=xE(t,e,l);if(Mj(l,e)){await u;return}let[d]=await Promise.all([$de({stream:t,onStreamEnd:u,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:o,allMixed:s,stripFinalNewline:a,verboseInfo:c,streamInfo:l}),u]);return d};var Fde=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?xd([t,e].filter(Boolean)):void 0,zde=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:o,verboseInfo:s,streamInfo:a})=>$j({...GWe(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:HWe(t),stripFinalNewline:o,verboseInfo:s,streamInfo:a}),GWe=({stdout:t,stderr:e,all:r},[,n,i])=>{let o=n||i;return o?n?i?{stream:r,buffer:o}:{stream:t,buffer:o}:{stream:e,buffer:o}:{stream:r,buffer:o}},HWe=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as WWe}from"events";var jde=t=>Ch(t,"ipc"),Bde=(t,e)=>{let r=W0(t);Os({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var qde=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:o})=>{if(!n)return i;let s=jde(o),a=za(e,"ipc"),c=za(r,"ipc");for await(let l of yj({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(Wle(t,i,c),i.push(l)),s&&Bde(l,o);return i},Vde=async(t,e)=>(await Promise.allSettled([t]),e);var Gde=async({subprocess:t,options:{encoding:e,buffer:r,maxBuffer:n,lines:i,timeoutDuration:o,cancelSignal:s,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:l,ipc:u,ipcInput:d},context:f,verboseInfo:p,fileDescriptors:h,originalStreams:m,onInternalError:g,controller:_})=>{let v=Jue(t,f),w={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:v,propagating:!1},y=Ude({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:w}),T=zde({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:w}),A=[],R=qde({subprocess:t,buffer:r,maxBuffer:n,ipc:u,ipcOutput:A,verboseInfo:p}),P=YWe(m,t,w),k=KWe(h,w);try{return await Promise.race([Promise.all([{},Que(v),Promise.all(y),T,R,Ale(t,d),...P,...k]),g,ZWe(t,_),...Ele(t,o,f,_),...jce({subprocess:t,cancelSignal:s,gracefulCancel:a,context:f,controller:_}),...yle({subprocess:t,cancelSignal:s,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:_})])}catch(L){return f.terminationReason??="other",Promise.all([{error:L},v,Promise.all(y.map(S=>kj(S))),kj(T),Vde(R,A),Promise.allSettled(P),Promise.allSettled(k)])}},YWe=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:xE(n,i,r)),KWe=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:o=i})=>zo(o,{checkOpen:!1})&&!Lo(o)).map(({type:i,value:o,stream:s=o})=>xE(s,n,e,{isSameDirection:Qi.has(i),stopOnExit:i==="native"}))),ZWe=async(t,{signal:e})=>{let[r]=await WWe(t,"error",{signal:e});throw r};var Hde=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),RE=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),o=Ns();return i.push(o),{resolve:o.resolve.bind(o),promises:i}},jh=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 JWe}from"stream";import{callbackify as XWe}from"util";import{finished as Wde}from"stream/promises";var Dj=async t=>{if(t!==void 0)try{await Lj(t)}catch{}},Yde=async t=>{if(t!==void 0)try{await Uj(t)}catch{}},Lj=async t=>{await Wde(t,{cleanup:!0,readable:!1,writable:!0})},Uj=async t=>{await Wde(t,{cleanup:!0,readable:!0,writable:!1})},BC=async(t,e)=>{if(await t,e)throw e},qC=(t,e,r)=>{r&&!jC(r)?t.destroy(r):e&&t.destroy()};var Kde=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:o=!0}={})=>{let s=i||wi.has(r),{subprocessStdout:a,waitReadableDestroy:c}=Fj(t,n,e),{readableEncoding:l,readableObjectMode:u,readableHighWaterMark:d}=zj(a,s),{read:f,onStdoutDataDone:p}=jj({subprocessStdout:a,subprocess:t,binary:s,encoding:r,preserveNewlines:o}),h=new JWe({read:f,destroy:XWe(qj.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:u,encoding:l});return Bj({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},Fj=(t,e,r)=>{let n=kh(t,e),i=RE(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},zj=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:Nj},jj=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let o=Ns(),s=zC({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){QWe(this,s,o)},onStdoutDataDone:o}},QWe=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},Bj=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await Uj(t),await n,await Dj(i),await e,r.readable&&r.push(null)}catch(o){await Dj(i),Zde(r,o)}},qj=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await jh(r,e)&&(Zde(t,n),await BC(e,n))},Zde=(t,e)=>{qC(t,t.readable,e)};import{Writable as eYe}from"stream";import{callbackify as Jde}from"util";var Xde=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:o}=Vj(t,r,e),s=new eYe({...Gj(n,t,i),destroy:Jde(Wj.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:o})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return Hj(n,s),s},Vj=(t,e,r)=>{let n=iC(t,e),i=RE(r,n,"writableFinal"),o=RE(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:o}},Gj=(t,e,r)=>({write:tYe.bind(void 0,t),final:Jde(rYe.bind(void 0,t,e,r))}),tYe=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},rYe=async(t,e,r)=>{await jh(r,e)&&(t.writable&&t.end(),await e)},Hj=async(t,e,r)=>{try{await Lj(t),e.writable&&e.end()}catch(n){await Yde(r),Qde(e,n)}},Wj=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await jh(r,e),await jh(n,e)&&(Qde(t,i),await BC(e,i))},Qde=(t,e)=>{qC(t,t.writable,e)};import{Duplex as nYe}from"stream";import{callbackify as iYe}from"util";var efe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:o=!0,preserveNewlines:s=!0}={})=>{let a=o||wi.has(r),{subprocessStdout:c,waitReadableDestroy:l}=Fj(t,n,e),{subprocessStdin:u,waitWritableFinal:d,waitWritableDestroy:f}=Vj(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=zj(c,a),{read:g,onStdoutDataDone:_}=jj({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:s}),v=new nYe({read:g,...Gj(u,t,d),destroy:iYe(oYe.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 Bj({subprocessStdout:c,onStdoutDataDone:_,readable:v,subprocess:t,subprocessStdin:u}),Hj(u,v,c),v},oYe=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:o},s)=>{await Promise.all([qj({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},s),Wj({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:o},s)])};var Yj=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let o=n||wi.has(e),s=kh(t,r),a=zC({subprocessStdout:s,subprocess:t,binary:o,shouldEncode:!0,encoding:e,preserveNewlines:i});return sYe(a,s,t)},sYe=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var tfe=(t,{encoding:e})=>{let r=Hde();t.readable=Kde.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=Xde.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=efe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=Yj.bind(void 0,t,e),t[Symbol.asyncIterator]=Yj.bind(void 0,t,e,{})};var rfe=(t,e)=>{for(let[r,n]of cYe){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},aYe=(async()=>{})().constructor.prototype,cYe=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(aYe,t)]);var nfe=(t,e,r,n)=>{let{file:i,commandArguments:o,command:s,escapedCommand:a,startTime:c,verboseInfo:l,options:u,fileDescriptors:d}=dYe(t,e,r),{subprocess:f,promise:p}=pYe({file:i,commandArguments:o,options:u,startTime:c,verboseInfo:l,command:s,escapedCommand:a,fileDescriptors:d});return f.pipe=FC.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),rfe(f,p),ks.set(f,{options:u,fileDescriptors:d}),f},dYe=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:o,verboseInfo:s}=K0(t,e,r),{file:a,commandArguments:c,options:l}=mC(t,e,r),u=fYe(l),d=hde(u,s);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:o,verboseInfo:s,options:u,fileDescriptors:d}},fYe=({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}},pYe=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:o,escapedCommand:s,fileDescriptors:a})=>{let c;try{c=uYe(...gC(t,e,r))}catch(h){return ude({error:h,command:o,escapedCommand:s,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let l=new AbortController;lYe(Number.POSITIVE_INFINITY,l.signal);let u=[...c.stdio];Tde(c,a,l),Ade(c,r,l);let d={},f=Ns();c.kill=Fce.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:l}),c.all=Fde(c,r),tfe(c,r),ade(c,r);let p=hYe({subprocess:c,options:r,startTime:n,verboseInfo:i,fileDescriptors:a,originalStreams:u,command:o,escapedCommand:s,context:d,onInternalError:f,controller:l});return{subprocess:c,promise:p}},hYe=async({subprocess:t,options:e,startTime:r,verboseInfo:n,fileDescriptors:i,originalStreams:o,command:s,escapedCommand:a,context:c,onInternalError:l,controller:u})=>{let[d,[f,p],h,m,g]=await Gde({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:o,onInternalError:l,controller:u});u.abort(),l.resolve();let _=h.map((y,T)=>Ba(y,e,T)),v=Ba(m,e,"all"),w=mYe({errorInfo:d,exitCode:f,signal:p,stdio:_,all:v,ipcOutput:g,context:c,options:e,command:s,escapedCommand:a,startTime:r});return Uh(w,n,e)},mYe=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:o,context:s,options:a,command:c,escapedCommand:l,startTime:u})=>"error"in t?vE({error:t.error,command:c,escapedCommand:l,timedOut:s.terminationReason==="timeout",isCanceled:s.terminationReason==="cancel"||s.terminationReason==="gracefulCancel",isGracefullyCanceled:s.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof Ms,isForcefullyTerminated:s.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:o,options:a,startTime:u,isSync:!1}):wC({command:c,escapedCommand:l,stdio:n,all:i,ipcOutput:o,options:a,startTime:u});var VC=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,gYe(n,t[n],i)]));return{...t,...r}},gYe=(t,e,r)=>_Ye.has(t)&&lr(e)&&lr(r)?{...e,...r}:r,_Ye=new Set(["env",...wz]);var pl=(t,e,r,n)=>{let i=(s,a,c)=>pl(s,a,r,c),o=(...s)=>yYe({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...s);return n!==void 0&&n(o,i,e),o},yYe=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},o,...s)=>{if(lr(o))return i(t,VC(r,o),n);let{file:a,commandArguments:c,options:l,isSync:u}=SYe({mapArguments:t,firstArgument:o,nextArguments:s,deepOptions:e,boundOptions:r});return u?tde(a,c,l):nfe(a,c,l,i)},SYe=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let o=hae(e)?mae(e,r):[e,...r],[s,a,c]=U0(...o),l=VC(VC(n,i),c),{file:u=s,commandArguments:d=a,options:f=l,isSync:p=!1}=t({file:s,commandArguments:a,options:l});return{file:u,commandArguments:d,options:f,isSync:p}};var ife=({file:t,commandArguments:e})=>sfe(t,e),ofe=({file:t,commandArguments:e})=>({...sfe(t,e),isSync:!0}),sfe=(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]=EYe(t);return{file:r,commandArguments:n}},EYe=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(vYe)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},vYe=/ +/g;var afe=(t,e,r)=>{t.sync=e(bYe,r),t.s=t.sync},cfe=({options:t})=>lfe(t),bYe=({options:t})=>({...lfe(t),isSync:!0}),lfe=t=>({options:{...TYe(t),...t}}),TYe=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},ufe={preferLocal:!0};var dfe=pl(()=>({})),wqt=pl(()=>({isSync:!0})),ffe=pl(ife),Aqt=pl(ofe),xqt=pl(ble),Rqt=pl(cfe,{},ufe,afe),{sendMessage:Cqt,getOneMessage:Iqt,getEachMessage:Pqt,getCancelSignal:Oqt}=cde();var pfe=!1,hfe=()=>{pfe=!0},qa=()=>pfe;var CE=null,mfe=t=>(CE&&CE.destroy(),CE=new Ds({totalAllowedTime:t}),CE),gfe=()=>CE;var Ds=class{constructor({totalAllowedTime:e}){this.withStageTimer=async(e,r,n,{interruptible:i=!0}={})=>{if(this.isTimeExpired())throw new Error(`${e} stage did not complete in the allowed time. Time has already expired.`);if(i&&qa())throw new Error(`Aborting ${e} stage \u2014 shutting down`);let o=this.onTimesUp(()=>{throw new Error(`${e} stage did not complete in the allowed time.`)}),s=null,a=null;n!==void 0&&(a=new Promise((u,d)=>{s=setTimeout(()=>{d(new Error(`${e} stage exceeded its maximum duration of ${n}ms`))},n)}));let c=Date.now(),l="success";try{return await x0({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(u){throw l="failure",u}finally{Y.timing("stage.duration",Date.now()-c,{stage:e,outcome:l}),o(),s&&clearTimeout(s)}};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 _fe={name:"@netlify/agent-runner-cli",type:"module",version:"1.176.0-PAW-469.5",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.219","@anthropic-ai/sdk":"0.91.1","@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.1",minimist:"^1.2.8",openai:"6.34.0",zod:"^4.4.3"}};var RYe=AYe(import.meta.url),CYe=Va.dirname(RYe),IYe=xYe(import.meta.url),Bh=ie("shell"),Kj=new Set,yfe={preferLocal:!0},Ft=(t,e,r)=>{let[n,i]=PYe(e,r),o={...yfe,...i},s=dfe(t,n,o);Efe(s,o),Tfe(s);let a=r?.idleTimeout;return a&&a>0&&bfe(s,a),s},Sfe=(t,e)=>{let r={...yfe,...e},n=ffe(t,r);return Efe(n,r),Tfe(n),e?.idleTimeout&&e.idleTimeout>0&&bfe(n,e.idleTimeout),n},PYe=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},Efe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ls.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ls.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new nE).pipe(Ls.stdout),t.stderr?.pipe(new nE).pipe(Ls.stderr);return}t.stdout?.pipe(Ls.stdout),t.stderr?.pipe(Ls.stderr)},Zj=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ls.kill(-t.pid,e),Bh.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return Bh.error("Error killing process:",r),!1}},vfe=t=>Zj(t,"SIGKILL"),bfe=(t,e)=>{let r=null,n=()=>{Bh.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),Zj(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(Bh.log(`Force killing idle process ${t.pid}`),vfe(t))},5e3)},i=()=>{r&&clearTimeout(r),r=setTimeout(n,e)};i(),t.stdout?.on("data",i),t.stderr?.on("data",i);let o=()=>{r&&(clearTimeout(r),r=null)};t.on("exit",o),t.on("error",o)},Tfe=t=>{Kj.add(t);let e=gfe();if(e){let r=e.onTimesUp(()=>{Bh.log(`Global timer expired, killing process ${t.pid}`),Zj(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(Bh.log(`Force killing process ${t.pid} after timeout`),vfe(t))},5e3)});t.on("exit",()=>{Kj.delete(t),r()}),t.on("error",()=>{Kj.delete(t),r()})}};function HC(t,e){return!!jo(t,e)}function jo(t,e){if(!Ls.env.NETLIFY_LOCAL_MODE)try{let i=IYe.resolve(_fe.name),o=Va.dirname(i);for(;o!==Va.dirname(o);){let s=Va.dirname(o);if(Va.basename(s)==="node_modules"){let a=Va.join(s,".bin",e);if(GC.existsSync(a))return a;break}o=s}}catch(i){console.error("Could not resolve package.json",i)}if(Ls.env.NODE_PATH){let i=Va.join(Ls.env.NODE_PATH,".bin",e);if(GC.existsSync(i))return i}let r=Va.join(t,"node_modules",".bin",e);if(GC.existsSync(r))return r;let n=Va.join(CYe,"..","node_modules",".bin",e);if(GC.existsSync(n))return n}var wfe=ie("repo"),Cfe="runner-diffs-",KC=t=>`${Cfe}${t}-`,Ife=async t=>{let e=Rfe.tmpdir(),r;try{r=await WC.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(Cfe)&&!n.startsWith(KC(t))).map(n=>WC.rm(YC.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},nr=(t,e={})=>Ft("git",t,{...e,env:{...e.env,NETLIFY_INTERNAL_GIT:"1"}}),ZC=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{wfe.info("Getting runner diffs");let n=await Qj(r),{hasChanges:i}=n,{status:o}=n;if(!i)return{hasChanges:!1};if(!e){let h=eB(o);await LYe(h,r)}wfe.info("Changes after processing"),await Xj(r);let s=await OE(o,r);if(await Jj(s,r),i=await MYe(r),!i)return{hasChanges:!1,ignored:s};await nr(["commit","-m","Agent runner [skip ci]"],{cwd:r});let a=await WC.mkdtemp(YC.join(Rfe.tmpdir(),KC(t.sessionId))),c=async({from:h,to:m,fileName:g,binary:_})=>{let v=YC.join(a,g);await nr([..._?["diff",h,m,"--binary"]:["diff",h,m],`--output=${v}`],{stdio:["ignore","ignore","pipe"],cwd:r});let{size:y}=await WC.stat(v);return{path:v,size:y}},l=await c({from:t.runSha,to:"HEAD",fileName:"session.patch"});if(i=l.size>0,!i)return await xfe(r),{hasChanges:!1,ignored:s};let u=await c({from:t.runSha,to:"HEAD",fileName:"session-binary.patch",binary:!0}),d,f;if(t.sha){d=await c({from:t.sha,to:"HEAD",fileName:"cumulative.patch"});let h=await c({from:t.sha,to:"HEAD",fileName:"cumulative-binary.patch",binary:!0});await IE(d,h)||(f=h)}await xfe(r),Y.distribution("diff.size",u.size,{phase:"final"});let p={hasChanges:!0,diff:l,resultDiff:d,ignored:s};return await IE(l,u)||(p.diffBinary=u),f&&(p.resultDiffBinary=f),p},Afe=async t=>{let e=OYe("sha256");for await(let r of NYe(t))e.update(r);return e.digest("hex")},IE=async(t,e)=>t.size===e.size&&await Afe(t.path)===await Afe(e.path),xfe=async(t=process.cwd())=>{process.env.NETLIFY_LOCAL_MODE&&await nr(["reset","--soft","HEAD~1"],{cwd:t})},Jj=async(t=[],e=process.cwd())=>{await nr(["add",".",...t],{cwd:e})},Xj=async(t=process.cwd())=>{let e=await nr(["status","-s"],{cwd:t});return String(e.stdout??"")},Pfe=/.. (.+)?\.log$/,kYe=[Pfe],Qj=async(t=process.cwd())=>{let e=await Xj(t);return{hasChanges:(e.trim().length===0?[]:e.split(`
145
145
  `).filter(i=>kYe.some(s=>s instanceof RegExp?s.test(i):i===s)?!1:i[1]?.trim()!=="")).length!==0,status:e}},MYe=async(t=process.cwd())=>{try{return await nr(["diff","--staged","--quiet"],{cwd:t}),!1}catch{return!0}},PE=async(t=process.cwd())=>{let{stdout:e}=await nr(["rev-parse","HEAD"],{cwd:t});return String(e??"").trim()},$Ye=1,DYe=async t=>{try{return await nr(["rev-parse","--verify","--quiet","HEAD"],{cwd:t}),!0}catch(e){if(e.exitCode===$Ye)return!1;throw e}},Ofe=async(t=process.cwd())=>{if(!await DYe(t))return!0;let{stdout:e}=await nr(["ls-tree","--name-only","HEAD"],{cwd:t});return String(e??"").trim().length===0},Nfe=async(t=process.cwd())=>{let{stdout:e}=await nr(["rev-list","--max-parents=0","HEAD"],{cwd:t});return String(e??"").trim()},OE=async(t,e=process.cwd())=>{t||=await Xj(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(`
146
146
  `).forEach(i=>{r.forEach(s=>{let a=i===`?? ${s}`,c=i.startsWith(`?? ${s}/`)||i.startsWith(`?? ${s}${YC.sep}`);(a||c)&&n.push(`:!${s}`)});let o=i.match(Pfe)?.[1];o&&n.push(`:!${o}.log`)}),n},kfe=async(t=process.cwd())=>{await nr(["reset","--hard","HEAD"],{cwd:t})},Mfe=async(t=process.cwd())=>{let e=await nr(["clean","-fd","-e",".netlify"],{stdio:["ignore","pipe","pipe"],cwd:t});return String(e.stdout??"").split(`
147
147
  `).filter(r=>r.startsWith("Removing ")).map(r=>r.slice(9))},eB=t=>{let e=t.split(`
@@ -150,11 +150,11 @@ Instead, \`yield\` should either be called with a value, or not be called at all
150
150
  `):[]}};Ai=new WeakMap,xi=new WeakMap;Ha.NEWLINE_CHARS=new Set([`
151
151
  `,"\r"]);Ha.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function WYe(t,e){for(let i=e??0;i<t.length;i++){if(t[i]===10)return{preceding:i,index:i+1,carriage:!1};if(t[i]===13)return{preceding:i,index:i+1,carriage:!0}}return null}function Xfe(t){for(let n=0;n<t.length-1;n++){if(t[n]===10&&t[n+1]===10||t[n]===13&&t[n+1]===13)return n+2;if(t[n]===13&&t[n+1]===10&&n+3<t.length&&t[n+2]===13&&t[n+3]===10)return n+4}return-1}var tI={off:0,error:200,warn:300,info:400,debug:500},aB=(t,e,r)=>{if(t){if(Lfe(tI,t))return t;Fr(r).warn(`${e} was set to ${JSON.stringify(t)}, expected one of ${JSON.stringify(Object.keys(tI))}`)}};function $E(){}function eI(t,e,r){return!e||tI[t]>tI[r]?$E:e[t].bind(e)}var YYe={error:$E,warn:$E,info:$E,debug:$E},Qfe=new WeakMap;function Fr(t){let e=t.logger,r=t.logLevel??"off";if(!e)return YYe;let n=Qfe.get(e);if(n&&n[0]===r)return n[1];let i={error:eI("error",e,r),warn:eI("warn",e,r),info:eI("info",e,r),debug:eI("debug",e,r)};return Qfe.set(e,[r,i]),i}var Wa=t=>(t.options&&(t.options={...t.options},delete t.options.headers),t.headers&&(t.headers=Object.fromEntries((t.headers instanceof Headers?[...t.headers]:Object.entries(t.headers)).map(([e,r])=>[e,e.toLowerCase()==="x-api-key"||e.toLowerCase()==="authorization"||e.toLowerCase()==="cookie"||e.toLowerCase()==="set-cookie"?"***":r]))),"retryOfRequestLogID"in t&&(t.retryOfRequestLogID&&(t.retryOf=t.retryOfRequestLogID),delete t.retryOfRequestLogID),t);var DE,Us=class t{constructor(e,r,n){this.iterator=e,DE.set(this,void 0),this.controller=r,fe(this,DE,n,"f")}static fromSSEResponse(e,r,n){let i=!1,o=n?Fr(n):console;async function*s(){if(i)throw new Te("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let a=!1;try{for await(let c of KYe(e,r)){if(c.event==="completion")try{yield JSON.parse(c.data)}catch(l){throw o.error("Could not parse message into JSON:",c.data),o.error("From chunk:",c.raw),l}if(c.event==="message_start"||c.event==="message_delta"||c.event==="message_stop"||c.event==="content_block_start"||c.event==="content_block_delta"||c.event==="content_block_stop"||c.event==="message"||c.event==="user.message"||c.event==="user.interrupt"||c.event==="user.tool_confirmation"||c.event==="user.custom_tool_result"||c.event==="agent.message"||c.event==="agent.thinking"||c.event==="agent.tool_use"||c.event==="agent.tool_result"||c.event==="agent.mcp_tool_use"||c.event==="agent.mcp_tool_result"||c.event==="agent.custom_tool_use"||c.event==="agent.thread_context_compacted"||c.event==="session.status_running"||c.event==="session.status_idle"||c.event==="session.status_rescheduled"||c.event==="session.status_terminated"||c.event==="session.error"||c.event==="session.deleted"||c.event==="span.model_request_start"||c.event==="span.model_request_end")try{yield JSON.parse(c.data)}catch(l){throw o.error("Could not parse message into JSON:",c.data),o.error("From chunk:",c.raw),l}if(c.event!=="ping"&&c.event==="error"){let l=XC(c.data)??c.data,u=l?.error?.type;throw new Ur(void 0,l,void 0,e.headers,u)}}a=!0}catch(c){if(Ga(c))return;throw c}finally{a||r.abort()}}return new t(s,r,n)}static fromReadableStream(e,r,n){let i=!1;async function*o(){let a=new Ha,c=kE(e);for await(let l of c)for(let u of a.decode(l))yield u;for(let l of a.flush())yield l}async function*s(){if(i)throw new Te("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let a=!1;try{for await(let c of o())a||c&&(yield JSON.parse(c));a=!0}catch(c){if(Ga(c))return;throw c}finally{a||r.abort()}}return new t(s,r,n)}[(DE=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let e=[],r=[],n=this.iterator(),i=o=>({next:()=>{if(o.length===0){let s=n.next();e.push(s),r.push(s)}return o.shift()}});return[new t(()=>i(e),this.controller,z(this,DE,"f")),new t(()=>i(r),this.controller,z(this,DE,"f"))]}toReadableStream(){let e=this,r;return oB({async start(){r=e[Symbol.asyncIterator]()},async pull(n){try{let{value:i,done:o}=await r.next();if(o)return n.close();let s=ME(JSON.stringify(i)+`
152
152
  `);n.enqueue(s)}catch(i){n.error(i)}},async cancel(){await r.return?.()}})}};async function*KYe(t,e){if(!t.body)throw e.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative"?new Te("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api"):new Te("Attempted to iterate over a response with no body");let r=new cB,n=new Ha,i=kE(t.body);for await(let o of ZYe(i))for(let s of n.decode(o)){let a=r.decode(s);a&&(yield a)}for(let o of n.flush()){let s=r.decode(o);s&&(yield s)}}async function*ZYe(t){let e=new Uint8Array;for await(let r of t){if(r==null)continue;let n=r instanceof ArrayBuffer?new Uint8Array(r):typeof r=="string"?ME(r):r,i=new Uint8Array(e.length+n.length);i.set(e),i.set(n,e.length),e=i;let o;for(;(o=Xfe(e))!==-1;)yield e.slice(0,o),e=e.slice(o)}e.length>0&&(yield e)}var cB=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith("\r")&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;let o={event:this.event,data:this.data.join(`
153
- `),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],o}if(this.chunks.push(e),e.startsWith(":"))return null;let[r,n,i]=JYe(e,":");return i.startsWith(" ")&&(i=i.substring(1)),r==="event"?this.event=i:r==="data"&&this.data.push(i),null}};function JYe(t,e){let r=t.indexOf(e);return r!==-1?[t.substring(0,r),e,t.substring(r+e.length)]:[t,"",""]}async function rI(t,e){let{response:r,requestLogID:n,retryOfRequestLogID:i,startTime:o}=e,s=await(async()=>{if(e.options.stream)return Fr(t).debug("response",r.status,r.url,r.headers,r.body),e.options.__streamClass?e.options.__streamClass.fromSSEResponse(r,e.controller):Us.fromSSEResponse(r,e.controller);if(r.status===204)return null;if(e.options.__binaryResponse)return r;let c=r.headers.get("content-type")?.split(";")[0]?.trim();if(c?.includes("application/json")||c?.endsWith("+json")){if(r.headers.get("content-length")==="0")return;let f=await r.json();return lB(f,r)}return await r.text()})();return Fr(t).debug(`[${n}] response parsed`,Wa({retryOfRequestLogID:i,url:r.url,status:r.status,body:s,durationMs:Date.now()-o})),s}function lB(t,e){return!t||typeof t!="object"||Array.isArray(t)?t:Object.defineProperty(t,"_request_id",{value:e.headers.get("request-id"),enumerable:!1})}var LE,Cd=class t extends Promise{constructor(e,r,n=rI){super(i=>{i(null)}),this.responsePromise=r,this.parseResponse=n,LE.set(this,void 0),fe(this,LE,e,"f")}_thenUnwrap(e){return new t(z(this,LE,"f"),this.responsePromise,async(r,n)=>lB(e(await this.parseResponse(r,n),n),n.response))}asResponse(){return this.responsePromise.then(e=>e.response)}async withResponse(){let[e,r]=await Promise.all([this.parse(),this.asResponse()]);return{data:e,response:r,request_id:r.headers.get("request-id")}}parse(){return this.parsedPromise||(this.parsedPromise=this.responsePromise.then(e=>this.parseResponse(z(this,LE,"f"),e))),this.parsedPromise}then(e,r){return this.parse().then(e,r)}catch(e){return this.parse().catch(e)}finally(e){return this.parse().finally(e)}};LE=new WeakMap;var nI,iI=class{constructor(e,r,n,i){nI.set(this,void 0),fe(this,nI,e,"f"),this.options=i,this.response=r,this.body=n}hasNextPage(){return this.getPaginatedItems().length?this.nextPageRequestOptions()!=null:!1}async getNextPage(){let e=this.nextPageRequestOptions();if(!e)throw new Te("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");return await z(this,nI,"f").requestAPIList(this.constructor,e)}async*iterPages(){let e=this;for(yield e;e.hasNextPage();)e=await e.getNextPage(),yield e}async*[(nI=new WeakMap,Symbol.asyncIterator)](){for await(let e of this.iterPages())for(let r of e.getPaginatedItems())yield r}},UE=class extends Cd{constructor(e,r,n){super(e,r,async(i,o)=>new n(i,o.response,await rI(i,o),o.options))}async*[Symbol.asyncIterator](){let e=await this;for await(let r of e)yield r}},eo=class extends iI{constructor(e,r,n,i){super(e,r,n,i),this.data=n.data||[],this.has_more=n.has_more||!1,this.first_id=n.first_id||null,this.last_id=n.last_id||null}getPaginatedItems(){return this.data??[]}hasNextPage(){return this.has_more===!1?!1:super.hasNextPage()}nextPageRequestOptions(){if(this.options.query?.before_id){let r=this.first_id;return r?{...this.options,query:{...JC(this.options.query),before_id:r}}:null}let e=this.last_id;return e?{...this.options,query:{...JC(this.options.query),after_id:e}}:null}};var yt=class extends iI{constructor(e,r,n,i){super(e,r,n,i),this.data=n.data||[],this.next_page=n.next_page||null}getPaginatedItems(){return this.data??[]}nextPageRequestOptions(){let e=this.next_page;return e?{...this.options,query:{...JC(this.options.query),page:e}}:null}};var dB=()=>{if(typeof File>"u"){let{process:t}=globalThis,e=typeof t?.versions?.node=="string"&&parseInt(t.versions.node.split("."))<20;throw new Error("`File` is not defined as a global, which is required for file uploads."+(e?" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.":""))}};function Id(t,e,r){return dB(),new File(t,e??"unknown_file",r)}function FE(t,e){let r=typeof t=="object"&&t!==null&&("name"in t&&t.name&&String(t.name)||"url"in t&&t.url&&String(t.url)||"filename"in t&&t.filename&&String(t.filename)||"path"in t&&t.path&&String(t.path))||"";return e?r.split(/[\\/]/).pop()||void 0:r}var fB=t=>t!=null&&typeof t=="object"&&typeof t[Symbol.asyncIterator]=="function";var Xh=async(t,e,r=!0)=>({...t,body:await eKe(t.body,e,r)}),epe=new WeakMap;function QYe(t){let e=typeof t=="function"?t:t.fetch,r=epe.get(e);if(r)return r;let n=(async()=>{try{let i="Response"in e?e.Response:(await e("data:,")).constructor,o=new FormData;return o.toString()!==await new i(o).text()}catch{return!0}})();return epe.set(e,n),n}var eKe=async(t,e,r=!0)=>{if(!await QYe(e))throw new TypeError("The provided fetch function does not support file uploads with the current global FormData class.");let n=new FormData;return await Promise.all(Object.entries(t||{}).map(([i,o])=>uB(n,i,o,r))),n},tKe=t=>t instanceof Blob&&"name"in t;var uB=async(t,e,r,n)=>{if(r!==void 0){if(r==null)throw new TypeError(`Received null for "${e}"; to pass null in FormData, you must use the string 'null'`);if(typeof r=="string"||typeof r=="number"||typeof r=="boolean")t.append(e,String(r));else if(r instanceof Response){let i={},o=r.headers.get("Content-Type");o&&(i={type:o}),t.append(e,Id([await r.blob()],FE(r,n),i))}else if(fB(r))t.append(e,Id([await new Response(QC(r)).blob()],FE(r,n)));else if(tKe(r))t.append(e,Id([r],FE(r,n),{type:r.type}));else if(Array.isArray(r))await Promise.all(r.map(i=>uB(t,e+"[]",i,n)));else if(typeof r=="object")await Promise.all(Object.entries(r).map(([i,o])=>uB(t,`${e}[${i}]`,o,n)));else throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${r} instead`)}};var tpe=t=>t!=null&&typeof t=="object"&&typeof t.size=="number"&&typeof t.type=="string"&&typeof t.text=="function"&&typeof t.slice=="function"&&typeof t.arrayBuffer=="function",rKe=t=>t!=null&&typeof t=="object"&&typeof t.name=="string"&&typeof t.lastModified=="number"&&tpe(t),nKe=t=>t!=null&&typeof t=="object"&&typeof t.url=="string"&&typeof t.blob=="function";async function oI(t,e,r){if(dB(),t=await t,e||(e=FE(t,!0)),rKe(t))return t instanceof File&&e==null&&r==null?t:Id([await t.arrayBuffer()],e??t.name,{type:t.type,lastModified:t.lastModified,...r});if(nKe(t)){let i=await t.blob();return e||(e=new URL(t.url).pathname.split(/[\\/]/).pop()),Id(await pB(i),e,r)}let n=await pB(t);if(!r?.type){let i=n.find(o=>typeof o=="object"&&"type"in o&&o.type);typeof i=="string"&&(r={...r,type:i})}return Id(n,e,r)}async function pB(t){let e=[];if(typeof t=="string"||ArrayBuffer.isView(t)||t instanceof ArrayBuffer)e.push(t);else if(tpe(t))e.push(t instanceof Blob?t:await t.arrayBuffer());else if(fB(t))for await(let r of t)e.push(...await pB(r));else{let r=t?.constructor?.name;throw new Error(`Unexpected data type: ${typeof t}${r?`; constructor: ${r}`:""}${iKe(t)}`)}return e}function iKe(t){return typeof t!="object"||t===null?"":`; props: [${Object.getOwnPropertyNames(t).map(r=>`"${r}"`).join(", ")}]`}var Le=class{constructor(e){this._client=e}};var rpe=Symbol.for("brand.privateNullableHeaders");function*sKe(t){if(!t)return;if(rpe in t){let{values:n,nulls:i}=t;yield*n.entries();for(let o of i)yield[o,null];return}let e=!1,r;t instanceof Headers?r=t.entries():nB(t)?r=t:(e=!0,r=Object.entries(t??{}));for(let n of r){let i=n[0];if(typeof i!="string")throw new TypeError("expected header name to be a string");let o=nB(n[1])?n[1]:[n[1]],s=!1;for(let a of o)a!==void 0&&(e&&!s&&(s=!0,yield[i,null]),yield[i,a])}}var Y=t=>{let e=new Headers,r=new Set;for(let n of t){let i=new Set;for(let[o,s]of sKe(n)){let a=o.toLowerCase();i.has(a)||(e.delete(o),i.add(a)),s===null?(e.delete(o),r.add(a)):(e.append(o,s),r.delete(a))}}return{[rpe]:!0,values:e,nulls:r}};function ipe(t){return t.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g,encodeURIComponent)}var npe=Object.freeze(Object.create(null)),aKe=(t=ipe)=>function(r,...n){if(r.length===1)return r[0];let i=!1,o=[],s=r.reduce((u,d,f)=>{/[?#]/.test(d)&&(i=!0);let p=n[f],h=(i?encodeURIComponent:t)(""+p);return f!==n.length&&(p==null||typeof p=="object"&&p.toString===Object.getPrototypeOf(Object.getPrototypeOf(p.hasOwnProperty??npe)??npe)?.toString)&&(h=p+"",o.push({start:u.length+d.length,length:h.length,error:`Value of type ${Object.prototype.toString.call(p).slice(8,-1)} is not a valid path parameter`})),u+d+(f===n.length?"":h)},""),a=s.split(/[?#]/,1)[0],c=/(?<=^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi,l;for(;(l=c.exec(a))!==null;)o.push({start:l.index,length:l[0].length,error:`Value "${l[0]}" can't be safely passed as a path parameter`});if(o.sort((u,d)=>u.start-d.start),o.length>0){let u=0,d=o.reduce((f,p)=>{let h=" ".repeat(p.start-u),m="^".repeat(p.length);return u=p.start+p.length,f+h+m},"");throw new Te(`Path parameters result in path with invalid segments:
153
+ `),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],o}if(this.chunks.push(e),e.startsWith(":"))return null;let[r,n,i]=JYe(e,":");return i.startsWith(" ")&&(i=i.substring(1)),r==="event"?this.event=i:r==="data"&&this.data.push(i),null}};function JYe(t,e){let r=t.indexOf(e);return r!==-1?[t.substring(0,r),e,t.substring(r+e.length)]:[t,"",""]}async function rI(t,e){let{response:r,requestLogID:n,retryOfRequestLogID:i,startTime:o}=e,s=await(async()=>{if(e.options.stream)return Fr(t).debug("response",r.status,r.url,r.headers,r.body),e.options.__streamClass?e.options.__streamClass.fromSSEResponse(r,e.controller):Us.fromSSEResponse(r,e.controller);if(r.status===204)return null;if(e.options.__binaryResponse)return r;let c=r.headers.get("content-type")?.split(";")[0]?.trim();if(c?.includes("application/json")||c?.endsWith("+json")){if(r.headers.get("content-length")==="0")return;let f=await r.json();return lB(f,r)}return await r.text()})();return Fr(t).debug(`[${n}] response parsed`,Wa({retryOfRequestLogID:i,url:r.url,status:r.status,body:s,durationMs:Date.now()-o})),s}function lB(t,e){return!t||typeof t!="object"||Array.isArray(t)?t:Object.defineProperty(t,"_request_id",{value:e.headers.get("request-id"),enumerable:!1})}var LE,Cd=class t extends Promise{constructor(e,r,n=rI){super(i=>{i(null)}),this.responsePromise=r,this.parseResponse=n,LE.set(this,void 0),fe(this,LE,e,"f")}_thenUnwrap(e){return new t(z(this,LE,"f"),this.responsePromise,async(r,n)=>lB(e(await this.parseResponse(r,n),n),n.response))}asResponse(){return this.responsePromise.then(e=>e.response)}async withResponse(){let[e,r]=await Promise.all([this.parse(),this.asResponse()]);return{data:e,response:r,request_id:r.headers.get("request-id")}}parse(){return this.parsedPromise||(this.parsedPromise=this.responsePromise.then(e=>this.parseResponse(z(this,LE,"f"),e))),this.parsedPromise}then(e,r){return this.parse().then(e,r)}catch(e){return this.parse().catch(e)}finally(e){return this.parse().finally(e)}};LE=new WeakMap;var nI,iI=class{constructor(e,r,n,i){nI.set(this,void 0),fe(this,nI,e,"f"),this.options=i,this.response=r,this.body=n}hasNextPage(){return this.getPaginatedItems().length?this.nextPageRequestOptions()!=null:!1}async getNextPage(){let e=this.nextPageRequestOptions();if(!e)throw new Te("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");return await z(this,nI,"f").requestAPIList(this.constructor,e)}async*iterPages(){let e=this;for(yield e;e.hasNextPage();)e=await e.getNextPage(),yield e}async*[(nI=new WeakMap,Symbol.asyncIterator)](){for await(let e of this.iterPages())for(let r of e.getPaginatedItems())yield r}},UE=class extends Cd{constructor(e,r,n){super(e,r,async(i,o)=>new n(i,o.response,await rI(i,o),o.options))}async*[Symbol.asyncIterator](){let e=await this;for await(let r of e)yield r}},eo=class extends iI{constructor(e,r,n,i){super(e,r,n,i),this.data=n.data||[],this.has_more=n.has_more||!1,this.first_id=n.first_id||null,this.last_id=n.last_id||null}getPaginatedItems(){return this.data??[]}hasNextPage(){return this.has_more===!1?!1:super.hasNextPage()}nextPageRequestOptions(){if(this.options.query?.before_id){let r=this.first_id;return r?{...this.options,query:{...JC(this.options.query),before_id:r}}:null}let e=this.last_id;return e?{...this.options,query:{...JC(this.options.query),after_id:e}}:null}};var yt=class extends iI{constructor(e,r,n,i){super(e,r,n,i),this.data=n.data||[],this.next_page=n.next_page||null}getPaginatedItems(){return this.data??[]}nextPageRequestOptions(){let e=this.next_page;return e?{...this.options,query:{...JC(this.options.query),page:e}}:null}};var dB=()=>{if(typeof File>"u"){let{process:t}=globalThis,e=typeof t?.versions?.node=="string"&&parseInt(t.versions.node.split("."))<20;throw new Error("`File` is not defined as a global, which is required for file uploads."+(e?" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.":""))}};function Id(t,e,r){return dB(),new File(t,e??"unknown_file",r)}function FE(t,e){let r=typeof t=="object"&&t!==null&&("name"in t&&t.name&&String(t.name)||"url"in t&&t.url&&String(t.url)||"filename"in t&&t.filename&&String(t.filename)||"path"in t&&t.path&&String(t.path))||"";return e?r.split(/[\\/]/).pop()||void 0:r}var fB=t=>t!=null&&typeof t=="object"&&typeof t[Symbol.asyncIterator]=="function";var Xh=async(t,e,r=!0)=>({...t,body:await eKe(t.body,e,r)}),epe=new WeakMap;function QYe(t){let e=typeof t=="function"?t:t.fetch,r=epe.get(e);if(r)return r;let n=(async()=>{try{let i="Response"in e?e.Response:(await e("data:,")).constructor,o=new FormData;return o.toString()!==await new i(o).text()}catch{return!0}})();return epe.set(e,n),n}var eKe=async(t,e,r=!0)=>{if(!await QYe(e))throw new TypeError("The provided fetch function does not support file uploads with the current global FormData class.");let n=new FormData;return await Promise.all(Object.entries(t||{}).map(([i,o])=>uB(n,i,o,r))),n},tKe=t=>t instanceof Blob&&"name"in t;var uB=async(t,e,r,n)=>{if(r!==void 0){if(r==null)throw new TypeError(`Received null for "${e}"; to pass null in FormData, you must use the string 'null'`);if(typeof r=="string"||typeof r=="number"||typeof r=="boolean")t.append(e,String(r));else if(r instanceof Response){let i={},o=r.headers.get("Content-Type");o&&(i={type:o}),t.append(e,Id([await r.blob()],FE(r,n),i))}else if(fB(r))t.append(e,Id([await new Response(QC(r)).blob()],FE(r,n)));else if(tKe(r))t.append(e,Id([r],FE(r,n),{type:r.type}));else if(Array.isArray(r))await Promise.all(r.map(i=>uB(t,e+"[]",i,n)));else if(typeof r=="object")await Promise.all(Object.entries(r).map(([i,o])=>uB(t,`${e}[${i}]`,o,n)));else throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${r} instead`)}};var tpe=t=>t!=null&&typeof t=="object"&&typeof t.size=="number"&&typeof t.type=="string"&&typeof t.text=="function"&&typeof t.slice=="function"&&typeof t.arrayBuffer=="function",rKe=t=>t!=null&&typeof t=="object"&&typeof t.name=="string"&&typeof t.lastModified=="number"&&tpe(t),nKe=t=>t!=null&&typeof t=="object"&&typeof t.url=="string"&&typeof t.blob=="function";async function oI(t,e,r){if(dB(),t=await t,e||(e=FE(t,!0)),rKe(t))return t instanceof File&&e==null&&r==null?t:Id([await t.arrayBuffer()],e??t.name,{type:t.type,lastModified:t.lastModified,...r});if(nKe(t)){let i=await t.blob();return e||(e=new URL(t.url).pathname.split(/[\\/]/).pop()),Id(await pB(i),e,r)}let n=await pB(t);if(!r?.type){let i=n.find(o=>typeof o=="object"&&"type"in o&&o.type);typeof i=="string"&&(r={...r,type:i})}return Id(n,e,r)}async function pB(t){let e=[];if(typeof t=="string"||ArrayBuffer.isView(t)||t instanceof ArrayBuffer)e.push(t);else if(tpe(t))e.push(t instanceof Blob?t:await t.arrayBuffer());else if(fB(t))for await(let r of t)e.push(...await pB(r));else{let r=t?.constructor?.name;throw new Error(`Unexpected data type: ${typeof t}${r?`; constructor: ${r}`:""}${iKe(t)}`)}return e}function iKe(t){return typeof t!="object"||t===null?"":`; props: [${Object.getOwnPropertyNames(t).map(r=>`"${r}"`).join(", ")}]`}var Le=class{constructor(e){this._client=e}};var rpe=Symbol.for("brand.privateNullableHeaders");function*sKe(t){if(!t)return;if(rpe in t){let{values:n,nulls:i}=t;yield*n.entries();for(let o of i)yield[o,null];return}let e=!1,r;t instanceof Headers?r=t.entries():nB(t)?r=t:(e=!0,r=Object.entries(t??{}));for(let n of r){let i=n[0];if(typeof i!="string")throw new TypeError("expected header name to be a string");let o=nB(n[1])?n[1]:[n[1]],s=!1;for(let a of o)a!==void 0&&(e&&!s&&(s=!0,yield[i,null]),yield[i,a])}}var K=t=>{let e=new Headers,r=new Set;for(let n of t){let i=new Set;for(let[o,s]of sKe(n)){let a=o.toLowerCase();i.has(a)||(e.delete(o),i.add(a)),s===null?(e.delete(o),r.add(a)):(e.append(o,s),r.delete(a))}}return{[rpe]:!0,values:e,nulls:r}};function ipe(t){return t.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g,encodeURIComponent)}var npe=Object.freeze(Object.create(null)),aKe=(t=ipe)=>function(r,...n){if(r.length===1)return r[0];let i=!1,o=[],s=r.reduce((u,d,f)=>{/[?#]/.test(d)&&(i=!0);let p=n[f],h=(i?encodeURIComponent:t)(""+p);return f!==n.length&&(p==null||typeof p=="object"&&p.toString===Object.getPrototypeOf(Object.getPrototypeOf(p.hasOwnProperty??npe)??npe)?.toString)&&(h=p+"",o.push({start:u.length+d.length,length:h.length,error:`Value of type ${Object.prototype.toString.call(p).slice(8,-1)} is not a valid path parameter`})),u+d+(f===n.length?"":h)},""),a=s.split(/[?#]/,1)[0],c=/(?<=^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi,l;for(;(l=c.exec(a))!==null;)o.push({start:l.index,length:l[0].length,error:`Value "${l[0]}" can't be safely passed as a path parameter`});if(o.sort((u,d)=>u.start-d.start),o.length>0){let u=0,d=o.reduce((f,p)=>{let h=" ".repeat(p.start-u),m="^".repeat(p.length);return u=p.start+p.length,f+h+m},"");throw new Te(`Path parameters result in path with invalid segments:
154
154
  ${o.map(f=>f.error).join(`
155
155
  `)}
156
156
  ${s}
157
- ${d}`)}return s},ue=aKe(ipe);var Qh=class extends Le{create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/environments?beta=true",{body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/environments/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/environments/${e}?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/environments?beta=true",yt,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/environments/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/environments/${e}/archive?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var zE=Symbol("anthropic.sdk.stainlessHelper");function sI(t){return typeof t=="object"&&t!==null&&zE in t}function hB(t,e){let r=new Set;if(t)for(let n of t)sI(n)&&r.add(n[zE]);if(e){for(let n of e)if(sI(n)&&r.add(n[zE]),Array.isArray(n.content))for(let i of n.content)sI(i)&&r.add(i[zE])}return Array.from(r)}function aI(t,e){let r=hB(t,e);return r.length===0?{}:{"x-stainless-helper":r.join(", ")}}function ope(t){return sI(t)?{"x-stainless-helper":t[zE]}:{}}var em=class extends Le{list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/files?beta=true",eo,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"files-api-2025-04-14"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/files/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"files-api-2025-04-14"].toString()},n?.headers])})}download(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/files/${e}/content?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"files-api-2025-04-14"].toString(),Accept:"application/binary"},n?.headers]),__binaryResponse:!0})}retrieveMetadata(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/files/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"files-api-2025-04-14"].toString()},n?.headers])})}upload(e,r){let{betas:n,...i}=e;return this._client.post("/v1/files?beta=true",Xh({body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"files-api-2025-04-14"].toString()},ope(i.file),r?.headers])},this._client))}};var tm=class extends Le{retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/models/${e}?beta=true`,{...n,headers:Y([{...i?.toString()!=null?{"anthropic-beta":i?.toString()}:void 0},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/models?beta=true",eo,{query:i,...r,headers:Y([{...n?.toString()!=null?{"anthropic-beta":n?.toString()}:void 0},r?.headers])})}};var rm=class extends Le{create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/user_profiles?beta=true",{body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"user-profiles-2026-03-24"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/user_profiles/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"user-profiles-2026-03-24"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/user_profiles/${e}?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"user-profiles-2026-03-24"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/user_profiles?beta=true",yt,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"user-profiles-2026-03-24"].toString()},r?.headers])})}createEnrollmentURL(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/user_profiles/${e}/enrollment_url?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"user-profiles-2026-03-24"].toString()},n?.headers])})}};var nm=class extends Le{list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/agents/${e}/versions?beta=true`,yt,{query:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var Pd=class extends Le{constructor(){super(...arguments),this.versions=new nm(this._client)}create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/agents?beta=true",{body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i,...o}=r??{};return this._client.get(ue`/v1/agents/${e}?beta=true`,{query:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/agents/${e}?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/agents?beta=true",yt,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/agents/${e}/archive?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};Pd.Versions=nm;var im=class extends Le{create(e,r,n){let{view:i,betas:o,...s}=r;return this._client.post(ue`/v1/memory_stores/${e}/memories?beta=true`,{query:{view:i},body:s,...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}retrieve(e,r,n){let{memory_store_id:i,betas:o,...s}=r;return this._client.get(ue`/v1/memory_stores/${i}/memories/${e}?beta=true`,{query:s,...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{memory_store_id:i,view:o,betas:s,...a}=r;return this._client.post(ue`/v1/memory_stores/${i}/memories/${e}?beta=true`,{query:{view:o},body:a,...n,headers:Y([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/memory_stores/${e}/memories?beta=true`,yt,{query:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}delete(e,r,n){let{memory_store_id:i,expected_content_sha256:o,betas:s}=r;return this._client.delete(ue`/v1/memory_stores/${i}/memories/${e}?beta=true`,{query:{expected_content_sha256:o},...n,headers:Y([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var om=class extends Le{retrieve(e,r,n){let{memory_store_id:i,betas:o,...s}=r;return this._client.get(ue`/v1/memory_stores/${i}/memory_versions/${e}?beta=true`,{query:s,...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/memory_stores/${e}/memory_versions?beta=true`,yt,{query:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}redact(e,r,n){let{memory_store_id:i,betas:o}=r;return this._client.post(ue`/v1/memory_stores/${i}/memory_versions/${e}/redact?beta=true`,{...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var gl=class extends Le{constructor(){super(...arguments),this.memories=new im(this._client),this.memoryVersions=new om(this._client)}create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/memory_stores?beta=true",{body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/memory_stores/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/memory_stores/${e}?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/memory_stores?beta=true",yt,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/memory_stores/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/memory_stores/${e}/archive?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};gl.Memories=im;gl.MemoryVersions=om;var cI={"claude-opus-4-20250514":8192,"claude-opus-4-0":8192,"claude-4-opus-20250514":8192,"anthropic.claude-opus-4-20250514-v1:0":8192,"claude-opus-4@20250514":8192,"claude-opus-4-1-20250805":8192,"anthropic.claude-opus-4-1-20250805-v1:0":8192,"claude-opus-4-1@20250805":8192};function spe(t){return t?.output_format??t?.output_config?.format}function mB(t,e,r){let n=spe(e);return!e||!("parse"in(n??{}))?{...t,content:t.content.map(i=>{if(i.type==="text"){let o=Object.defineProperty({...i},"parsed_output",{value:null,enumerable:!1});return Object.defineProperty(o,"parsed",{get(){return r.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),null},enumerable:!1})}return i}),parsed_output:null}:gB(t,e,r)}function gB(t,e,r){let n=null,i=t.content.map(o=>{if(o.type==="text"){let s=_Ke(e,o.text);n===null&&(n=s);let a=Object.defineProperty({...o},"parsed_output",{value:s,enumerable:!1});return Object.defineProperty(a,"parsed",{get(){return r.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),s},enumerable:!1})}return o});return{...t,content:i,parsed_output:n}}function _Ke(t,e){let r=spe(t);if(r?.type!=="json_schema")return null;try{return"parse"in r?r.parse(e):JSON.parse(e)}catch(n){throw new Te(`Failed to parse structured output: ${n}`)}}var yKe=t=>{let e=0,r=[];for(;e<t.length;){let n=t[e];if(n==="\\"){e++;continue}if(n==="{"){r.push({type:"brace",value:"{"}),e++;continue}if(n==="}"){r.push({type:"brace",value:"}"}),e++;continue}if(n==="["){r.push({type:"paren",value:"["}),e++;continue}if(n==="]"){r.push({type:"paren",value:"]"}),e++;continue}if(n===":"){r.push({type:"separator",value:":"}),e++;continue}if(n===","){r.push({type:"delimiter",value:","}),e++;continue}if(n==='"'){let a="",c=!1;for(n=t[++e];n!=='"';){if(e===t.length){c=!0;break}if(n==="\\"){if(e++,e===t.length){c=!0;break}a+=n+t[e],n=t[++e]}else a+=n,n=t[++e]}n=t[++e],c||r.push({type:"string",value:a});continue}if(n&&/\s/.test(n)){e++;continue}let o=/[0-9]/;if(n&&o.test(n)||n==="-"||n==="."){let a="";for(n==="-"&&(a+=n,n=t[++e]);n&&o.test(n)||n===".";)a+=n,n=t[++e];r.push({type:"number",value:a});continue}let s=/[a-z]/i;if(n&&s.test(n)){let a="";for(;n&&s.test(n)&&e!==t.length;)a+=n,n=t[++e];if(a=="true"||a=="false"||a==="null")r.push({type:"name",value:a});else{e++;continue}continue}e++}return r},sm=t=>{if(t.length===0)return t;let e=t[t.length-1];switch(e.type){case"separator":return t=t.slice(0,t.length-1),sm(t);break;case"number":let r=e.value[e.value.length-1];if(r==="."||r==="-")return t=t.slice(0,t.length-1),sm(t);case"string":let n=t[t.length-2];if(n?.type==="delimiter")return t=t.slice(0,t.length-1),sm(t);if(n?.type==="brace"&&n.value==="{")return t=t.slice(0,t.length-1),sm(t);break;case"delimiter":return t=t.slice(0,t.length-1),sm(t);break}return t},SKe=t=>{let e=[];return t.map(r=>{r.type==="brace"&&(r.value==="{"?e.push("}"):e.splice(e.lastIndexOf("}"),1)),r.type==="paren"&&(r.value==="["?e.push("]"):e.splice(e.lastIndexOf("]"),1))}),e.length>0&&e.reverse().map(r=>{r==="}"?t.push({type:"brace",value:"}"}):r==="]"&&t.push({type:"paren",value:"]"})}),t},EKe=t=>{let e="";return t.map(r=>{r.type==="string"?e+='"'+r.value+'"':e+=r.value}),e},lI=t=>JSON.parse(EKe(SKe(sm(yKe(t)))));var to,_l,am,jE,uI,BE,qE,dI,VE,Ya,GE,fI,pI,Od,hI,mI,HE,_B,ape,gI,yB,SB,EB,cpe,lpe="__json_buf";function upe(t){return t.type==="tool_use"||t.type==="server_tool_use"||t.type==="mcp_tool_use"}var _I=class t{constructor(e,r){to.add(this),this.messages=[],this.receivedMessages=[],_l.set(this,void 0),am.set(this,null),this.controller=new AbortController,jE.set(this,void 0),uI.set(this,()=>{}),BE.set(this,()=>{}),qE.set(this,void 0),dI.set(this,()=>{}),VE.set(this,()=>{}),Ya.set(this,{}),GE.set(this,!1),fI.set(this,!1),pI.set(this,!1),Od.set(this,!1),hI.set(this,void 0),mI.set(this,void 0),HE.set(this,void 0),gI.set(this,n=>{if(fe(this,fI,!0,"f"),Ga(n)&&(n=new Xr),n instanceof Xr)return fe(this,pI,!0,"f"),this._emit("abort",n);if(n instanceof Te)return this._emit("error",n);if(n instanceof Error){let i=new Te(n.message);return i.cause=n,this._emit("error",i)}return this._emit("error",new Te(String(n)))}),fe(this,jE,new Promise((n,i)=>{fe(this,uI,n,"f"),fe(this,BE,i,"f")}),"f"),fe(this,qE,new Promise((n,i)=>{fe(this,dI,n,"f"),fe(this,VE,i,"f")}),"f"),z(this,jE,"f").catch(()=>{}),z(this,qE,"f").catch(()=>{}),fe(this,am,e,"f"),fe(this,HE,r?.logger??console,"f")}get response(){return z(this,hI,"f")}get request_id(){return z(this,mI,"f")}async withResponse(){fe(this,Od,!0,"f");let e=await z(this,jE,"f");if(!e)throw new Error("Could not resolve a `Response` object");return{data:this,response:e,request_id:e.headers.get("request-id")}}static fromReadableStream(e){let r=new t(null);return r._run(()=>r._fromReadableStream(e)),r}static createMessage(e,r,n,{logger:i}={}){let o=new t(r,{logger:i});for(let s of r.messages)o._addMessageParam(s);return fe(o,am,{...r,stream:!0},"f"),o._run(()=>o._createMessage(e,{...r,stream:!0},{...n,headers:{...n?.headers,"X-Stainless-Helper-Method":"stream"}})),o}_run(e){e().then(()=>{this._emitFinal(),this._emit("end")},z(this,gI,"f"))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,r=!0){this.receivedMessages.push(e),r&&this._emit("message",e)}async _createMessage(e,r,n){let i=n?.signal,o;i&&(i.aborted&&this.controller.abort(),o=this.controller.abort.bind(this.controller),i.addEventListener("abort",o));try{z(this,to,"m",yB).call(this);let{response:s,data:a}=await e.create({...r,stream:!0},{...n,signal:this.controller.signal}).withResponse();this._connected(s);for await(let c of a)z(this,to,"m",SB).call(this,c);if(a.controller.signal?.aborted)throw new Xr;z(this,to,"m",EB).call(this)}finally{i&&o&&i.removeEventListener("abort",o)}}_connected(e){this.ended||(fe(this,hI,e,"f"),fe(this,mI,e?.headers.get("request-id"),"f"),z(this,uI,"f").call(this,e),this._emit("connect"))}get ended(){return z(this,GE,"f")}get errored(){return z(this,fI,"f")}get aborted(){return z(this,pI,"f")}abort(){this.controller.abort()}on(e,r){return(z(this,Ya,"f")[e]||(z(this,Ya,"f")[e]=[])).push({listener:r}),this}off(e,r){let n=z(this,Ya,"f")[e];if(!n)return this;let i=n.findIndex(o=>o.listener===r);return i>=0&&n.splice(i,1),this}once(e,r){return(z(this,Ya,"f")[e]||(z(this,Ya,"f")[e]=[])).push({listener:r,once:!0}),this}emitted(e){return new Promise((r,n)=>{fe(this,Od,!0,"f"),e!=="error"&&this.once("error",n),this.once(e,r)})}async done(){fe(this,Od,!0,"f"),await z(this,qE,"f")}get currentMessage(){return z(this,_l,"f")}async finalMessage(){return await this.done(),z(this,to,"m",_B).call(this)}async finalText(){return await this.done(),z(this,to,"m",ape).call(this)}_emit(e,...r){if(z(this,GE,"f"))return;e==="end"&&(fe(this,GE,!0,"f"),z(this,dI,"f").call(this));let n=z(this,Ya,"f")[e];if(n&&(z(this,Ya,"f")[e]=n.filter(i=>!i.once),n.forEach(({listener:i})=>i(...r))),e==="abort"){let i=r[0];!z(this,Od,"f")&&!n?.length&&Promise.reject(i),z(this,BE,"f").call(this,i),z(this,VE,"f").call(this,i),this._emit("end");return}if(e==="error"){let i=r[0];!z(this,Od,"f")&&!n?.length&&Promise.reject(i),z(this,BE,"f").call(this,i),z(this,VE,"f").call(this,i),this._emit("end")}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit("finalMessage",z(this,to,"m",_B).call(this))}async _fromReadableStream(e,r){let n=r?.signal,i;n&&(n.aborted&&this.controller.abort(),i=this.controller.abort.bind(this.controller),n.addEventListener("abort",i));try{z(this,to,"m",yB).call(this),this._connected(null);let o=Us.fromReadableStream(e,this.controller);for await(let s of o)z(this,to,"m",SB).call(this,s);if(o.controller.signal?.aborted)throw new Xr;z(this,to,"m",EB).call(this)}finally{n&&i&&n.removeEventListener("abort",i)}}[(_l=new WeakMap,am=new WeakMap,jE=new WeakMap,uI=new WeakMap,BE=new WeakMap,qE=new WeakMap,dI=new WeakMap,VE=new WeakMap,Ya=new WeakMap,GE=new WeakMap,fI=new WeakMap,pI=new WeakMap,Od=new WeakMap,hI=new WeakMap,mI=new WeakMap,HE=new WeakMap,gI=new WeakMap,to=new WeakSet,_B=function(){if(this.receivedMessages.length===0)throw new Te("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},ape=function(){if(this.receivedMessages.length===0)throw new Te("stream ended without producing a Message with role=assistant");let r=this.receivedMessages.at(-1).content.filter(n=>n.type==="text").map(n=>n.text);if(r.length===0)throw new Te("stream ended without producing a content block with type=text");return r.join(" ")},yB=function(){this.ended||fe(this,_l,void 0,"f")},SB=function(r){if(this.ended)return;let n=z(this,to,"m",cpe).call(this,r);switch(this._emit("streamEvent",r,n),r.type){case"content_block_delta":{let i=n.content.at(-1);switch(r.delta.type){case"text_delta":{i.type==="text"&&this._emit("text",r.delta.text,i.text||"");break}case"citations_delta":{i.type==="text"&&this._emit("citation",r.delta.citation,i.citations??[]);break}case"input_json_delta":{upe(i)&&i.input&&this._emit("inputJson",r.delta.partial_json,i.input);break}case"thinking_delta":{i.type==="thinking"&&this._emit("thinking",r.delta.thinking,i.thinking);break}case"signature_delta":{i.type==="thinking"&&this._emit("signature",i.signature);break}case"compaction_delta":{i.type==="compaction"&&i.content&&this._emit("compaction",i.content);break}default:r.delta}break}case"message_stop":{this._addMessageParam(n),this._addMessage(mB(n,z(this,am,"f"),{logger:z(this,HE,"f")}),!0);break}case"content_block_stop":{this._emit("contentBlock",n.content.at(-1));break}case"message_start":{fe(this,_l,n,"f");break}case"content_block_start":case"message_delta":break}},EB=function(){if(this.ended)throw new Te("stream has ended, this shouldn't happen");let r=z(this,_l,"f");if(!r)throw new Te("request ended without sending any chunks");return fe(this,_l,void 0,"f"),mB(r,z(this,am,"f"),{logger:z(this,HE,"f")})},cpe=function(r){let n=z(this,_l,"f");if(r.type==="message_start"){if(n)throw new Te(`Unexpected event order, got ${r.type} before receiving "message_stop"`);return r.message}if(!n)throw new Te(`Unexpected event order, got ${r.type} before "message_start"`);switch(r.type){case"message_stop":return n;case"message_delta":return n.container=r.delta.container,n.stop_reason=r.delta.stop_reason,n.stop_sequence=r.delta.stop_sequence,n.usage.output_tokens=r.usage.output_tokens,n.context_management=r.context_management,r.usage.input_tokens!=null&&(n.usage.input_tokens=r.usage.input_tokens),r.usage.cache_creation_input_tokens!=null&&(n.usage.cache_creation_input_tokens=r.usage.cache_creation_input_tokens),r.usage.cache_read_input_tokens!=null&&(n.usage.cache_read_input_tokens=r.usage.cache_read_input_tokens),r.usage.server_tool_use!=null&&(n.usage.server_tool_use=r.usage.server_tool_use),r.usage.iterations!=null&&(n.usage.iterations=r.usage.iterations),n;case"content_block_start":return n.content.push(r.content_block),n;case"content_block_delta":{let i=n.content.at(r.index);switch(r.delta.type){case"text_delta":{i?.type==="text"&&(n.content[r.index]={...i,text:(i.text||"")+r.delta.text});break}case"citations_delta":{i?.type==="text"&&(n.content[r.index]={...i,citations:[...i.citations??[],r.delta.citation]});break}case"input_json_delta":{if(i&&upe(i)){let o=i[lpe]||"";o+=r.delta.partial_json;let s={...i};if(Object.defineProperty(s,lpe,{value:o,enumerable:!1,writable:!0}),o)try{s.input=lI(o)}catch(a){let c=new Te(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${a}. JSON: ${o}`);z(this,gI,"f").call(this,c)}n.content[r.index]=s}break}case"thinking_delta":{i?.type==="thinking"&&(n.content[r.index]={...i,thinking:i.thinking+r.delta.thinking});break}case"signature_delta":{i?.type==="thinking"&&(n.content[r.index]={...i,signature:r.delta.signature});break}case"compaction_delta":{i?.type==="compaction"&&(n.content[r.index]={...i,content:(i.content||"")+r.delta.content});break}default:r.delta}return n}case"content_block_stop":return n}},Symbol.asyncIterator)](){let e=[],r=[],n=!1;return this.on("streamEvent",i=>{let o=r.shift();o?o.resolve(i):e.push(i)}),this.on("end",()=>{n=!0;for(let i of r)i.resolve(void 0);r.length=0}),this.on("abort",i=>{n=!0;for(let o of r)o.reject(i);r.length=0}),this.on("error",i=>{n=!0;for(let o of r)o.reject(i);r.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:n?{value:void 0,done:!0}:new Promise((o,s)=>r.push({resolve:o,reject:s})).then(o=>o?{value:o,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new Us(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}};var Nd=class extends Error{constructor(e){let r=typeof e=="string"?e:e.map(n=>n.type==="text"?n.text:`[${n.type}]`).join(" ");super(r),this.name="ToolError",this.content=e}};var dpe=`You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:
157
+ ${d}`)}return s},ue=aKe(ipe);var Qh=class extends Le{create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/environments?beta=true",{body:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/environments/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/environments/${e}?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/environments?beta=true",yt,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/environments/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/environments/${e}/archive?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var zE=Symbol("anthropic.sdk.stainlessHelper");function sI(t){return typeof t=="object"&&t!==null&&zE in t}function hB(t,e){let r=new Set;if(t)for(let n of t)sI(n)&&r.add(n[zE]);if(e){for(let n of e)if(sI(n)&&r.add(n[zE]),Array.isArray(n.content))for(let i of n.content)sI(i)&&r.add(i[zE])}return Array.from(r)}function aI(t,e){let r=hB(t,e);return r.length===0?{}:{"x-stainless-helper":r.join(", ")}}function ope(t){return sI(t)?{"x-stainless-helper":t[zE]}:{}}var em=class extends Le{list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/files?beta=true",eo,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"files-api-2025-04-14"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/files/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"files-api-2025-04-14"].toString()},n?.headers])})}download(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/files/${e}/content?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"files-api-2025-04-14"].toString(),Accept:"application/binary"},n?.headers]),__binaryResponse:!0})}retrieveMetadata(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/files/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"files-api-2025-04-14"].toString()},n?.headers])})}upload(e,r){let{betas:n,...i}=e;return this._client.post("/v1/files?beta=true",Xh({body:i,...r,headers:K([{"anthropic-beta":[...n??[],"files-api-2025-04-14"].toString()},ope(i.file),r?.headers])},this._client))}};var tm=class extends Le{retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/models/${e}?beta=true`,{...n,headers:K([{...i?.toString()!=null?{"anthropic-beta":i?.toString()}:void 0},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/models?beta=true",eo,{query:i,...r,headers:K([{...n?.toString()!=null?{"anthropic-beta":n?.toString()}:void 0},r?.headers])})}};var rm=class extends Le{create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/user_profiles?beta=true",{body:i,...r,headers:K([{"anthropic-beta":[...n??[],"user-profiles-2026-03-24"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/user_profiles/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"user-profiles-2026-03-24"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/user_profiles/${e}?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"user-profiles-2026-03-24"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/user_profiles?beta=true",yt,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"user-profiles-2026-03-24"].toString()},r?.headers])})}createEnrollmentURL(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/user_profiles/${e}/enrollment_url?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"user-profiles-2026-03-24"].toString()},n?.headers])})}};var nm=class extends Le{list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/agents/${e}/versions?beta=true`,yt,{query:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var Pd=class extends Le{constructor(){super(...arguments),this.versions=new nm(this._client)}create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/agents?beta=true",{body:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i,...o}=r??{};return this._client.get(ue`/v1/agents/${e}?beta=true`,{query:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/agents/${e}?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/agents?beta=true",yt,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/agents/${e}/archive?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};Pd.Versions=nm;var im=class extends Le{create(e,r,n){let{view:i,betas:o,...s}=r;return this._client.post(ue`/v1/memory_stores/${e}/memories?beta=true`,{query:{view:i},body:s,...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}retrieve(e,r,n){let{memory_store_id:i,betas:o,...s}=r;return this._client.get(ue`/v1/memory_stores/${i}/memories/${e}?beta=true`,{query:s,...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{memory_store_id:i,view:o,betas:s,...a}=r;return this._client.post(ue`/v1/memory_stores/${i}/memories/${e}?beta=true`,{query:{view:o},body:a,...n,headers:K([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/memory_stores/${e}/memories?beta=true`,yt,{query:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}delete(e,r,n){let{memory_store_id:i,expected_content_sha256:o,betas:s}=r;return this._client.delete(ue`/v1/memory_stores/${i}/memories/${e}?beta=true`,{query:{expected_content_sha256:o},...n,headers:K([{"anthropic-beta":[...s??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var om=class extends Le{retrieve(e,r,n){let{memory_store_id:i,betas:o,...s}=r;return this._client.get(ue`/v1/memory_stores/${i}/memory_versions/${e}?beta=true`,{query:s,...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/memory_stores/${e}/memory_versions?beta=true`,yt,{query:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}redact(e,r,n){let{memory_store_id:i,betas:o}=r;return this._client.post(ue`/v1/memory_stores/${i}/memory_versions/${e}/redact?beta=true`,{...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var gl=class extends Le{constructor(){super(...arguments),this.memories=new im(this._client),this.memoryVersions=new om(this._client)}create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/memory_stores?beta=true",{body:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/memory_stores/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/memory_stores/${e}?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/memory_stores?beta=true",yt,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/memory_stores/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/memory_stores/${e}/archive?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};gl.Memories=im;gl.MemoryVersions=om;var cI={"claude-opus-4-20250514":8192,"claude-opus-4-0":8192,"claude-4-opus-20250514":8192,"anthropic.claude-opus-4-20250514-v1:0":8192,"claude-opus-4@20250514":8192,"claude-opus-4-1-20250805":8192,"anthropic.claude-opus-4-1-20250805-v1:0":8192,"claude-opus-4-1@20250805":8192};function spe(t){return t?.output_format??t?.output_config?.format}function mB(t,e,r){let n=spe(e);return!e||!("parse"in(n??{}))?{...t,content:t.content.map(i=>{if(i.type==="text"){let o=Object.defineProperty({...i},"parsed_output",{value:null,enumerable:!1});return Object.defineProperty(o,"parsed",{get(){return r.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),null},enumerable:!1})}return i}),parsed_output:null}:gB(t,e,r)}function gB(t,e,r){let n=null,i=t.content.map(o=>{if(o.type==="text"){let s=_Ke(e,o.text);n===null&&(n=s);let a=Object.defineProperty({...o},"parsed_output",{value:s,enumerable:!1});return Object.defineProperty(a,"parsed",{get(){return r.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),s},enumerable:!1})}return o});return{...t,content:i,parsed_output:n}}function _Ke(t,e){let r=spe(t);if(r?.type!=="json_schema")return null;try{return"parse"in r?r.parse(e):JSON.parse(e)}catch(n){throw new Te(`Failed to parse structured output: ${n}`)}}var yKe=t=>{let e=0,r=[];for(;e<t.length;){let n=t[e];if(n==="\\"){e++;continue}if(n==="{"){r.push({type:"brace",value:"{"}),e++;continue}if(n==="}"){r.push({type:"brace",value:"}"}),e++;continue}if(n==="["){r.push({type:"paren",value:"["}),e++;continue}if(n==="]"){r.push({type:"paren",value:"]"}),e++;continue}if(n===":"){r.push({type:"separator",value:":"}),e++;continue}if(n===","){r.push({type:"delimiter",value:","}),e++;continue}if(n==='"'){let a="",c=!1;for(n=t[++e];n!=='"';){if(e===t.length){c=!0;break}if(n==="\\"){if(e++,e===t.length){c=!0;break}a+=n+t[e],n=t[++e]}else a+=n,n=t[++e]}n=t[++e],c||r.push({type:"string",value:a});continue}if(n&&/\s/.test(n)){e++;continue}let o=/[0-9]/;if(n&&o.test(n)||n==="-"||n==="."){let a="";for(n==="-"&&(a+=n,n=t[++e]);n&&o.test(n)||n===".";)a+=n,n=t[++e];r.push({type:"number",value:a});continue}let s=/[a-z]/i;if(n&&s.test(n)){let a="";for(;n&&s.test(n)&&e!==t.length;)a+=n,n=t[++e];if(a=="true"||a=="false"||a==="null")r.push({type:"name",value:a});else{e++;continue}continue}e++}return r},sm=t=>{if(t.length===0)return t;let e=t[t.length-1];switch(e.type){case"separator":return t=t.slice(0,t.length-1),sm(t);break;case"number":let r=e.value[e.value.length-1];if(r==="."||r==="-")return t=t.slice(0,t.length-1),sm(t);case"string":let n=t[t.length-2];if(n?.type==="delimiter")return t=t.slice(0,t.length-1),sm(t);if(n?.type==="brace"&&n.value==="{")return t=t.slice(0,t.length-1),sm(t);break;case"delimiter":return t=t.slice(0,t.length-1),sm(t);break}return t},SKe=t=>{let e=[];return t.map(r=>{r.type==="brace"&&(r.value==="{"?e.push("}"):e.splice(e.lastIndexOf("}"),1)),r.type==="paren"&&(r.value==="["?e.push("]"):e.splice(e.lastIndexOf("]"),1))}),e.length>0&&e.reverse().map(r=>{r==="}"?t.push({type:"brace",value:"}"}):r==="]"&&t.push({type:"paren",value:"]"})}),t},EKe=t=>{let e="";return t.map(r=>{r.type==="string"?e+='"'+r.value+'"':e+=r.value}),e},lI=t=>JSON.parse(EKe(SKe(sm(yKe(t)))));var to,_l,am,jE,uI,BE,qE,dI,VE,Ya,GE,fI,pI,Od,hI,mI,HE,_B,ape,gI,yB,SB,EB,cpe,lpe="__json_buf";function upe(t){return t.type==="tool_use"||t.type==="server_tool_use"||t.type==="mcp_tool_use"}var _I=class t{constructor(e,r){to.add(this),this.messages=[],this.receivedMessages=[],_l.set(this,void 0),am.set(this,null),this.controller=new AbortController,jE.set(this,void 0),uI.set(this,()=>{}),BE.set(this,()=>{}),qE.set(this,void 0),dI.set(this,()=>{}),VE.set(this,()=>{}),Ya.set(this,{}),GE.set(this,!1),fI.set(this,!1),pI.set(this,!1),Od.set(this,!1),hI.set(this,void 0),mI.set(this,void 0),HE.set(this,void 0),gI.set(this,n=>{if(fe(this,fI,!0,"f"),Ga(n)&&(n=new Xr),n instanceof Xr)return fe(this,pI,!0,"f"),this._emit("abort",n);if(n instanceof Te)return this._emit("error",n);if(n instanceof Error){let i=new Te(n.message);return i.cause=n,this._emit("error",i)}return this._emit("error",new Te(String(n)))}),fe(this,jE,new Promise((n,i)=>{fe(this,uI,n,"f"),fe(this,BE,i,"f")}),"f"),fe(this,qE,new Promise((n,i)=>{fe(this,dI,n,"f"),fe(this,VE,i,"f")}),"f"),z(this,jE,"f").catch(()=>{}),z(this,qE,"f").catch(()=>{}),fe(this,am,e,"f"),fe(this,HE,r?.logger??console,"f")}get response(){return z(this,hI,"f")}get request_id(){return z(this,mI,"f")}async withResponse(){fe(this,Od,!0,"f");let e=await z(this,jE,"f");if(!e)throw new Error("Could not resolve a `Response` object");return{data:this,response:e,request_id:e.headers.get("request-id")}}static fromReadableStream(e){let r=new t(null);return r._run(()=>r._fromReadableStream(e)),r}static createMessage(e,r,n,{logger:i}={}){let o=new t(r,{logger:i});for(let s of r.messages)o._addMessageParam(s);return fe(o,am,{...r,stream:!0},"f"),o._run(()=>o._createMessage(e,{...r,stream:!0},{...n,headers:{...n?.headers,"X-Stainless-Helper-Method":"stream"}})),o}_run(e){e().then(()=>{this._emitFinal(),this._emit("end")},z(this,gI,"f"))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,r=!0){this.receivedMessages.push(e),r&&this._emit("message",e)}async _createMessage(e,r,n){let i=n?.signal,o;i&&(i.aborted&&this.controller.abort(),o=this.controller.abort.bind(this.controller),i.addEventListener("abort",o));try{z(this,to,"m",yB).call(this);let{response:s,data:a}=await e.create({...r,stream:!0},{...n,signal:this.controller.signal}).withResponse();this._connected(s);for await(let c of a)z(this,to,"m",SB).call(this,c);if(a.controller.signal?.aborted)throw new Xr;z(this,to,"m",EB).call(this)}finally{i&&o&&i.removeEventListener("abort",o)}}_connected(e){this.ended||(fe(this,hI,e,"f"),fe(this,mI,e?.headers.get("request-id"),"f"),z(this,uI,"f").call(this,e),this._emit("connect"))}get ended(){return z(this,GE,"f")}get errored(){return z(this,fI,"f")}get aborted(){return z(this,pI,"f")}abort(){this.controller.abort()}on(e,r){return(z(this,Ya,"f")[e]||(z(this,Ya,"f")[e]=[])).push({listener:r}),this}off(e,r){let n=z(this,Ya,"f")[e];if(!n)return this;let i=n.findIndex(o=>o.listener===r);return i>=0&&n.splice(i,1),this}once(e,r){return(z(this,Ya,"f")[e]||(z(this,Ya,"f")[e]=[])).push({listener:r,once:!0}),this}emitted(e){return new Promise((r,n)=>{fe(this,Od,!0,"f"),e!=="error"&&this.once("error",n),this.once(e,r)})}async done(){fe(this,Od,!0,"f"),await z(this,qE,"f")}get currentMessage(){return z(this,_l,"f")}async finalMessage(){return await this.done(),z(this,to,"m",_B).call(this)}async finalText(){return await this.done(),z(this,to,"m",ape).call(this)}_emit(e,...r){if(z(this,GE,"f"))return;e==="end"&&(fe(this,GE,!0,"f"),z(this,dI,"f").call(this));let n=z(this,Ya,"f")[e];if(n&&(z(this,Ya,"f")[e]=n.filter(i=>!i.once),n.forEach(({listener:i})=>i(...r))),e==="abort"){let i=r[0];!z(this,Od,"f")&&!n?.length&&Promise.reject(i),z(this,BE,"f").call(this,i),z(this,VE,"f").call(this,i),this._emit("end");return}if(e==="error"){let i=r[0];!z(this,Od,"f")&&!n?.length&&Promise.reject(i),z(this,BE,"f").call(this,i),z(this,VE,"f").call(this,i),this._emit("end")}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit("finalMessage",z(this,to,"m",_B).call(this))}async _fromReadableStream(e,r){let n=r?.signal,i;n&&(n.aborted&&this.controller.abort(),i=this.controller.abort.bind(this.controller),n.addEventListener("abort",i));try{z(this,to,"m",yB).call(this),this._connected(null);let o=Us.fromReadableStream(e,this.controller);for await(let s of o)z(this,to,"m",SB).call(this,s);if(o.controller.signal?.aborted)throw new Xr;z(this,to,"m",EB).call(this)}finally{n&&i&&n.removeEventListener("abort",i)}}[(_l=new WeakMap,am=new WeakMap,jE=new WeakMap,uI=new WeakMap,BE=new WeakMap,qE=new WeakMap,dI=new WeakMap,VE=new WeakMap,Ya=new WeakMap,GE=new WeakMap,fI=new WeakMap,pI=new WeakMap,Od=new WeakMap,hI=new WeakMap,mI=new WeakMap,HE=new WeakMap,gI=new WeakMap,to=new WeakSet,_B=function(){if(this.receivedMessages.length===0)throw new Te("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},ape=function(){if(this.receivedMessages.length===0)throw new Te("stream ended without producing a Message with role=assistant");let r=this.receivedMessages.at(-1).content.filter(n=>n.type==="text").map(n=>n.text);if(r.length===0)throw new Te("stream ended without producing a content block with type=text");return r.join(" ")},yB=function(){this.ended||fe(this,_l,void 0,"f")},SB=function(r){if(this.ended)return;let n=z(this,to,"m",cpe).call(this,r);switch(this._emit("streamEvent",r,n),r.type){case"content_block_delta":{let i=n.content.at(-1);switch(r.delta.type){case"text_delta":{i.type==="text"&&this._emit("text",r.delta.text,i.text||"");break}case"citations_delta":{i.type==="text"&&this._emit("citation",r.delta.citation,i.citations??[]);break}case"input_json_delta":{upe(i)&&i.input&&this._emit("inputJson",r.delta.partial_json,i.input);break}case"thinking_delta":{i.type==="thinking"&&this._emit("thinking",r.delta.thinking,i.thinking);break}case"signature_delta":{i.type==="thinking"&&this._emit("signature",i.signature);break}case"compaction_delta":{i.type==="compaction"&&i.content&&this._emit("compaction",i.content);break}default:r.delta}break}case"message_stop":{this._addMessageParam(n),this._addMessage(mB(n,z(this,am,"f"),{logger:z(this,HE,"f")}),!0);break}case"content_block_stop":{this._emit("contentBlock",n.content.at(-1));break}case"message_start":{fe(this,_l,n,"f");break}case"content_block_start":case"message_delta":break}},EB=function(){if(this.ended)throw new Te("stream has ended, this shouldn't happen");let r=z(this,_l,"f");if(!r)throw new Te("request ended without sending any chunks");return fe(this,_l,void 0,"f"),mB(r,z(this,am,"f"),{logger:z(this,HE,"f")})},cpe=function(r){let n=z(this,_l,"f");if(r.type==="message_start"){if(n)throw new Te(`Unexpected event order, got ${r.type} before receiving "message_stop"`);return r.message}if(!n)throw new Te(`Unexpected event order, got ${r.type} before "message_start"`);switch(r.type){case"message_stop":return n;case"message_delta":return n.container=r.delta.container,n.stop_reason=r.delta.stop_reason,n.stop_sequence=r.delta.stop_sequence,n.usage.output_tokens=r.usage.output_tokens,n.context_management=r.context_management,r.usage.input_tokens!=null&&(n.usage.input_tokens=r.usage.input_tokens),r.usage.cache_creation_input_tokens!=null&&(n.usage.cache_creation_input_tokens=r.usage.cache_creation_input_tokens),r.usage.cache_read_input_tokens!=null&&(n.usage.cache_read_input_tokens=r.usage.cache_read_input_tokens),r.usage.server_tool_use!=null&&(n.usage.server_tool_use=r.usage.server_tool_use),r.usage.iterations!=null&&(n.usage.iterations=r.usage.iterations),n;case"content_block_start":return n.content.push(r.content_block),n;case"content_block_delta":{let i=n.content.at(r.index);switch(r.delta.type){case"text_delta":{i?.type==="text"&&(n.content[r.index]={...i,text:(i.text||"")+r.delta.text});break}case"citations_delta":{i?.type==="text"&&(n.content[r.index]={...i,citations:[...i.citations??[],r.delta.citation]});break}case"input_json_delta":{if(i&&upe(i)){let o=i[lpe]||"";o+=r.delta.partial_json;let s={...i};if(Object.defineProperty(s,lpe,{value:o,enumerable:!1,writable:!0}),o)try{s.input=lI(o)}catch(a){let c=new Te(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${a}. JSON: ${o}`);z(this,gI,"f").call(this,c)}n.content[r.index]=s}break}case"thinking_delta":{i?.type==="thinking"&&(n.content[r.index]={...i,thinking:i.thinking+r.delta.thinking});break}case"signature_delta":{i?.type==="thinking"&&(n.content[r.index]={...i,signature:r.delta.signature});break}case"compaction_delta":{i?.type==="compaction"&&(n.content[r.index]={...i,content:(i.content||"")+r.delta.content});break}default:r.delta}return n}case"content_block_stop":return n}},Symbol.asyncIterator)](){let e=[],r=[],n=!1;return this.on("streamEvent",i=>{let o=r.shift();o?o.resolve(i):e.push(i)}),this.on("end",()=>{n=!0;for(let i of r)i.resolve(void 0);r.length=0}),this.on("abort",i=>{n=!0;for(let o of r)o.reject(i);r.length=0}),this.on("error",i=>{n=!0;for(let o of r)o.reject(i);r.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:n?{value:void 0,done:!0}:new Promise((o,s)=>r.push({resolve:o,reject:s})).then(o=>o?{value:o,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new Us(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}};var Nd=class extends Error{constructor(e){let r=typeof e=="string"?e:e.map(n=>n.type==="text"?n.text:`[${n.type}]`).join(" ");super(r),this.name="ToolError",this.content=e}};var dpe=`You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:
158
158
  1. Task Overview
159
159
  The user's core request and success criteria
160
160
  Any clarifications or constraints they specified
@@ -176,16 +176,16 @@ User preferences or style requirements
176
176
  Domain-specific details that aren't obvious
177
177
  Any promises made to the user
178
178
  Be concise but complete\u2014err on the side of including information that would prevent duplicate work or repeated mistakes. Write in a way that enables immediate resumption of the task.
179
- Wrap your summary in <summary></summary> tags.`;var WE,cm,kd,br,ri,Ri,Ka,yl,YE,fpe,vB;function ppe(){let t,e;return{promise:new Promise((n,i)=>{t=n,e=i}),resolve:t,reject:e}}var lm=class{constructor(e,r,n){WE.add(this),this.client=e,cm.set(this,!1),kd.set(this,!1),br.set(this,void 0),ri.set(this,void 0),Ri.set(this,void 0),Ka.set(this,void 0),yl.set(this,void 0),YE.set(this,0),fe(this,br,{params:{...r,messages:structuredClone(r.messages)}},"f");let o=["BetaToolRunner",...hB(r.tools,r.messages)].join(", ");fe(this,ri,{...n,headers:Y([{"x-stainless-helper":o},n?.headers])},"f"),fe(this,yl,ppe(),"f"),r.compactionControl?.enabled&&console.warn('Anthropic: The `compactionControl` parameter is deprecated and will be removed in a future version. Use server-side compaction instead by passing `edits: [{ type: "compact_20260112" }]` in the params passed to `toolRunner()`. See https://platform.claude.com/docs/en/build-with-claude/compaction')}async*[(cm=new WeakMap,kd=new WeakMap,br=new WeakMap,ri=new WeakMap,Ri=new WeakMap,Ka=new WeakMap,yl=new WeakMap,YE=new WeakMap,WE=new WeakSet,fpe=async function(){let r=z(this,br,"f").params.compactionControl;if(!r||!r.enabled)return!1;let n=0;if(z(this,Ri,"f")!==void 0)try{let l=await z(this,Ri,"f");n=l.usage.input_tokens+(l.usage.cache_creation_input_tokens??0)+(l.usage.cache_read_input_tokens??0)+l.usage.output_tokens}catch{return!1}let i=r.contextTokenThreshold??1e5;if(n<i)return!1;let o=r.model??z(this,br,"f").params.model,s=r.summaryPrompt??dpe,a=z(this,br,"f").params.messages;if(a[a.length-1].role==="assistant"){let l=a[a.length-1];if(Array.isArray(l.content)){let u=l.content.filter(d=>d.type!=="tool_use");u.length===0?a.pop():l.content=u}}let c=await this.client.beta.messages.create({model:o,messages:[...a,{role:"user",content:[{type:"text",text:s}]}],max_tokens:z(this,br,"f").params.max_tokens},{signal:z(this,ri,"f").signal,headers:Y([z(this,ri,"f").headers,{"x-stainless-helper":"compaction"}])});if(c.content[0]?.type!=="text")throw new Te("Expected text response for compaction");return z(this,br,"f").params.messages=[{role:"user",content:c.content}],!0},Symbol.asyncIterator)](){var e;if(z(this,cm,"f"))throw new Te("Cannot iterate over a consumed stream");fe(this,cm,!0,"f"),fe(this,kd,!0,"f"),fe(this,Ka,void 0,"f");try{for(;;){let r;try{if(z(this,br,"f").params.max_iterations&&z(this,YE,"f")>=z(this,br,"f").params.max_iterations)break;fe(this,kd,!1,"f"),fe(this,Ka,void 0,"f"),fe(this,YE,(e=z(this,YE,"f"),e++,e),"f"),fe(this,Ri,void 0,"f");let{max_iterations:n,compactionControl:i,...o}=z(this,br,"f").params;if(o.stream?(r=this.client.beta.messages.stream({...o},z(this,ri,"f")),fe(this,Ri,r.finalMessage(),"f"),z(this,Ri,"f").catch(()=>{}),yield r):(fe(this,Ri,this.client.beta.messages.create({...o,stream:!1},z(this,ri,"f")),"f"),yield z(this,Ri,"f")),!await z(this,WE,"m",fpe).call(this)){if(!z(this,kd,"f")){let{role:c,content:l}=await z(this,Ri,"f");z(this,br,"f").params.messages.push({role:c,content:l})}let a=await z(this,WE,"m",vB).call(this,z(this,br,"f").params.messages.at(-1));if(a)z(this,br,"f").params.messages.push(a);else if(!z(this,kd,"f"))break}}finally{r&&r.abort()}}if(!z(this,Ri,"f"))throw new Te("ToolRunner concluded without a message from the server");z(this,yl,"f").resolve(await z(this,Ri,"f"))}catch(r){throw fe(this,cm,!1,"f"),z(this,yl,"f").promise.catch(()=>{}),z(this,yl,"f").reject(r),fe(this,yl,ppe(),"f"),r}}setMessagesParams(e){typeof e=="function"?z(this,br,"f").params=e(z(this,br,"f").params):z(this,br,"f").params=e,fe(this,kd,!0,"f"),fe(this,Ka,void 0,"f")}setRequestOptions(e){typeof e=="function"?fe(this,ri,e(z(this,ri,"f")),"f"):fe(this,ri,{...z(this,ri,"f"),...e},"f")}async generateToolResponse(e=z(this,ri,"f").signal){let r=await z(this,Ri,"f")??this.params.messages.at(-1);return r?z(this,WE,"m",vB).call(this,r,e):null}done(){return z(this,yl,"f").promise}async runUntilDone(){if(!z(this,cm,"f"))for await(let e of this);return this.done()}get params(){return z(this,br,"f").params}pushMessages(...e){this.setMessagesParams(r=>({...r,messages:[...r.messages,...e]}))}then(e,r){return this.runUntilDone().then(e,r)}};vB=async function(e,r=z(this,ri,"f").signal){return z(this,Ka,"f")!==void 0?z(this,Ka,"f"):(fe(this,Ka,bKe(z(this,br,"f").params,e,{...z(this,ri,"f"),signal:r}),"f"),z(this,Ka,"f"))};async function bKe(t,e=t.messages.at(-1),r){if(!e||e.role!=="assistant"||!e.content||typeof e.content=="string")return null;let n=e.content.filter(o=>o.type==="tool_use");return n.length===0?null:{role:"user",content:await Promise.all(n.map(async o=>{let s=t.tools.find(a=>("name"in a?a.name:a.mcp_server_name)===o.name);if(!s||!("run"in s))return{type:"tool_result",tool_use_id:o.id,content:`Error: Tool '${o.name}' not found`,is_error:!0};try{let a=o.input;"parse"in s&&s.parse&&(a=s.parse(a));let c=await s.run(a,{toolUseBlock:o,signal:r?.signal});return{type:"tool_result",tool_use_id:o.id,content:c}}catch(a){return{type:"tool_result",tool_use_id:o.id,content:a instanceof Nd?a.content:`Error: ${a instanceof Error?a.message:String(a)}`,is_error:!0}}}))}}var um=class t{constructor(e,r){this.iterator=e,this.controller=r}async*decoder(){let e=new Ha;for await(let r of this.iterator)for(let n of e.decode(r))yield JSON.parse(n);for(let r of e.flush())yield JSON.parse(r)}[Symbol.asyncIterator](){return this.decoder()}static fromResponse(e,r){if(!e.body)throw r.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative"?new Te("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api"):new Te("Attempted to iterate over a response with no body");return new t(kE(e.body),r)}};var dm=class extends Le{create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/messages/batches?beta=true",{body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"message-batches-2024-09-24"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/messages/batches/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"message-batches-2024-09-24"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/messages/batches?beta=true",eo,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"message-batches-2024-09-24"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/messages/batches/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"message-batches-2024-09-24"].toString()},n?.headers])})}cancel(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/messages/batches/${e}/cancel?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"message-batches-2024-09-24"].toString()},n?.headers])})}async results(e,r={},n){let i=await this.retrieve(e);if(!i.results_url)throw new Te(`No batch \`results_url\`; Has it finished processing? ${i.processing_status} - ${i.id}`);let{betas:o}=r??{};return this._client.get(i.results_url,{...n,headers:Y([{"anthropic-beta":[...o??[],"message-batches-2024-09-24"].toString(),Accept:"application/binary"},n?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((s,a)=>um.fromResponse(a.response,a.controller))}};var hpe={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026"},wKe=["claude-mythos-preview","claude-opus-4-6"],Za=class extends Le{constructor(){super(...arguments),this.batches=new dm(this._client)}create(e,r){let n=mpe(e),{betas:i,...o}=n;o.model in hpe&&console.warn(`The model '${o.model}' is deprecated and will reach end-of-life on ${hpe[o.model]}
180
- Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`),wKe.includes(o.model)&&o.thinking&&o.thinking.type==="enabled"&&console.warn(`Using Claude with ${o.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let s=this._client._options.timeout;if(!o.stream&&s==null){let c=cI[o.model]??void 0;s=this._client.calculateNonstreamingTimeout(o.max_tokens,c)}let a=aI(o.tools,o.messages);return this._client.post("/v1/messages?beta=true",{body:o,timeout:s??6e5,...r,headers:Y([{...i?.toString()!=null?{"anthropic-beta":i?.toString()}:void 0},a,r?.headers]),stream:n.stream??!1})}parse(e,r){return r={...r,headers:Y([{"anthropic-beta":[...e.betas??[],"structured-outputs-2025-12-15"].toString()},r?.headers])},this.create(e,r).then(n=>gB(n,e,{logger:this._client.logger??console}))}stream(e,r){return _I.createMessage(this,e,r)}countTokens(e,r){let n=mpe(e),{betas:i,...o}=n;return this._client.post("/v1/messages/count_tokens?beta=true",{body:o,...r,headers:Y([{"anthropic-beta":[...i??[],"token-counting-2024-11-01"].toString()},r?.headers])})}toolRunner(e,r){return new lm(this._client,e,r)}};function mpe(t){if(!t.output_format)return t;if(t.output_config?.format)throw new Te("Both output_format and output_config.format were provided. Please use only output_config.format (output_format is deprecated).");let{output_format:e,...r}=t;return{...r,output_config:{...t.output_config,format:e}}}Za.Batches=dm;Za.BetaToolRunner=lm;Za.ToolError=Nd;var fm=class extends Le{list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/sessions/${e}/events?beta=true`,yt,{query:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}send(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/sessions/${e}/events?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}stream(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/sessions/${e}/events/stream?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers]),stream:!0})}};var pm=class extends Le{retrieve(e,r,n){let{session_id:i,betas:o}=r;return this._client.get(ue`/v1/sessions/${i}/resources/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{session_id:i,betas:o,...s}=r;return this._client.post(ue`/v1/sessions/${i}/resources/${e}?beta=true`,{body:s,...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/sessions/${e}/resources?beta=true`,yt,{query:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}delete(e,r,n){let{session_id:i,betas:o}=r;return this._client.delete(ue`/v1/sessions/${i}/resources/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}add(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/sessions/${e}/resources?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var Sl=class extends Le{constructor(){super(...arguments),this.events=new fm(this._client),this.resources=new pm(this._client)}create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/sessions?beta=true",{body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/sessions/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/sessions/${e}?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/sessions?beta=true",yt,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/sessions/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/sessions/${e}/archive?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};Sl.Events=fm;Sl.Resources=pm;var hm=class extends Le{create(e,r={},n){let{betas:i,...o}=r??{};return this._client.post(ue`/v1/skills/${e}/versions?beta=true`,Xh({body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"skills-2025-10-02"].toString()},n?.headers])},this._client))}retrieve(e,r,n){let{skill_id:i,betas:o}=r;return this._client.get(ue`/v1/skills/${i}/versions/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...o??[],"skills-2025-10-02"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/skills/${e}/versions?beta=true`,yt,{query:o,...n,headers:Y([{"anthropic-beta":[...i??[],"skills-2025-10-02"].toString()},n?.headers])})}delete(e,r,n){let{skill_id:i,betas:o}=r;return this._client.delete(ue`/v1/skills/${i}/versions/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...o??[],"skills-2025-10-02"].toString()},n?.headers])})}};var Md=class extends Le{constructor(){super(...arguments),this.versions=new hm(this._client)}create(e={},r){let{betas:n,...i}=e??{};return this._client.post("/v1/skills?beta=true",Xh({body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"skills-2025-10-02"].toString()},r?.headers])},this._client,!1))}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/skills/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"skills-2025-10-02"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/skills?beta=true",yt,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"skills-2025-10-02"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/skills/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"skills-2025-10-02"].toString()},n?.headers])})}};Md.Versions=hm;var mm=class extends Le{create(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/vaults/${e}/credentials?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}retrieve(e,r,n){let{vault_id:i,betas:o}=r;return this._client.get(ue`/v1/vaults/${i}/credentials/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{vault_id:i,betas:o,...s}=r;return this._client.post(ue`/v1/vaults/${i}/credentials/${e}?beta=true`,{body:s,...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/vaults/${e}/credentials?beta=true`,yt,{query:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}delete(e,r,n){let{vault_id:i,betas:o}=r;return this._client.delete(ue`/v1/vaults/${i}/credentials/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r,n){let{vault_id:i,betas:o}=r;return this._client.post(ue`/v1/vaults/${i}/credentials/${e}/archive?beta=true`,{...n,headers:Y([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var $d=class extends Le{constructor(){super(...arguments),this.credentials=new mm(this._client)}create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/vaults?beta=true",{body:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/vaults/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/vaults/${e}?beta=true`,{body:o,...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/vaults?beta=true",yt,{query:i,...r,headers:Y([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/vaults/${e}?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/vaults/${e}/archive?beta=true`,{...n,headers:Y([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};$d.Credentials=mm;var Qr=class extends Le{constructor(){super(...arguments),this.models=new tm(this._client),this.messages=new Za(this._client),this.agents=new Pd(this._client),this.environments=new Qh(this._client),this.sessions=new Sl(this._client),this.vaults=new $d(this._client),this.memoryStores=new gl(this._client),this.files=new em(this._client),this.skills=new Md(this._client),this.userProfiles=new rm(this._client)}};Qr.Models=tm;Qr.Messages=Za;Qr.Agents=Pd;Qr.Environments=Qh;Qr.Sessions=Sl;Qr.Vaults=$d;Qr.MemoryStores=gl;Qr.Files=em;Qr.Skills=Md;Qr.UserProfiles=rm;var Dd=class extends Le{create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/complete",{body:i,timeout:this._client._options.timeout??6e5,...r,headers:Y([{...n?.toString()!=null?{"anthropic-beta":n?.toString()}:void 0},r?.headers]),stream:e.stream??!1})}};function gpe(t){return t?.output_config?.format}function bB(t,e,r){let n=gpe(e);return!e||!("parse"in(n??{}))?{...t,content:t.content.map(i=>i.type==="text"?Object.defineProperty({...i},"parsed_output",{value:null,enumerable:!1}):i),parsed_output:null}:TB(t,e,r)}function TB(t,e,r){let n=null,i=t.content.map(o=>{if(o.type==="text"){let s=kKe(e,o.text);return n===null&&(n=s),Object.defineProperty({...o},"parsed_output",{value:s,enumerable:!1})}return o});return{...t,content:i,parsed_output:n}}function kKe(t,e){let r=gpe(t);if(r?.type!=="json_schema")return null;try{return"parse"in r?r.parse(e):JSON.parse(e)}catch(n){throw new Te(`Failed to parse structured output: ${n}`)}}var ro,El,gm,KE,yI,ZE,JE,SI,XE,Ja,QE,EI,vI,Ld,bI,TI,ev,wB,_pe,AB,xB,RB,CB,ype,Spe="__json_buf";function Epe(t){return t.type==="tool_use"||t.type==="server_tool_use"}var wI=class t{constructor(e,r){ro.add(this),this.messages=[],this.receivedMessages=[],El.set(this,void 0),gm.set(this,null),this.controller=new AbortController,KE.set(this,void 0),yI.set(this,()=>{}),ZE.set(this,()=>{}),JE.set(this,void 0),SI.set(this,()=>{}),XE.set(this,()=>{}),Ja.set(this,{}),QE.set(this,!1),EI.set(this,!1),vI.set(this,!1),Ld.set(this,!1),bI.set(this,void 0),TI.set(this,void 0),ev.set(this,void 0),AB.set(this,n=>{if(fe(this,EI,!0,"f"),Ga(n)&&(n=new Xr),n instanceof Xr)return fe(this,vI,!0,"f"),this._emit("abort",n);if(n instanceof Te)return this._emit("error",n);if(n instanceof Error){let i=new Te(n.message);return i.cause=n,this._emit("error",i)}return this._emit("error",new Te(String(n)))}),fe(this,KE,new Promise((n,i)=>{fe(this,yI,n,"f"),fe(this,ZE,i,"f")}),"f"),fe(this,JE,new Promise((n,i)=>{fe(this,SI,n,"f"),fe(this,XE,i,"f")}),"f"),z(this,KE,"f").catch(()=>{}),z(this,JE,"f").catch(()=>{}),fe(this,gm,e,"f"),fe(this,ev,r?.logger??console,"f")}get response(){return z(this,bI,"f")}get request_id(){return z(this,TI,"f")}async withResponse(){fe(this,Ld,!0,"f");let e=await z(this,KE,"f");if(!e)throw new Error("Could not resolve a `Response` object");return{data:this,response:e,request_id:e.headers.get("request-id")}}static fromReadableStream(e){let r=new t(null);return r._run(()=>r._fromReadableStream(e)),r}static createMessage(e,r,n,{logger:i}={}){let o=new t(r,{logger:i});for(let s of r.messages)o._addMessageParam(s);return fe(o,gm,{...r,stream:!0},"f"),o._run(()=>o._createMessage(e,{...r,stream:!0},{...n,headers:{...n?.headers,"X-Stainless-Helper-Method":"stream"}})),o}_run(e){e().then(()=>{this._emitFinal(),this._emit("end")},z(this,AB,"f"))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,r=!0){this.receivedMessages.push(e),r&&this._emit("message",e)}async _createMessage(e,r,n){let i=n?.signal,o;i&&(i.aborted&&this.controller.abort(),o=this.controller.abort.bind(this.controller),i.addEventListener("abort",o));try{z(this,ro,"m",xB).call(this);let{response:s,data:a}=await e.create({...r,stream:!0},{...n,signal:this.controller.signal}).withResponse();this._connected(s);for await(let c of a)z(this,ro,"m",RB).call(this,c);if(a.controller.signal?.aborted)throw new Xr;z(this,ro,"m",CB).call(this)}finally{i&&o&&i.removeEventListener("abort",o)}}_connected(e){this.ended||(fe(this,bI,e,"f"),fe(this,TI,e?.headers.get("request-id"),"f"),z(this,yI,"f").call(this,e),this._emit("connect"))}get ended(){return z(this,QE,"f")}get errored(){return z(this,EI,"f")}get aborted(){return z(this,vI,"f")}abort(){this.controller.abort()}on(e,r){return(z(this,Ja,"f")[e]||(z(this,Ja,"f")[e]=[])).push({listener:r}),this}off(e,r){let n=z(this,Ja,"f")[e];if(!n)return this;let i=n.findIndex(o=>o.listener===r);return i>=0&&n.splice(i,1),this}once(e,r){return(z(this,Ja,"f")[e]||(z(this,Ja,"f")[e]=[])).push({listener:r,once:!0}),this}emitted(e){return new Promise((r,n)=>{fe(this,Ld,!0,"f"),e!=="error"&&this.once("error",n),this.once(e,r)})}async done(){fe(this,Ld,!0,"f"),await z(this,JE,"f")}get currentMessage(){return z(this,El,"f")}async finalMessage(){return await this.done(),z(this,ro,"m",wB).call(this)}async finalText(){return await this.done(),z(this,ro,"m",_pe).call(this)}_emit(e,...r){if(z(this,QE,"f"))return;e==="end"&&(fe(this,QE,!0,"f"),z(this,SI,"f").call(this));let n=z(this,Ja,"f")[e];if(n&&(z(this,Ja,"f")[e]=n.filter(i=>!i.once),n.forEach(({listener:i})=>i(...r))),e==="abort"){let i=r[0];!z(this,Ld,"f")&&!n?.length&&Promise.reject(i),z(this,ZE,"f").call(this,i),z(this,XE,"f").call(this,i),this._emit("end");return}if(e==="error"){let i=r[0];!z(this,Ld,"f")&&!n?.length&&Promise.reject(i),z(this,ZE,"f").call(this,i),z(this,XE,"f").call(this,i),this._emit("end")}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit("finalMessage",z(this,ro,"m",wB).call(this))}async _fromReadableStream(e,r){let n=r?.signal,i;n&&(n.aborted&&this.controller.abort(),i=this.controller.abort.bind(this.controller),n.addEventListener("abort",i));try{z(this,ro,"m",xB).call(this),this._connected(null);let o=Us.fromReadableStream(e,this.controller);for await(let s of o)z(this,ro,"m",RB).call(this,s);if(o.controller.signal?.aborted)throw new Xr;z(this,ro,"m",CB).call(this)}finally{n&&i&&n.removeEventListener("abort",i)}}[(El=new WeakMap,gm=new WeakMap,KE=new WeakMap,yI=new WeakMap,ZE=new WeakMap,JE=new WeakMap,SI=new WeakMap,XE=new WeakMap,Ja=new WeakMap,QE=new WeakMap,EI=new WeakMap,vI=new WeakMap,Ld=new WeakMap,bI=new WeakMap,TI=new WeakMap,ev=new WeakMap,AB=new WeakMap,ro=new WeakSet,wB=function(){if(this.receivedMessages.length===0)throw new Te("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},_pe=function(){if(this.receivedMessages.length===0)throw new Te("stream ended without producing a Message with role=assistant");let r=this.receivedMessages.at(-1).content.filter(n=>n.type==="text").map(n=>n.text);if(r.length===0)throw new Te("stream ended without producing a content block with type=text");return r.join(" ")},xB=function(){this.ended||fe(this,El,void 0,"f")},RB=function(r){if(this.ended)return;let n=z(this,ro,"m",ype).call(this,r);switch(this._emit("streamEvent",r,n),r.type){case"content_block_delta":{let i=n.content.at(-1);switch(r.delta.type){case"text_delta":{i.type==="text"&&this._emit("text",r.delta.text,i.text||"");break}case"citations_delta":{i.type==="text"&&this._emit("citation",r.delta.citation,i.citations??[]);break}case"input_json_delta":{Epe(i)&&i.input&&this._emit("inputJson",r.delta.partial_json,i.input);break}case"thinking_delta":{i.type==="thinking"&&this._emit("thinking",r.delta.thinking,i.thinking);break}case"signature_delta":{i.type==="thinking"&&this._emit("signature",i.signature);break}default:r.delta}break}case"message_stop":{this._addMessageParam(n),this._addMessage(bB(n,z(this,gm,"f"),{logger:z(this,ev,"f")}),!0);break}case"content_block_stop":{this._emit("contentBlock",n.content.at(-1));break}case"message_start":{fe(this,El,n,"f");break}case"content_block_start":case"message_delta":break}},CB=function(){if(this.ended)throw new Te("stream has ended, this shouldn't happen");let r=z(this,El,"f");if(!r)throw new Te("request ended without sending any chunks");return fe(this,El,void 0,"f"),bB(r,z(this,gm,"f"),{logger:z(this,ev,"f")})},ype=function(r){let n=z(this,El,"f");if(r.type==="message_start"){if(n)throw new Te(`Unexpected event order, got ${r.type} before receiving "message_stop"`);return r.message}if(!n)throw new Te(`Unexpected event order, got ${r.type} before "message_start"`);switch(r.type){case"message_stop":return n;case"message_delta":return n.stop_reason=r.delta.stop_reason,n.stop_sequence=r.delta.stop_sequence,n.usage.output_tokens=r.usage.output_tokens,r.usage.input_tokens!=null&&(n.usage.input_tokens=r.usage.input_tokens),r.usage.cache_creation_input_tokens!=null&&(n.usage.cache_creation_input_tokens=r.usage.cache_creation_input_tokens),r.usage.cache_read_input_tokens!=null&&(n.usage.cache_read_input_tokens=r.usage.cache_read_input_tokens),r.usage.server_tool_use!=null&&(n.usage.server_tool_use=r.usage.server_tool_use),n;case"content_block_start":return n.content.push({...r.content_block}),n;case"content_block_delta":{let i=n.content.at(r.index);switch(r.delta.type){case"text_delta":{i?.type==="text"&&(n.content[r.index]={...i,text:(i.text||"")+r.delta.text});break}case"citations_delta":{i?.type==="text"&&(n.content[r.index]={...i,citations:[...i.citations??[],r.delta.citation]});break}case"input_json_delta":{if(i&&Epe(i)){let o=i[Spe]||"";o+=r.delta.partial_json;let s={...i};Object.defineProperty(s,Spe,{value:o,enumerable:!1,writable:!0}),o&&(s.input=lI(o)),n.content[r.index]=s}break}case"thinking_delta":{i?.type==="thinking"&&(n.content[r.index]={...i,thinking:i.thinking+r.delta.thinking});break}case"signature_delta":{i?.type==="thinking"&&(n.content[r.index]={...i,signature:r.delta.signature});break}default:r.delta}return n}case"content_block_stop":return n}},Symbol.asyncIterator)](){let e=[],r=[],n=!1;return this.on("streamEvent",i=>{let o=r.shift();o?o.resolve(i):e.push(i)}),this.on("end",()=>{n=!0;for(let i of r)i.resolve(void 0);r.length=0}),this.on("abort",i=>{n=!0;for(let o of r)o.reject(i);r.length=0}),this.on("error",i=>{n=!0;for(let o of r)o.reject(i);r.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:n?{value:void 0,done:!0}:new Promise((o,s)=>r.push({resolve:o,reject:s})).then(o=>o?{value:o,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new Us(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}};var _m=class extends Le{create(e,r){return this._client.post("/v1/messages/batches",{body:e,...r})}retrieve(e,r){return this._client.get(ue`/v1/messages/batches/${e}`,r)}list(e={},r){return this._client.getAPIList("/v1/messages/batches",eo,{query:e,...r})}delete(e,r){return this._client.delete(ue`/v1/messages/batches/${e}`,r)}cancel(e,r){return this._client.post(ue`/v1/messages/batches/${e}/cancel`,r)}async results(e,r){let n=await this.retrieve(e);if(!n.results_url)throw new Te(`No batch \`results_url\`; Has it finished processing? ${n.processing_status} - ${n.id}`);return this._client.get(n.results_url,{...r,headers:Y([{Accept:"application/binary"},r?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((i,o)=>um.fromResponse(o.response,o.controller))}};var vl=class extends Le{constructor(){super(...arguments),this.batches=new _m(this._client)}create(e,r){e.model in vpe&&console.warn(`The model '${e.model}' is deprecated and will reach end-of-life on ${vpe[e.model]}
181
- Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`),$Ke.includes(e.model)&&e.thinking&&e.thinking.type==="enabled"&&console.warn(`Using Claude with ${e.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let n=this._client._options.timeout;if(!e.stream&&n==null){let o=cI[e.model]??void 0;n=this._client.calculateNonstreamingTimeout(e.max_tokens,o)}let i=aI(e.tools,e.messages);return this._client.post("/v1/messages",{body:e,timeout:n??6e5,...r,headers:Y([i,r?.headers]),stream:e.stream??!1})}parse(e,r){return this.create(e,r).then(n=>TB(n,e,{logger:this._client.logger??console}))}stream(e,r){return wI.createMessage(this,e,r,{logger:this._client.logger??console})}countTokens(e,r){return this._client.post("/v1/messages/count_tokens",{body:e,...r})}},vpe={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026","claude-3-5-haiku-latest":"February 19th, 2026","claude-3-5-haiku-20241022":"February 19th, 2026","claude-opus-4-0":"June 15th, 2026","claude-opus-4-20250514":"June 15th, 2026","claude-sonnet-4-0":"June 15th, 2026","claude-sonnet-4-20250514":"June 15th, 2026"},$Ke=["claude-mythos-preview","claude-opus-4-6"];vl.Batches=_m;var Ud=class extends Le{retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/models/${e}`,{...n,headers:Y([{...i?.toString()!=null?{"anthropic-beta":i?.toString()}:void 0},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/models",eo,{query:i,...r,headers:Y([{...n?.toString()!=null?{"anthropic-beta":n?.toString()}:void 0},r?.headers])})}};var tv=t=>{if(typeof globalThis.process<"u")return globalThis.process.env?.[t]?.trim()||void 0;if(typeof globalThis.Deno<"u")return globalThis.Deno.env?.get?.(t)?.trim()||void 0};var IB,PB,AI,bpe,Tpe="\\n\\nHuman:",wpe="\\n\\nAssistant:",Jt=class{constructor({baseURL:e=tv("ANTHROPIC_BASE_URL"),apiKey:r=tv("ANTHROPIC_API_KEY")??null,authToken:n=tv("ANTHROPIC_AUTH_TOKEN")??null,...i}={}){IB.add(this),AI.set(this,void 0);let o={apiKey:r,authToken:n,...i,baseURL:e||"https://api.anthropic.com"};if(!o.dangerouslyAllowBrowser&&qfe())throw new Te(`It looks like you're running in a browser-like environment.
179
+ Wrap your summary in <summary></summary> tags.`;var WE,cm,kd,br,ri,Ri,Ka,yl,YE,fpe,vB;function ppe(){let t,e;return{promise:new Promise((n,i)=>{t=n,e=i}),resolve:t,reject:e}}var lm=class{constructor(e,r,n){WE.add(this),this.client=e,cm.set(this,!1),kd.set(this,!1),br.set(this,void 0),ri.set(this,void 0),Ri.set(this,void 0),Ka.set(this,void 0),yl.set(this,void 0),YE.set(this,0),fe(this,br,{params:{...r,messages:structuredClone(r.messages)}},"f");let o=["BetaToolRunner",...hB(r.tools,r.messages)].join(", ");fe(this,ri,{...n,headers:K([{"x-stainless-helper":o},n?.headers])},"f"),fe(this,yl,ppe(),"f"),r.compactionControl?.enabled&&console.warn('Anthropic: The `compactionControl` parameter is deprecated and will be removed in a future version. Use server-side compaction instead by passing `edits: [{ type: "compact_20260112" }]` in the params passed to `toolRunner()`. See https://platform.claude.com/docs/en/build-with-claude/compaction')}async*[(cm=new WeakMap,kd=new WeakMap,br=new WeakMap,ri=new WeakMap,Ri=new WeakMap,Ka=new WeakMap,yl=new WeakMap,YE=new WeakMap,WE=new WeakSet,fpe=async function(){let r=z(this,br,"f").params.compactionControl;if(!r||!r.enabled)return!1;let n=0;if(z(this,Ri,"f")!==void 0)try{let l=await z(this,Ri,"f");n=l.usage.input_tokens+(l.usage.cache_creation_input_tokens??0)+(l.usage.cache_read_input_tokens??0)+l.usage.output_tokens}catch{return!1}let i=r.contextTokenThreshold??1e5;if(n<i)return!1;let o=r.model??z(this,br,"f").params.model,s=r.summaryPrompt??dpe,a=z(this,br,"f").params.messages;if(a[a.length-1].role==="assistant"){let l=a[a.length-1];if(Array.isArray(l.content)){let u=l.content.filter(d=>d.type!=="tool_use");u.length===0?a.pop():l.content=u}}let c=await this.client.beta.messages.create({model:o,messages:[...a,{role:"user",content:[{type:"text",text:s}]}],max_tokens:z(this,br,"f").params.max_tokens},{signal:z(this,ri,"f").signal,headers:K([z(this,ri,"f").headers,{"x-stainless-helper":"compaction"}])});if(c.content[0]?.type!=="text")throw new Te("Expected text response for compaction");return z(this,br,"f").params.messages=[{role:"user",content:c.content}],!0},Symbol.asyncIterator)](){var e;if(z(this,cm,"f"))throw new Te("Cannot iterate over a consumed stream");fe(this,cm,!0,"f"),fe(this,kd,!0,"f"),fe(this,Ka,void 0,"f");try{for(;;){let r;try{if(z(this,br,"f").params.max_iterations&&z(this,YE,"f")>=z(this,br,"f").params.max_iterations)break;fe(this,kd,!1,"f"),fe(this,Ka,void 0,"f"),fe(this,YE,(e=z(this,YE,"f"),e++,e),"f"),fe(this,Ri,void 0,"f");let{max_iterations:n,compactionControl:i,...o}=z(this,br,"f").params;if(o.stream?(r=this.client.beta.messages.stream({...o},z(this,ri,"f")),fe(this,Ri,r.finalMessage(),"f"),z(this,Ri,"f").catch(()=>{}),yield r):(fe(this,Ri,this.client.beta.messages.create({...o,stream:!1},z(this,ri,"f")),"f"),yield z(this,Ri,"f")),!await z(this,WE,"m",fpe).call(this)){if(!z(this,kd,"f")){let{role:c,content:l}=await z(this,Ri,"f");z(this,br,"f").params.messages.push({role:c,content:l})}let a=await z(this,WE,"m",vB).call(this,z(this,br,"f").params.messages.at(-1));if(a)z(this,br,"f").params.messages.push(a);else if(!z(this,kd,"f"))break}}finally{r&&r.abort()}}if(!z(this,Ri,"f"))throw new Te("ToolRunner concluded without a message from the server");z(this,yl,"f").resolve(await z(this,Ri,"f"))}catch(r){throw fe(this,cm,!1,"f"),z(this,yl,"f").promise.catch(()=>{}),z(this,yl,"f").reject(r),fe(this,yl,ppe(),"f"),r}}setMessagesParams(e){typeof e=="function"?z(this,br,"f").params=e(z(this,br,"f").params):z(this,br,"f").params=e,fe(this,kd,!0,"f"),fe(this,Ka,void 0,"f")}setRequestOptions(e){typeof e=="function"?fe(this,ri,e(z(this,ri,"f")),"f"):fe(this,ri,{...z(this,ri,"f"),...e},"f")}async generateToolResponse(e=z(this,ri,"f").signal){let r=await z(this,Ri,"f")??this.params.messages.at(-1);return r?z(this,WE,"m",vB).call(this,r,e):null}done(){return z(this,yl,"f").promise}async runUntilDone(){if(!z(this,cm,"f"))for await(let e of this);return this.done()}get params(){return z(this,br,"f").params}pushMessages(...e){this.setMessagesParams(r=>({...r,messages:[...r.messages,...e]}))}then(e,r){return this.runUntilDone().then(e,r)}};vB=async function(e,r=z(this,ri,"f").signal){return z(this,Ka,"f")!==void 0?z(this,Ka,"f"):(fe(this,Ka,bKe(z(this,br,"f").params,e,{...z(this,ri,"f"),signal:r}),"f"),z(this,Ka,"f"))};async function bKe(t,e=t.messages.at(-1),r){if(!e||e.role!=="assistant"||!e.content||typeof e.content=="string")return null;let n=e.content.filter(o=>o.type==="tool_use");return n.length===0?null:{role:"user",content:await Promise.all(n.map(async o=>{let s=t.tools.find(a=>("name"in a?a.name:a.mcp_server_name)===o.name);if(!s||!("run"in s))return{type:"tool_result",tool_use_id:o.id,content:`Error: Tool '${o.name}' not found`,is_error:!0};try{let a=o.input;"parse"in s&&s.parse&&(a=s.parse(a));let c=await s.run(a,{toolUseBlock:o,signal:r?.signal});return{type:"tool_result",tool_use_id:o.id,content:c}}catch(a){return{type:"tool_result",tool_use_id:o.id,content:a instanceof Nd?a.content:`Error: ${a instanceof Error?a.message:String(a)}`,is_error:!0}}}))}}var um=class t{constructor(e,r){this.iterator=e,this.controller=r}async*decoder(){let e=new Ha;for await(let r of this.iterator)for(let n of e.decode(r))yield JSON.parse(n);for(let r of e.flush())yield JSON.parse(r)}[Symbol.asyncIterator](){return this.decoder()}static fromResponse(e,r){if(!e.body)throw r.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative"?new Te("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api"):new Te("Attempted to iterate over a response with no body");return new t(kE(e.body),r)}};var dm=class extends Le{create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/messages/batches?beta=true",{body:i,...r,headers:K([{"anthropic-beta":[...n??[],"message-batches-2024-09-24"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/messages/batches/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"message-batches-2024-09-24"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/messages/batches?beta=true",eo,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"message-batches-2024-09-24"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/messages/batches/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"message-batches-2024-09-24"].toString()},n?.headers])})}cancel(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/messages/batches/${e}/cancel?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"message-batches-2024-09-24"].toString()},n?.headers])})}async results(e,r={},n){let i=await this.retrieve(e);if(!i.results_url)throw new Te(`No batch \`results_url\`; Has it finished processing? ${i.processing_status} - ${i.id}`);let{betas:o}=r??{};return this._client.get(i.results_url,{...n,headers:K([{"anthropic-beta":[...o??[],"message-batches-2024-09-24"].toString(),Accept:"application/binary"},n?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((s,a)=>um.fromResponse(a.response,a.controller))}};var hpe={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026"},wKe=["claude-mythos-preview","claude-opus-4-6"],Za=class extends Le{constructor(){super(...arguments),this.batches=new dm(this._client)}create(e,r){let n=mpe(e),{betas:i,...o}=n;o.model in hpe&&console.warn(`The model '${o.model}' is deprecated and will reach end-of-life on ${hpe[o.model]}
180
+ Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`),wKe.includes(o.model)&&o.thinking&&o.thinking.type==="enabled"&&console.warn(`Using Claude with ${o.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let s=this._client._options.timeout;if(!o.stream&&s==null){let c=cI[o.model]??void 0;s=this._client.calculateNonstreamingTimeout(o.max_tokens,c)}let a=aI(o.tools,o.messages);return this._client.post("/v1/messages?beta=true",{body:o,timeout:s??6e5,...r,headers:K([{...i?.toString()!=null?{"anthropic-beta":i?.toString()}:void 0},a,r?.headers]),stream:n.stream??!1})}parse(e,r){return r={...r,headers:K([{"anthropic-beta":[...e.betas??[],"structured-outputs-2025-12-15"].toString()},r?.headers])},this.create(e,r).then(n=>gB(n,e,{logger:this._client.logger??console}))}stream(e,r){return _I.createMessage(this,e,r)}countTokens(e,r){let n=mpe(e),{betas:i,...o}=n;return this._client.post("/v1/messages/count_tokens?beta=true",{body:o,...r,headers:K([{"anthropic-beta":[...i??[],"token-counting-2024-11-01"].toString()},r?.headers])})}toolRunner(e,r){return new lm(this._client,e,r)}};function mpe(t){if(!t.output_format)return t;if(t.output_config?.format)throw new Te("Both output_format and output_config.format were provided. Please use only output_config.format (output_format is deprecated).");let{output_format:e,...r}=t;return{...r,output_config:{...t.output_config,format:e}}}Za.Batches=dm;Za.BetaToolRunner=lm;Za.ToolError=Nd;var fm=class extends Le{list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/sessions/${e}/events?beta=true`,yt,{query:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}send(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/sessions/${e}/events?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}stream(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/sessions/${e}/events/stream?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers]),stream:!0})}};var pm=class extends Le{retrieve(e,r,n){let{session_id:i,betas:o}=r;return this._client.get(ue`/v1/sessions/${i}/resources/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{session_id:i,betas:o,...s}=r;return this._client.post(ue`/v1/sessions/${i}/resources/${e}?beta=true`,{body:s,...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/sessions/${e}/resources?beta=true`,yt,{query:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}delete(e,r,n){let{session_id:i,betas:o}=r;return this._client.delete(ue`/v1/sessions/${i}/resources/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}add(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/sessions/${e}/resources?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var Sl=class extends Le{constructor(){super(...arguments),this.events=new fm(this._client),this.resources=new pm(this._client)}create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/sessions?beta=true",{body:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/sessions/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/sessions/${e}?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/sessions?beta=true",yt,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/sessions/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/sessions/${e}/archive?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};Sl.Events=fm;Sl.Resources=pm;var hm=class extends Le{create(e,r={},n){let{betas:i,...o}=r??{};return this._client.post(ue`/v1/skills/${e}/versions?beta=true`,Xh({body:o,...n,headers:K([{"anthropic-beta":[...i??[],"skills-2025-10-02"].toString()},n?.headers])},this._client))}retrieve(e,r,n){let{skill_id:i,betas:o}=r;return this._client.get(ue`/v1/skills/${i}/versions/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...o??[],"skills-2025-10-02"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/skills/${e}/versions?beta=true`,yt,{query:o,...n,headers:K([{"anthropic-beta":[...i??[],"skills-2025-10-02"].toString()},n?.headers])})}delete(e,r,n){let{skill_id:i,betas:o}=r;return this._client.delete(ue`/v1/skills/${i}/versions/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...o??[],"skills-2025-10-02"].toString()},n?.headers])})}};var Md=class extends Le{constructor(){super(...arguments),this.versions=new hm(this._client)}create(e={},r){let{betas:n,...i}=e??{};return this._client.post("/v1/skills?beta=true",Xh({body:i,...r,headers:K([{"anthropic-beta":[...n??[],"skills-2025-10-02"].toString()},r?.headers])},this._client,!1))}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/skills/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"skills-2025-10-02"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/skills?beta=true",yt,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"skills-2025-10-02"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/skills/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"skills-2025-10-02"].toString()},n?.headers])})}};Md.Versions=hm;var mm=class extends Le{create(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/vaults/${e}/credentials?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}retrieve(e,r,n){let{vault_id:i,betas:o}=r;return this._client.get(ue`/v1/vaults/${i}/credentials/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{vault_id:i,betas:o,...s}=r;return this._client.post(ue`/v1/vaults/${i}/credentials/${e}?beta=true`,{body:s,...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e,r={},n){let{betas:i,...o}=r??{};return this._client.getAPIList(ue`/v1/vaults/${e}/credentials?beta=true`,yt,{query:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}delete(e,r,n){let{vault_id:i,betas:o}=r;return this._client.delete(ue`/v1/vaults/${i}/credentials/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r,n){let{vault_id:i,betas:o}=r;return this._client.post(ue`/v1/vaults/${i}/credentials/${e}/archive?beta=true`,{...n,headers:K([{"anthropic-beta":[...o??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};var $d=class extends Le{constructor(){super(...arguments),this.credentials=new mm(this._client)}create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/vaults?beta=true",{body:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/vaults/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}update(e,r,n){let{betas:i,...o}=r;return this._client.post(ue`/v1/vaults/${e}?beta=true`,{body:o,...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/vaults?beta=true",yt,{query:i,...r,headers:K([{"anthropic-beta":[...n??[],"managed-agents-2026-04-01"].toString()},r?.headers])})}delete(e,r={},n){let{betas:i}=r??{};return this._client.delete(ue`/v1/vaults/${e}?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}archive(e,r={},n){let{betas:i}=r??{};return this._client.post(ue`/v1/vaults/${e}/archive?beta=true`,{...n,headers:K([{"anthropic-beta":[...i??[],"managed-agents-2026-04-01"].toString()},n?.headers])})}};$d.Credentials=mm;var Qr=class extends Le{constructor(){super(...arguments),this.models=new tm(this._client),this.messages=new Za(this._client),this.agents=new Pd(this._client),this.environments=new Qh(this._client),this.sessions=new Sl(this._client),this.vaults=new $d(this._client),this.memoryStores=new gl(this._client),this.files=new em(this._client),this.skills=new Md(this._client),this.userProfiles=new rm(this._client)}};Qr.Models=tm;Qr.Messages=Za;Qr.Agents=Pd;Qr.Environments=Qh;Qr.Sessions=Sl;Qr.Vaults=$d;Qr.MemoryStores=gl;Qr.Files=em;Qr.Skills=Md;Qr.UserProfiles=rm;var Dd=class extends Le{create(e,r){let{betas:n,...i}=e;return this._client.post("/v1/complete",{body:i,timeout:this._client._options.timeout??6e5,...r,headers:K([{...n?.toString()!=null?{"anthropic-beta":n?.toString()}:void 0},r?.headers]),stream:e.stream??!1})}};function gpe(t){return t?.output_config?.format}function bB(t,e,r){let n=gpe(e);return!e||!("parse"in(n??{}))?{...t,content:t.content.map(i=>i.type==="text"?Object.defineProperty({...i},"parsed_output",{value:null,enumerable:!1}):i),parsed_output:null}:TB(t,e,r)}function TB(t,e,r){let n=null,i=t.content.map(o=>{if(o.type==="text"){let s=kKe(e,o.text);return n===null&&(n=s),Object.defineProperty({...o},"parsed_output",{value:s,enumerable:!1})}return o});return{...t,content:i,parsed_output:n}}function kKe(t,e){let r=gpe(t);if(r?.type!=="json_schema")return null;try{return"parse"in r?r.parse(e):JSON.parse(e)}catch(n){throw new Te(`Failed to parse structured output: ${n}`)}}var ro,El,gm,KE,yI,ZE,JE,SI,XE,Ja,QE,EI,vI,Ld,bI,TI,ev,wB,_pe,AB,xB,RB,CB,ype,Spe="__json_buf";function Epe(t){return t.type==="tool_use"||t.type==="server_tool_use"}var wI=class t{constructor(e,r){ro.add(this),this.messages=[],this.receivedMessages=[],El.set(this,void 0),gm.set(this,null),this.controller=new AbortController,KE.set(this,void 0),yI.set(this,()=>{}),ZE.set(this,()=>{}),JE.set(this,void 0),SI.set(this,()=>{}),XE.set(this,()=>{}),Ja.set(this,{}),QE.set(this,!1),EI.set(this,!1),vI.set(this,!1),Ld.set(this,!1),bI.set(this,void 0),TI.set(this,void 0),ev.set(this,void 0),AB.set(this,n=>{if(fe(this,EI,!0,"f"),Ga(n)&&(n=new Xr),n instanceof Xr)return fe(this,vI,!0,"f"),this._emit("abort",n);if(n instanceof Te)return this._emit("error",n);if(n instanceof Error){let i=new Te(n.message);return i.cause=n,this._emit("error",i)}return this._emit("error",new Te(String(n)))}),fe(this,KE,new Promise((n,i)=>{fe(this,yI,n,"f"),fe(this,ZE,i,"f")}),"f"),fe(this,JE,new Promise((n,i)=>{fe(this,SI,n,"f"),fe(this,XE,i,"f")}),"f"),z(this,KE,"f").catch(()=>{}),z(this,JE,"f").catch(()=>{}),fe(this,gm,e,"f"),fe(this,ev,r?.logger??console,"f")}get response(){return z(this,bI,"f")}get request_id(){return z(this,TI,"f")}async withResponse(){fe(this,Ld,!0,"f");let e=await z(this,KE,"f");if(!e)throw new Error("Could not resolve a `Response` object");return{data:this,response:e,request_id:e.headers.get("request-id")}}static fromReadableStream(e){let r=new t(null);return r._run(()=>r._fromReadableStream(e)),r}static createMessage(e,r,n,{logger:i}={}){let o=new t(r,{logger:i});for(let s of r.messages)o._addMessageParam(s);return fe(o,gm,{...r,stream:!0},"f"),o._run(()=>o._createMessage(e,{...r,stream:!0},{...n,headers:{...n?.headers,"X-Stainless-Helper-Method":"stream"}})),o}_run(e){e().then(()=>{this._emitFinal(),this._emit("end")},z(this,AB,"f"))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,r=!0){this.receivedMessages.push(e),r&&this._emit("message",e)}async _createMessage(e,r,n){let i=n?.signal,o;i&&(i.aborted&&this.controller.abort(),o=this.controller.abort.bind(this.controller),i.addEventListener("abort",o));try{z(this,ro,"m",xB).call(this);let{response:s,data:a}=await e.create({...r,stream:!0},{...n,signal:this.controller.signal}).withResponse();this._connected(s);for await(let c of a)z(this,ro,"m",RB).call(this,c);if(a.controller.signal?.aborted)throw new Xr;z(this,ro,"m",CB).call(this)}finally{i&&o&&i.removeEventListener("abort",o)}}_connected(e){this.ended||(fe(this,bI,e,"f"),fe(this,TI,e?.headers.get("request-id"),"f"),z(this,yI,"f").call(this,e),this._emit("connect"))}get ended(){return z(this,QE,"f")}get errored(){return z(this,EI,"f")}get aborted(){return z(this,vI,"f")}abort(){this.controller.abort()}on(e,r){return(z(this,Ja,"f")[e]||(z(this,Ja,"f")[e]=[])).push({listener:r}),this}off(e,r){let n=z(this,Ja,"f")[e];if(!n)return this;let i=n.findIndex(o=>o.listener===r);return i>=0&&n.splice(i,1),this}once(e,r){return(z(this,Ja,"f")[e]||(z(this,Ja,"f")[e]=[])).push({listener:r,once:!0}),this}emitted(e){return new Promise((r,n)=>{fe(this,Ld,!0,"f"),e!=="error"&&this.once("error",n),this.once(e,r)})}async done(){fe(this,Ld,!0,"f"),await z(this,JE,"f")}get currentMessage(){return z(this,El,"f")}async finalMessage(){return await this.done(),z(this,ro,"m",wB).call(this)}async finalText(){return await this.done(),z(this,ro,"m",_pe).call(this)}_emit(e,...r){if(z(this,QE,"f"))return;e==="end"&&(fe(this,QE,!0,"f"),z(this,SI,"f").call(this));let n=z(this,Ja,"f")[e];if(n&&(z(this,Ja,"f")[e]=n.filter(i=>!i.once),n.forEach(({listener:i})=>i(...r))),e==="abort"){let i=r[0];!z(this,Ld,"f")&&!n?.length&&Promise.reject(i),z(this,ZE,"f").call(this,i),z(this,XE,"f").call(this,i),this._emit("end");return}if(e==="error"){let i=r[0];!z(this,Ld,"f")&&!n?.length&&Promise.reject(i),z(this,ZE,"f").call(this,i),z(this,XE,"f").call(this,i),this._emit("end")}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit("finalMessage",z(this,ro,"m",wB).call(this))}async _fromReadableStream(e,r){let n=r?.signal,i;n&&(n.aborted&&this.controller.abort(),i=this.controller.abort.bind(this.controller),n.addEventListener("abort",i));try{z(this,ro,"m",xB).call(this),this._connected(null);let o=Us.fromReadableStream(e,this.controller);for await(let s of o)z(this,ro,"m",RB).call(this,s);if(o.controller.signal?.aborted)throw new Xr;z(this,ro,"m",CB).call(this)}finally{n&&i&&n.removeEventListener("abort",i)}}[(El=new WeakMap,gm=new WeakMap,KE=new WeakMap,yI=new WeakMap,ZE=new WeakMap,JE=new WeakMap,SI=new WeakMap,XE=new WeakMap,Ja=new WeakMap,QE=new WeakMap,EI=new WeakMap,vI=new WeakMap,Ld=new WeakMap,bI=new WeakMap,TI=new WeakMap,ev=new WeakMap,AB=new WeakMap,ro=new WeakSet,wB=function(){if(this.receivedMessages.length===0)throw new Te("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},_pe=function(){if(this.receivedMessages.length===0)throw new Te("stream ended without producing a Message with role=assistant");let r=this.receivedMessages.at(-1).content.filter(n=>n.type==="text").map(n=>n.text);if(r.length===0)throw new Te("stream ended without producing a content block with type=text");return r.join(" ")},xB=function(){this.ended||fe(this,El,void 0,"f")},RB=function(r){if(this.ended)return;let n=z(this,ro,"m",ype).call(this,r);switch(this._emit("streamEvent",r,n),r.type){case"content_block_delta":{let i=n.content.at(-1);switch(r.delta.type){case"text_delta":{i.type==="text"&&this._emit("text",r.delta.text,i.text||"");break}case"citations_delta":{i.type==="text"&&this._emit("citation",r.delta.citation,i.citations??[]);break}case"input_json_delta":{Epe(i)&&i.input&&this._emit("inputJson",r.delta.partial_json,i.input);break}case"thinking_delta":{i.type==="thinking"&&this._emit("thinking",r.delta.thinking,i.thinking);break}case"signature_delta":{i.type==="thinking"&&this._emit("signature",i.signature);break}default:r.delta}break}case"message_stop":{this._addMessageParam(n),this._addMessage(bB(n,z(this,gm,"f"),{logger:z(this,ev,"f")}),!0);break}case"content_block_stop":{this._emit("contentBlock",n.content.at(-1));break}case"message_start":{fe(this,El,n,"f");break}case"content_block_start":case"message_delta":break}},CB=function(){if(this.ended)throw new Te("stream has ended, this shouldn't happen");let r=z(this,El,"f");if(!r)throw new Te("request ended without sending any chunks");return fe(this,El,void 0,"f"),bB(r,z(this,gm,"f"),{logger:z(this,ev,"f")})},ype=function(r){let n=z(this,El,"f");if(r.type==="message_start"){if(n)throw new Te(`Unexpected event order, got ${r.type} before receiving "message_stop"`);return r.message}if(!n)throw new Te(`Unexpected event order, got ${r.type} before "message_start"`);switch(r.type){case"message_stop":return n;case"message_delta":return n.stop_reason=r.delta.stop_reason,n.stop_sequence=r.delta.stop_sequence,n.usage.output_tokens=r.usage.output_tokens,r.usage.input_tokens!=null&&(n.usage.input_tokens=r.usage.input_tokens),r.usage.cache_creation_input_tokens!=null&&(n.usage.cache_creation_input_tokens=r.usage.cache_creation_input_tokens),r.usage.cache_read_input_tokens!=null&&(n.usage.cache_read_input_tokens=r.usage.cache_read_input_tokens),r.usage.server_tool_use!=null&&(n.usage.server_tool_use=r.usage.server_tool_use),n;case"content_block_start":return n.content.push({...r.content_block}),n;case"content_block_delta":{let i=n.content.at(r.index);switch(r.delta.type){case"text_delta":{i?.type==="text"&&(n.content[r.index]={...i,text:(i.text||"")+r.delta.text});break}case"citations_delta":{i?.type==="text"&&(n.content[r.index]={...i,citations:[...i.citations??[],r.delta.citation]});break}case"input_json_delta":{if(i&&Epe(i)){let o=i[Spe]||"";o+=r.delta.partial_json;let s={...i};Object.defineProperty(s,Spe,{value:o,enumerable:!1,writable:!0}),o&&(s.input=lI(o)),n.content[r.index]=s}break}case"thinking_delta":{i?.type==="thinking"&&(n.content[r.index]={...i,thinking:i.thinking+r.delta.thinking});break}case"signature_delta":{i?.type==="thinking"&&(n.content[r.index]={...i,signature:r.delta.signature});break}default:r.delta}return n}case"content_block_stop":return n}},Symbol.asyncIterator)](){let e=[],r=[],n=!1;return this.on("streamEvent",i=>{let o=r.shift();o?o.resolve(i):e.push(i)}),this.on("end",()=>{n=!0;for(let i of r)i.resolve(void 0);r.length=0}),this.on("abort",i=>{n=!0;for(let o of r)o.reject(i);r.length=0}),this.on("error",i=>{n=!0;for(let o of r)o.reject(i);r.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:n?{value:void 0,done:!0}:new Promise((o,s)=>r.push({resolve:o,reject:s})).then(o=>o?{value:o,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new Us(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}};var _m=class extends Le{create(e,r){return this._client.post("/v1/messages/batches",{body:e,...r})}retrieve(e,r){return this._client.get(ue`/v1/messages/batches/${e}`,r)}list(e={},r){return this._client.getAPIList("/v1/messages/batches",eo,{query:e,...r})}delete(e,r){return this._client.delete(ue`/v1/messages/batches/${e}`,r)}cancel(e,r){return this._client.post(ue`/v1/messages/batches/${e}/cancel`,r)}async results(e,r){let n=await this.retrieve(e);if(!n.results_url)throw new Te(`No batch \`results_url\`; Has it finished processing? ${n.processing_status} - ${n.id}`);return this._client.get(n.results_url,{...r,headers:K([{Accept:"application/binary"},r?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((i,o)=>um.fromResponse(o.response,o.controller))}};var vl=class extends Le{constructor(){super(...arguments),this.batches=new _m(this._client)}create(e,r){e.model in vpe&&console.warn(`The model '${e.model}' is deprecated and will reach end-of-life on ${vpe[e.model]}
181
+ Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`),$Ke.includes(e.model)&&e.thinking&&e.thinking.type==="enabled"&&console.warn(`Using Claude with ${e.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let n=this._client._options.timeout;if(!e.stream&&n==null){let o=cI[e.model]??void 0;n=this._client.calculateNonstreamingTimeout(e.max_tokens,o)}let i=aI(e.tools,e.messages);return this._client.post("/v1/messages",{body:e,timeout:n??6e5,...r,headers:K([i,r?.headers]),stream:e.stream??!1})}parse(e,r){return this.create(e,r).then(n=>TB(n,e,{logger:this._client.logger??console}))}stream(e,r){return wI.createMessage(this,e,r,{logger:this._client.logger??console})}countTokens(e,r){return this._client.post("/v1/messages/count_tokens",{body:e,...r})}},vpe={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026","claude-3-5-haiku-latest":"February 19th, 2026","claude-3-5-haiku-20241022":"February 19th, 2026","claude-opus-4-0":"June 15th, 2026","claude-opus-4-20250514":"June 15th, 2026","claude-sonnet-4-0":"June 15th, 2026","claude-sonnet-4-20250514":"June 15th, 2026"},$Ke=["claude-mythos-preview","claude-opus-4-6"];vl.Batches=_m;var Ud=class extends Le{retrieve(e,r={},n){let{betas:i}=r??{};return this._client.get(ue`/v1/models/${e}`,{...n,headers:K([{...i?.toString()!=null?{"anthropic-beta":i?.toString()}:void 0},n?.headers])})}list(e={},r){let{betas:n,...i}=e??{};return this._client.getAPIList("/v1/models",eo,{query:i,...r,headers:K([{...n?.toString()!=null?{"anthropic-beta":n?.toString()}:void 0},r?.headers])})}};var tv=t=>{if(typeof globalThis.process<"u")return globalThis.process.env?.[t]?.trim()||void 0;if(typeof globalThis.Deno<"u")return globalThis.Deno.env?.get?.(t)?.trim()||void 0};var IB,PB,AI,bpe,Tpe="\\n\\nHuman:",wpe="\\n\\nAssistant:",Jt=class{constructor({baseURL:e=tv("ANTHROPIC_BASE_URL"),apiKey:r=tv("ANTHROPIC_API_KEY")??null,authToken:n=tv("ANTHROPIC_AUTH_TOKEN")??null,...i}={}){IB.add(this),AI.set(this,void 0);let o={apiKey:r,authToken:n,...i,baseURL:e||"https://api.anthropic.com"};if(!o.dangerouslyAllowBrowser&&qfe())throw new Te(`It looks like you're running in a browser-like environment.
182
182
 
183
183
  This is disabled by default, as it risks exposing your secret API credentials to attackers.
184
184
  If you understand the risks and have appropriate mitigations in place,
185
185
  you can set the \`dangerouslyAllowBrowser\` option to \`true\`, e.g.,
186
186
 
187
187
  new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
188
- `);this.baseURL=o.baseURL,this.timeout=o.timeout??PB.DEFAULT_TIMEOUT,this.logger=o.logger??console;let s="warn";this.logLevel=s,this.logLevel=aB(o.logLevel,"ClientOptions.logLevel",this)??aB(tv("ANTHROPIC_LOG"),"process.env['ANTHROPIC_LOG']",this)??s,this.fetchOptions=o.fetchOptions,this.maxRetries=o.maxRetries??2,this.fetch=o.fetch??Gfe(),fe(this,AI,Wfe,"f"),this._options=o,this.apiKey=typeof r=="string"?r:null,this.authToken=n}withOptions(e){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this.apiKey,authToken:this.authToken,...e})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:r}){if(!(e.get("x-api-key")||e.get("authorization"))&&!(this.apiKey&&e.get("x-api-key"))&&!r.has("x-api-key")&&!(this.authToken&&e.get("authorization"))&&!r.has("authorization"))throw new Error('Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}async authHeaders(e){return Y([await this.apiKeyAuth(e),await this.bearerAuth(e)])}async apiKeyAuth(e){if(this.apiKey!=null)return Y([{"X-Api-Key":this.apiKey}])}async bearerAuth(e){if(this.authToken!=null)return Y([{Authorization:`Bearer ${this.authToken}`}])}stringifyQuery(e){return Yfe(e)}getUserAgent(){return`${this.constructor.name}/JS ${ml}`}defaultIdempotencyKey(){return`stainless-node-retry-${tB()}`}makeStatusError(e,r,n,i){return Ur.generate(e,r,n,i)}buildURL(e,r,n){let i=!z(this,IB,"m",bpe).call(this)&&n||this.baseURL,o=Dfe(e)?new URL(e):new URL(i+(i.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),s=this.defaultQuery(),a=Object.fromEntries(o.searchParams);return(!iB(s)||!iB(a))&&(r={...a,...s,...r}),typeof r=="object"&&r&&!Array.isArray(r)&&(o.search=this.stringifyQuery(r)),o.toString()}_calculateNonstreamingTimeout(e){if(3600*e/128e3>600)throw new Te("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details");return 600*1e3}async prepareOptions(e){}async prepareRequest(e,{url:r,options:n}){}get(e,r){return this.methodRequest("get",e,r)}post(e,r){return this.methodRequest("post",e,r)}patch(e,r){return this.methodRequest("patch",e,r)}put(e,r){return this.methodRequest("put",e,r)}delete(e,r){return this.methodRequest("delete",e,r)}methodRequest(e,r,n){return this.request(Promise.resolve(n).then(i=>({method:e,path:r,...i})))}request(e,r=null){return new Cd(this,this.makeRequest(e,r,void 0))}async makeRequest(e,r,n){let i=await e,o=i.maxRetries??this.maxRetries;r==null&&(r=o),await this.prepareOptions(i);let{req:s,url:a,timeout:c}=await this.buildRequest(i,{retryCount:o-r});await this.prepareRequest(s,{url:a,options:i});let l="log_"+(Math.random()*(1<<24)|0).toString(16).padStart(6,"0"),u=n===void 0?"":`, retryOf: ${n}`,d=Date.now();if(Fr(this).debug(`[${l}] sending request`,Wa({retryOfRequestLogID:n,method:i.method,url:a,options:i,headers:s.headers})),i.signal?.aborted)throw new Xr;let f=new AbortController,p=await this.fetchWithTimeout(a,s,c,f).catch(NE),h=Date.now();if(p instanceof globalThis.Error){let _=`retrying, ${r} attempts remaining`;if(i.signal?.aborted)throw new Xr;let v=Ga(p)||/timed? ?out/i.test(String(p)+("cause"in p?String(p.cause):""));if(r)return Fr(this).info(`[${l}] connection ${v?"timed out":"failed"} - ${_}`),Fr(this).debug(`[${l}] connection ${v?"timed out":"failed"} (${_})`,Wa({retryOfRequestLogID:n,url:a,durationMs:h-d,message:p.message})),this.retryRequest(i,r,n??l);throw Fr(this).info(`[${l}] connection ${v?"timed out":"failed"} - error; no more retries left`),Fr(this).debug(`[${l}] connection ${v?"timed out":"failed"} (error; no more retries left)`,Wa({retryOfRequestLogID:n,url:a,durationMs:h-d,message:p.message})),v?new qh:new hl({cause:p})}let m=[...p.headers.entries()].filter(([_])=>_==="request-id").map(([_,v])=>", "+_+": "+JSON.stringify(v)).join(""),g=`[${l}${u}${m}] ${s.method} ${a} ${p.ok?"succeeded":"failed"} with status ${p.status} in ${h-d}ms`;if(!p.ok){let _=await this.shouldRetry(p);if(r&&_){let R=`retrying, ${r} attempts remaining`;return await Hfe(p.body),Fr(this).info(`${g} - ${R}`),Fr(this).debug(`[${l}] response error (${R})`,Wa({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,durationMs:h-d})),this.retryRequest(i,r,n??l,p.headers)}let v=_?"error; no more retries left":"error; not retryable";Fr(this).info(`${g} - ${v}`);let w=await p.text().catch(R=>NE(R).message),y=XC(w),T=y?void 0:w;throw Fr(this).debug(`[${l}] response error (${v})`,Wa({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,message:T,durationMs:Date.now()-d})),this.makeStatusError(p.status,y,T,p.headers)}return Fr(this).info(g),Fr(this).debug(`[${l}] response start`,Wa({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,durationMs:h-d})),{response:p,options:i,controller:f,requestLogID:l,retryOfRequestLogID:n,startTime:d}}getAPIList(e,r,n){return this.requestAPIList(r,n&&"then"in n?n.then(i=>({method:"get",path:e,...i})):{method:"get",path:e,...n})}requestAPIList(e,r){let n=this.makeRequest(r,null,void 0);return new UE(this,n,e)}async fetchWithTimeout(e,r,n,i){let{signal:o,method:s,...a}=r||{},c=this._makeAbort(i);o&&o.addEventListener("abort",c,{once:!0});let l=setTimeout(c,n),u=globalThis.ReadableStream&&a.body instanceof globalThis.ReadableStream||typeof a.body=="object"&&a.body!==null&&Symbol.asyncIterator in a.body,d={signal:i.signal,...u?{duplex:"half"}:{},method:"GET",...a};s&&(d.method=s.toUpperCase());try{return await this.fetch.call(void 0,e,d)}finally{clearTimeout(l)}}async shouldRetry(e){let r=e.headers.get("x-should-retry");return r==="true"?!0:r==="false"?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,r,n,i){let o,s=i?.get("retry-after-ms");if(s){let c=parseFloat(s);Number.isNaN(c)||(o=c)}let a=i?.get("retry-after");if(a&&!o){let c=parseFloat(a);Number.isNaN(c)?o=Date.parse(a)-Date.now():o=c*1e3}if(o===void 0){let c=e.maxRetries??this.maxRetries;o=this.calculateDefaultRetryTimeoutMillis(r,c)}return await Ffe(o),this.makeRequest(e,r-1,n)}calculateDefaultRetryTimeoutMillis(e,r){let o=r-e,s=Math.min(.5*Math.pow(2,o),8),a=1-Math.random()*.25;return s*a*1e3}calculateNonstreamingTimeout(e,r){if(36e5*e/128e3>6e5||r!=null&&e>r)throw new Te("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details");return 6e5}async buildRequest(e,{retryCount:r=0}={}){let n={...e},{method:i,path:o,query:s,defaultBaseURL:a}=n,c=this.buildURL(o,s,a);"timeout"in n&&Ufe("timeout",n.timeout),n.timeout=n.timeout??this.timeout;let{bodyHeaders:l,body:u}=this.buildBody({options:n}),d=await this.buildHeaders({options:e,method:i,bodyHeaders:l,retryCount:r});return{req:{method:i,headers:d,...n.signal&&{signal:n.signal},...globalThis.ReadableStream&&u instanceof globalThis.ReadableStream&&{duplex:"half"},...u&&{body:u},...this.fetchOptions??{},...n.fetchOptions??{}},url:c,timeout:n.timeout}}async buildHeaders({options:e,method:r,bodyHeaders:n,retryCount:i}){let o={};this.idempotencyHeader&&r!=="get"&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),o[this.idempotencyHeader]=e.idempotencyKey);let s=Y([o,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(i),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...Vfe(),...this._options.dangerouslyAllowBrowser?{"anthropic-dangerous-direct-browser-access":"true"}:void 0,"anthropic-version":"2023-06-01"},await this.authHeaders(e),this._options.defaultHeaders,n,e.headers]);return this.validateHeaders(s),s.values}_makeAbort(e){return()=>e.abort()}buildBody({options:{body:e,headers:r}}){if(!e)return{bodyHeaders:void 0,body:void 0};let n=Y([r]);return ArrayBuffer.isView(e)||e instanceof ArrayBuffer||e instanceof DataView||typeof e=="string"&&n.values.has("content-type")||globalThis.Blob&&e instanceof globalThis.Blob||e instanceof FormData||e instanceof URLSearchParams||globalThis.ReadableStream&&e instanceof globalThis.ReadableStream?{bodyHeaders:void 0,body:e}:typeof e=="object"&&(Symbol.asyncIterator in e||Symbol.iterator in e&&"next"in e&&typeof e.next=="function")?{bodyHeaders:void 0,body:QC(e)}:typeof e=="object"&&n.values.get("content-type")==="application/x-www-form-urlencoded"?{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery(e)}:z(this,AI,"f").call(this,{body:e,headers:n})}};PB=Jt,AI=new WeakMap,IB=new WeakSet,bpe=function(){return this.baseURL!=="https://api.anthropic.com"};Jt.Anthropic=PB;Jt.HUMAN_PROMPT=Tpe;Jt.AI_PROMPT=wpe;Jt.DEFAULT_TIMEOUT=6e5;Jt.AnthropicError=Te;Jt.APIError=Ur;Jt.APIConnectionError=hl;Jt.APIConnectionTimeoutError=qh;Jt.APIUserAbortError=Xr;Jt.NotFoundError=Wh;Jt.ConflictError=Yh;Jt.RateLimitError=Zh;Jt.BadRequestError=Vh;Jt.AuthenticationError=Gh;Jt.InternalServerError=Jh;Jt.PermissionDeniedError=Hh;Jt.UnprocessableEntityError=Kh;Jt.toFile=oI;var Xa=class extends Jt{constructor(){super(...arguments),this.completions=new Dd(this),this.messages=new vl(this),this.models=new Ud(this),this.beta=new Qr(this)}};Xa.Completions=Dd;Xa.Messages=vl;Xa.Models=Ud;Xa.Beta=Qr;var OB=ie("runner"),ym=(t,e)=>e&&v0.includes(e)&&t!=="opencode"?void 0:e,xI=t=>t==="create",Qa=(t,e)=>t==null&&e==null?void 0:(t??0)+(e??0),LKe=(t,e)=>t||e?{input_tokens:Qa(t?.input_tokens,e?.input_tokens),output_tokens:Qa(t?.output_tokens,e?.output_tokens),reasoning_output_tokens:Qa(t?.reasoning_output_tokens,e?.reasoning_output_tokens),total_tokens:Qa(t?.total_tokens,e?.total_tokens),cache_creation_input_tokens:Qa(t?.cache_creation_input_tokens,e?.cache_creation_input_tokens),cache_read_input_tokens:Qa(t?.cache_read_input_tokens,e?.cache_read_input_tokens)}:void 0,bl=(t,e)=>{let r=t;return!!(e?.aborted&&(r?.isCanceled||r?.isTerminated))},Sm=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(OB.log(`${i} command completed with catch handler triggered`,{hadExistingError:!!r,hadExistingResult:!!n,resultLength:n?n.length:0,catchError:t?.message||"No error object",processExitCode:e.exitCode,processKilled:e.killed}),n?(OB.log("Preserving existing result despite catch handler being triggered"),r?{error:r,result:n}:{error:"Process completed with errors but result was captured",result:n}):(OB.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),rv=(t,e)=>({...e,steps:[...t.steps||[],...e.steps||[]],duration:(t.duration||0)+(e.duration||0),usage:LKe(t.usage,e.usage),costUsd:Qa(t.costUsd,e.costUsd),toolCallCount:Qa(t.toolCallCount,e.toolCallCount),toolErrorCount:Qa(t.toolErrorCount,e.toolErrorCount)});import Fd from"process";var RI=ie("ask_db_access"),NB=()=>{delete Fd.env.NETLIFY_DB_URL,delete Fd.env.NETLIFY_DB_BRANCH},Ape=(t,e)=>{delete Fd.env.EXPERIMENTAL_NETLIFY_DB_ENABLED;let r=UKe(t,e);return r?(Fd.env.NETLIFY_DB_URL=r.connectionString,Fd.env.NETLIFY_DB_BRANCH=r.branch,RI.log("Ask mode has read-only database access",{branch:r.branch,host:r.host}),r):(NB(),null)},Em=t=>{if(t.mode!=="ask")return null;let e=Fd.env.NETLIFY_DB_URL,r=Fd.env.NETLIFY_DB_BRANCH,n=e?mz(e):null;return e&&r&&n?{connectionString:e,branch:r,host:n}:null},CI=t=>[...new Set([`${t} db connect`,"netlify db connect","npx netlify db connect"])],UKe=(t,e)=>{if(t.mode!=="ask")return null;let r=t.dbConnectionString;if(!r)return RI.log("No database connection string in the payload; ask mode runs without database access"),null;if(!e)return RI.warn("Database connection string present but no deploy alias to name the branch; skipping DB access"),null;let n=mz(r);return n?{connectionString:r,branch:e,host:n}:(RI.warn("Could not read a host from the database connection string; skipping DB access"),null)};import u3 from"fs/promises";import EEe from"os";import d3 from"path";import uc from"process";import{randomUUID as Brt}from"crypto";import{existsSync as qrt}from"fs";import{fileURLToPath as SEe}from"url";var Fs="netlify_interactions";var xpe="--questions-file",Ci="netlify_connections",vm="request_service_authorization",Rpe="--runner-id",Cpe="--session-id",Ipe="--request-file",nv=(t,e)=>`mcp__${t}__${e}`,kB=(t,e)=>`mcp_${t}_${e}`,MB=(t,e)=>`${t}_${e}`,FKe=nv(Fs,"ask"),zKe=kB(Fs,"ask"),jKe=MB(Fs,"ask"),BKe=nv(Ci,vm),qKe=kB(Ci,vm),VKe=MB(Ci,vm),$B={ask:FKe,authorize:BKe},DB={ask:zKe,authorize:qKe},Ppe={ask:jKe,authorize:VKe},Ope={ask:"ask",authorize:vm},GKe={claude:nv,codex:nv,gemini:kB,opencode:MB},LB=(t,e,r)=>(GKe[t]??nv)(e,r),Npe=t=>t===Fs||t===Ci;import zrt from"process";var rc={};Gr(rc,{$ZodAny:()=>wq,$ZodArray:()=>Iq,$ZodAsyncError:()=>Bo,$ZodBase64:()=>hq,$ZodBase64URL:()=>mq,$ZodBigInt:()=>YI,$ZodBigIntFormat:()=>Eq,$ZodBoolean:()=>Ev,$ZodCIDRv4:()=>dq,$ZodCIDRv6:()=>fq,$ZodCUID:()=>Q2,$ZodCUID2:()=>eq,$ZodCatch:()=>Wq,$ZodCheck:()=>zt,$ZodCheckBigIntFormat:()=>I2,$ZodCheckEndsWith:()=>j2,$ZodCheckGreaterThan:()=>BI,$ZodCheckIncludes:()=>F2,$ZodCheckLengthEquals:()=>$2,$ZodCheckLessThan:()=>jI,$ZodCheckLowerCase:()=>L2,$ZodCheckMaxLength:()=>k2,$ZodCheckMaxSize:()=>P2,$ZodCheckMimeType:()=>q2,$ZodCheckMinLength:()=>M2,$ZodCheckMinSize:()=>O2,$ZodCheckMultipleOf:()=>R2,$ZodCheckNumberFormat:()=>C2,$ZodCheckOverwrite:()=>V2,$ZodCheckProperty:()=>B2,$ZodCheckRegex:()=>D2,$ZodCheckSizeEquals:()=>N2,$ZodCheckStartsWith:()=>z2,$ZodCheckStringFormat:()=>Pm,$ZodCheckUpperCase:()=>U2,$ZodCodec:()=>bv,$ZodCustom:()=>t4,$ZodCustomStringFormat:()=>yq,$ZodDate:()=>Cq,$ZodDefault:()=>qq,$ZodDiscriminatedUnion:()=>Nq,$ZodE164:()=>gq,$ZodEmail:()=>K2,$ZodEmoji:()=>J2,$ZodEncodeError:()=>Tl,$ZodEnum:()=>Lq,$ZodError:()=>dv,$ZodExactOptional:()=>jq,$ZodFile:()=>Fq,$ZodFunction:()=>Xq,$ZodGUID:()=>W2,$ZodIPv4:()=>cq,$ZodIPv6:()=>lq,$ZodISODate:()=>oq,$ZodISODateTime:()=>iq,$ZodISODuration:()=>aq,$ZodISOTime:()=>sq,$ZodIntersection:()=>kq,$ZodJWT:()=>_q,$ZodKSUID:()=>nq,$ZodLazy:()=>e4,$ZodLiteral:()=>Uq,$ZodMAC:()=>uq,$ZodMap:()=>$q,$ZodNaN:()=>Yq,$ZodNanoID:()=>X2,$ZodNever:()=>xq,$ZodNonOptional:()=>Gq,$ZodNull:()=>Tq,$ZodNullable:()=>Bq,$ZodNumber:()=>WI,$ZodNumberFormat:()=>Sq,$ZodObject:()=>_he,$ZodObjectJIT:()=>Pq,$ZodOptional:()=>ZI,$ZodPipe:()=>JI,$ZodPrefault:()=>Vq,$ZodPreprocess:()=>Kq,$ZodPromise:()=>Qq,$ZodReadonly:()=>Zq,$ZodRealError:()=>ii,$ZodRecord:()=>Mq,$ZodRegistry:()=>tP,$ZodSet:()=>Dq,$ZodString:()=>qd,$ZodStringFormat:()=>It,$ZodSuccess:()=>Hq,$ZodSymbol:()=>vq,$ZodTemplateLiteral:()=>Jq,$ZodTransform:()=>zq,$ZodTuple:()=>KI,$ZodType:()=>ze,$ZodULID:()=>tq,$ZodURL:()=>Z2,$ZodUUID:()=>Y2,$ZodUndefined:()=>bq,$ZodUnion:()=>vv,$ZodUnknown:()=>Aq,$ZodVoid:()=>Rq,$ZodXID:()=>rq,$ZodXor:()=>Oq,$brand:()=>UB,$constructor:()=>D,$input:()=>n4,$output:()=>r4,Doc:()=>Sv,JSONSchema:()=>Sme,JSONSchemaGenerator:()=>NP,NEVER:()=>iv,TimePrecision:()=>a4,_any:()=>C4,_array:()=>$4,_base64:()=>SP,_base64url:()=>EP,_bigint:()=>v4,_boolean:()=>S4,_catch:()=>s8e,_check:()=>yme,_cidrv4:()=>_P,_cidrv6:()=>yP,_coercedBigint:()=>b4,_coercedBoolean:()=>E4,_coercedDate:()=>k4,_coercedNumber:()=>p4,_coercedString:()=>o4,_cuid:()=>uP,_cuid2:()=>dP,_custom:()=>L4,_date:()=>N4,_decode:()=>NI,_decodeAsync:()=>MI,_default:()=>n8e,_discriminatedUnion:()=>GZe,_e164:()=>vP,_email:()=>nP,_emoji:()=>cP,_encode:()=>OI,_encodeAsync:()=>kI,_endsWith:()=>Lm,_enum:()=>JZe,_file:()=>D4,_float32:()=>m4,_float64:()=>g4,_gt:()=>js,_gte:()=>Un,_guid:()=>Av,_includes:()=>$m,_int:()=>h4,_int32:()=>_4,_int64:()=>T4,_intersection:()=>HZe,_ipv4:()=>mP,_ipv6:()=>gP,_isoDate:()=>l4,_isoDateTime:()=>c4,_isoDuration:()=>d4,_isoTime:()=>u4,_jwt:()=>bP,_ksuid:()=>hP,_lazy:()=>u8e,_length:()=>Hd,_literal:()=>QZe,_lowercase:()=>km,_lt:()=>zs,_lte:()=>Pi,_mac:()=>s4,_map:()=>KZe,_max:()=>Pi,_maxLength:()=>Gd,_maxSize:()=>Il,_mime:()=>Um,_min:()=>Un,_minLength:()=>tc,_minSize:()=>Bs,_multipleOf:()=>Cl,_nan:()=>M4,_nanoid:()=>lP,_nativeEnum:()=>XZe,_negative:()=>wP,_never:()=>P4,_nonnegative:()=>xP,_nonoptional:()=>i8e,_nonpositive:()=>AP,_normalize:()=>Fm,_null:()=>R4,_nullable:()=>r8e,_number:()=>f4,_optional:()=>t8e,_overwrite:()=>qo,_parse:()=>Am,_parseAsync:()=>xm,_pipe:()=>a8e,_positive:()=>TP,_promise:()=>d8e,_property:()=>RP,_readonly:()=>c8e,_record:()=>YZe,_refine:()=>U4,_regex:()=>Nm,_safeDecode:()=>DI,_safeDecodeAsync:()=>UI,_safeEncode:()=>$I,_safeEncodeAsync:()=>LI,_safeParse:()=>Rm,_safeParseAsync:()=>Im,_set:()=>ZZe,_size:()=>Vd,_slugify:()=>qm,_startsWith:()=>Dm,_string:()=>i4,_stringFormat:()=>Vm,_stringbool:()=>B4,_success:()=>o8e,_superRefine:()=>F4,_symbol:()=>A4,_templateLiteral:()=>l8e,_toLowerCase:()=>jm,_toUpperCase:()=>Bm,_transform:()=>e8e,_trim:()=>zm,_tuple:()=>WZe,_uint32:()=>y4,_uint64:()=>w4,_ulid:()=>fP,_undefined:()=>x4,_union:()=>qZe,_unknown:()=>I4,_uppercase:()=>Mm,_url:()=>xv,_uuid:()=>iP,_uuidv4:()=>oP,_uuidv6:()=>sP,_uuidv7:()=>aP,_void:()=>O4,_xid:()=>pP,_xor:()=>VZe,clone:()=>Dn,config:()=>ir,createStandardJSONSchemaMethod:()=>Gm,createToJSONSchemaMethod:()=>q4,decode:()=>zpe,decodeAsync:()=>Bpe,describe:()=>z4,encode:()=>Fpe,encodeAsync:()=>jpe,extractDefs:()=>Ol,finalize:()=>Nl,flattenError:()=>fv,formatError:()=>pv,globalConfig:()=>zd,globalRegistry:()=>en,initializeContext:()=>Pl,isValidBase64:()=>pq,isValidBase64URL:()=>phe,isValidJWT:()=>hhe,locales:()=>wv,meta:()=>j4,parse:()=>hv,parseAsync:()=>mv,prettifyError:()=>JB,process:()=>St,regexes:()=>Ii,registry:()=>rP,safeDecode:()=>Vpe,safeDecodeAsync:()=>Hpe,safeEncode:()=>qpe,safeEncodeAsync:()=>Gpe,safeParse:()=>Cm,safeParseAsync:()=>gv,toDotPath:()=>Upe,toJSONSchema:()=>OP,treeifyError:()=>ZB,util:()=>re,version:()=>G2});var kpe,iv=Object.freeze({status:"aborted"});function D(t,e,r){function n(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),a._zod.traits.has(t))return;a._zod.traits.add(t),e(a,c);let l=s.prototype,u=Object.keys(l);for(let d=0;d<u.length;d++){let f=u[d];f in a||(a[f]=l[f].bind(a))}}let i=r?.Parent??Object;class o extends i{}Object.defineProperty(o,"name",{value:t});function s(a){var c;let l=r?.Parent?new o:this;n(l,a),(c=l._zod).deferred??(c.deferred=[]);for(let u of l._zod.deferred)u();return l}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(t)}),Object.defineProperty(s,"name",{value:t}),s}var UB=Symbol("zod_brand"),Bo=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Tl=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(kpe=globalThis).__zod_globalConfig??(kpe.__zod_globalConfig={});var zd=globalThis.__zod_globalConfig;function ir(t){return t&&Object.assign(zd,t),zd}var re={};Gr(re,{BIGINT_FORMAT_RANGES:()=>YB,Class:()=>zB,NUMBER_FORMAT_RANGES:()=>WB,aborted:()=>Rl,allowsEval:()=>qB,assert:()=>ZKe,assertEqual:()=>HKe,assertIs:()=>YKe,assertNever:()=>KKe,assertNotEqual:()=>WKe,assignProp:()=>Al,base64ToUint8Array:()=>$pe,base64urlToUint8Array:()=>p9e,cached:()=>Tm,captureStackTrace:()=>PI,cleanEnum:()=>f9e,cleanRegex:()=>av,clone:()=>Dn,cloneDef:()=>XKe,createTransparentProxy:()=>i9e,defineLazy:()=>et,esc:()=>II,escapeRegex:()=>no,explicitlyAborted:()=>KB,extend:()=>a9e,finalizeIssue:()=>Ln,floatSafeRemainder:()=>jB,getElementAtPath:()=>QKe,getEnumValues:()=>sv,getLengthableOrigin:()=>uv,getParsedType:()=>n9e,getSizableOrigin:()=>lv,hexToUint8Array:()=>m9e,isObject:()=>jd,isPlainObject:()=>xl,issue:()=>wm,joinValues:()=>B,jsonStringifyReplacer:()=>bm,merge:()=>l9e,mergeDefs:()=>ec,normalizeParams:()=>ae,nullish:()=>wl,numKeys:()=>r9e,objectClone:()=>JKe,omit:()=>s9e,optionalKeys:()=>HB,parsedType:()=>ee,partial:()=>u9e,pick:()=>o9e,prefixIssues:()=>ni,primitiveTypes:()=>GB,promiseAllObject:()=>e9e,propertyKeyTypes:()=>cv,randomString:()=>t9e,required:()=>d9e,safeExtend:()=>c9e,shallowClone:()=>VB,slugify:()=>BB,stringifyPrimitive:()=>Q,uint8ArrayToBase64:()=>Dpe,uint8ArrayToBase64url:()=>h9e,uint8ArrayToHex:()=>g9e,unwrapMessage:()=>ov});function HKe(t){return t}function WKe(t){return t}function YKe(t){}function KKe(t){throw new Error("Unexpected value in exhaustive check")}function ZKe(t){}function sv(t){let e=Object.values(t).filter(n=>typeof n=="number");return Object.entries(t).filter(([n,i])=>e.indexOf(+n)===-1).map(([n,i])=>i)}function B(t,e="|"){return t.map(r=>Q(r)).join(e)}function bm(t,e){return typeof e=="bigint"?e.toString():e}function Tm(t){return{get value(){{let r=t();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function wl(t){return t==null}function av(t){let e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}function jB(t,e){let r=t/e,n=Math.round(r),i=Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<i?0:r-n}var Mpe=Symbol("evaluating");function et(t,e,r){let n;Object.defineProperty(t,e,{get(){if(n!==Mpe)return n===void 0&&(n=Mpe,n=r()),n},set(i){Object.defineProperty(t,e,{value:i})},configurable:!0})}function JKe(t){return Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t))}function Al(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function ec(...t){let e={};for(let r of t){let n=Object.getOwnPropertyDescriptors(r);Object.assign(e,n)}return Object.defineProperties({},e)}function XKe(t){return ec(t._zod.def)}function QKe(t,e){return e?e.reduce((r,n)=>r?.[n],t):t}function e9e(t){let e=Object.keys(t),r=e.map(n=>t[n]);return Promise.all(r).then(n=>{let i={};for(let o=0;o<e.length;o++)i[e[o]]=n[o];return i})}function t9e(t=10){let e="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<t;n++)r+=e[Math.floor(Math.random()*e.length)];return r}function II(t){return JSON.stringify(t)}function BB(t){return t.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var PI="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function jd(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var qB=Tm(()=>{if(zd.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let t=Function;return new t(""),!0}catch{return!1}});function xl(t){if(jd(t)===!1)return!1;let e=t.constructor;if(e===void 0||typeof e!="function")return!0;let r=e.prototype;return!(jd(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function VB(t){return xl(t)?{...t}:Array.isArray(t)?[...t]:t instanceof Map?new Map(t):t instanceof Set?new Set(t):t}function r9e(t){let e=0;for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&e++;return e}var n9e=t=>{let e=typeof t;switch(e){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(t)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(t)?"array":t===null?"null":t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?"promise":typeof Map<"u"&&t instanceof Map?"map":typeof Set<"u"&&t instanceof Set?"set":typeof Date<"u"&&t instanceof Date?"date":typeof File<"u"&&t instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${e}`)}},cv=new Set(["string","number","symbol"]),GB=new Set(["string","number","bigint","boolean","symbol","undefined"]);function no(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Dn(t,e,r){let n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function ae(t){let e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function i9e(t){let e;return new Proxy({},{get(r,n,i){return e??(e=t()),Reflect.get(e,n,i)},set(r,n,i,o){return e??(e=t()),Reflect.set(e,n,i,o)},has(r,n){return e??(e=t()),Reflect.has(e,n)},deleteProperty(r,n){return e??(e=t()),Reflect.deleteProperty(e,n)},ownKeys(r){return e??(e=t()),Reflect.ownKeys(e)},getOwnPropertyDescriptor(r,n){return e??(e=t()),Reflect.getOwnPropertyDescriptor(e,n)},defineProperty(r,n,i){return e??(e=t()),Reflect.defineProperty(e,n,i)}})}function Q(t){return typeof t=="bigint"?t.toString()+"n":typeof t=="string"?`"${t}"`:`${t}`}function HB(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var WB={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},YB={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function o9e(t,e){let r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let o=ec(t._zod.def,{get shape(){let s={};for(let a in e){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&(s[a]=r.shape[a])}return Al(this,"shape",s),s},checks:[]});return Dn(t,o)}function s9e(t,e){let r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let o=ec(t._zod.def,{get shape(){let s={...t._zod.def.shape};for(let a in e){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&delete s[a]}return Al(this,"shape",s),s},checks:[]});return Dn(t,o)}function a9e(t,e){if(!xl(e))throw new Error("Invalid input to extend: expected a plain object");let r=t._zod.def.checks;if(r&&r.length>0){let o=t._zod.def.shape;for(let s in e)if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let i=ec(t._zod.def,{get shape(){let o={...t._zod.def.shape,...e};return Al(this,"shape",o),o}});return Dn(t,i)}function c9e(t,e){if(!xl(e))throw new Error("Invalid input to safeExtend: expected a plain object");let r=ec(t._zod.def,{get shape(){let n={...t._zod.def.shape,...e};return Al(this,"shape",n),n}});return Dn(t,r)}function l9e(t,e){if(t._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r=ec(t._zod.def,{get shape(){let n={...t._zod.def.shape,...e._zod.def.shape};return Al(this,"shape",n),n},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]});return Dn(t,r)}function u9e(t,e,r){let i=e._zod.def.checks;if(i&&i.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let s=ec(e._zod.def,{get shape(){let a=e._zod.def.shape,c={...a};if(r)for(let l in r){if(!(l in a))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(c[l]=t?new t({type:"optional",innerType:a[l]}):a[l])}else for(let l in a)c[l]=t?new t({type:"optional",innerType:a[l]}):a[l];return Al(this,"shape",c),c},checks:[]});return Dn(e,s)}function d9e(t,e,r){let n=ec(e._zod.def,{get shape(){let i=e._zod.def.shape,o={...i};if(r)for(let s in r){if(!(s in o))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(o[s]=new t({type:"nonoptional",innerType:i[s]}))}else for(let s in i)o[s]=new t({type:"nonoptional",innerType:i[s]});return Al(this,"shape",o),o}});return Dn(e,n)}function Rl(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue!==!0)return!0;return!1}function KB(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue===!1)return!0;return!1}function ni(t,e){return e.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function ov(t){return typeof t=="string"?t:t?.message}function Ln(t,e,r){let n=t.message?t.message:ov(t.inst?._zod.def?.error?.(t))??ov(e?.error?.(t))??ov(r.customError?.(t))??ov(r.localeError?.(t))??"Invalid input",{inst:i,continue:o,input:s,...a}=t;return a.path??(a.path=[]),a.message=n,e?.reportInput&&(a.input=s),a}function lv(t){return t instanceof Set?"set":t instanceof Map?"map":t instanceof File?"file":"unknown"}function uv(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function ee(t){let e=typeof t;switch(e){case"number":return Number.isNaN(t)?"nan":"number";case"object":{if(t===null)return"null";if(Array.isArray(t))return"array";let r=t;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return e}function wm(...t){let[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}function f9e(t){return Object.entries(t).filter(([e,r])=>Number.isNaN(Number.parseInt(e,10))).map(e=>e[1])}function $pe(t){let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}function Dpe(t){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}function p9e(t){let e=t.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-e.length%4)%4);return $pe(e+r)}function h9e(t){return Dpe(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function m9e(t){let e=t.replace(/^0x/,"");if(e.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)r[n/2]=Number.parseInt(e.slice(n,n+2),16);return r}function g9e(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}var zB=class{constructor(...e){}};var Lpe=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,bm,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},dv=D("$ZodError",Lpe),ii=D("$ZodError",Lpe,{Parent:Error});function fv(t,e=r=>r.message){let r={},n=[];for(let i of t.issues)i.path.length>0?(r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(e(i))):n.push(e(i));return{formErrors:n,fieldErrors:r}}function pv(t,e=r=>r.message){let r={_errors:[]},n=(i,o=[])=>{for(let s of i.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(a=>n({issues:a},[...o,...s.path]));else if(s.code==="invalid_key")n({issues:s.issues},[...o,...s.path]);else if(s.code==="invalid_element")n({issues:s.issues},[...o,...s.path]);else{let a=[...o,...s.path];if(a.length===0)r._errors.push(e(s));else{let c=r,l=0;for(;l<a.length;){let u=a[l];l===a.length-1?(c[u]=c[u]||{_errors:[]},c[u]._errors.push(e(s))):c[u]=c[u]||{_errors:[]},c=c[u],l++}}}};return n(t),r}function ZB(t,e=r=>r.message){let r={errors:[]},n=(i,o=[])=>{var s,a;for(let c of i.issues)if(c.code==="invalid_union"&&c.errors.length)c.errors.map(l=>n({issues:l},[...o,...c.path]));else if(c.code==="invalid_key")n({issues:c.issues},[...o,...c.path]);else if(c.code==="invalid_element")n({issues:c.issues},[...o,...c.path]);else{let l=[...o,...c.path];if(l.length===0){r.errors.push(e(c));continue}let u=r,d=0;for(;d<l.length;){let f=l[d],p=d===l.length-1;typeof f=="string"?(u.properties??(u.properties={}),(s=u.properties)[f]??(s[f]={errors:[]}),u=u.properties[f]):(u.items??(u.items=[]),(a=u.items)[f]??(a[f]={errors:[]}),u=u.items[f]),p&&u.errors.push(e(c)),d++}}};return n(t),r}function Upe(t){let e=[],r=t.map(n=>typeof n=="object"?n.key:n);for(let n of r)typeof n=="number"?e.push(`[${n}]`):typeof n=="symbol"?e.push(`[${JSON.stringify(String(n))}]`):/[^\w$]/.test(n)?e.push(`[${JSON.stringify(n)}]`):(e.length&&e.push("."),e.push(n));return e.join("")}function JB(t){let e=[],r=[...t.issues].sort((n,i)=>(n.path??[]).length-(i.path??[]).length);for(let n of r)e.push(`\u2716 ${n.message}`),n.path?.length&&e.push(` \u2192 at ${Upe(n.path)}`);return e.join(`
188
+ `);this.baseURL=o.baseURL,this.timeout=o.timeout??PB.DEFAULT_TIMEOUT,this.logger=o.logger??console;let s="warn";this.logLevel=s,this.logLevel=aB(o.logLevel,"ClientOptions.logLevel",this)??aB(tv("ANTHROPIC_LOG"),"process.env['ANTHROPIC_LOG']",this)??s,this.fetchOptions=o.fetchOptions,this.maxRetries=o.maxRetries??2,this.fetch=o.fetch??Gfe(),fe(this,AI,Wfe,"f"),this._options=o,this.apiKey=typeof r=="string"?r:null,this.authToken=n}withOptions(e){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this.apiKey,authToken:this.authToken,...e})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:r}){if(!(e.get("x-api-key")||e.get("authorization"))&&!(this.apiKey&&e.get("x-api-key"))&&!r.has("x-api-key")&&!(this.authToken&&e.get("authorization"))&&!r.has("authorization"))throw new Error('Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}async authHeaders(e){return K([await this.apiKeyAuth(e),await this.bearerAuth(e)])}async apiKeyAuth(e){if(this.apiKey!=null)return K([{"X-Api-Key":this.apiKey}])}async bearerAuth(e){if(this.authToken!=null)return K([{Authorization:`Bearer ${this.authToken}`}])}stringifyQuery(e){return Yfe(e)}getUserAgent(){return`${this.constructor.name}/JS ${ml}`}defaultIdempotencyKey(){return`stainless-node-retry-${tB()}`}makeStatusError(e,r,n,i){return Ur.generate(e,r,n,i)}buildURL(e,r,n){let i=!z(this,IB,"m",bpe).call(this)&&n||this.baseURL,o=Dfe(e)?new URL(e):new URL(i+(i.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),s=this.defaultQuery(),a=Object.fromEntries(o.searchParams);return(!iB(s)||!iB(a))&&(r={...a,...s,...r}),typeof r=="object"&&r&&!Array.isArray(r)&&(o.search=this.stringifyQuery(r)),o.toString()}_calculateNonstreamingTimeout(e){if(3600*e/128e3>600)throw new Te("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details");return 600*1e3}async prepareOptions(e){}async prepareRequest(e,{url:r,options:n}){}get(e,r){return this.methodRequest("get",e,r)}post(e,r){return this.methodRequest("post",e,r)}patch(e,r){return this.methodRequest("patch",e,r)}put(e,r){return this.methodRequest("put",e,r)}delete(e,r){return this.methodRequest("delete",e,r)}methodRequest(e,r,n){return this.request(Promise.resolve(n).then(i=>({method:e,path:r,...i})))}request(e,r=null){return new Cd(this,this.makeRequest(e,r,void 0))}async makeRequest(e,r,n){let i=await e,o=i.maxRetries??this.maxRetries;r==null&&(r=o),await this.prepareOptions(i);let{req:s,url:a,timeout:c}=await this.buildRequest(i,{retryCount:o-r});await this.prepareRequest(s,{url:a,options:i});let l="log_"+(Math.random()*(1<<24)|0).toString(16).padStart(6,"0"),u=n===void 0?"":`, retryOf: ${n}`,d=Date.now();if(Fr(this).debug(`[${l}] sending request`,Wa({retryOfRequestLogID:n,method:i.method,url:a,options:i,headers:s.headers})),i.signal?.aborted)throw new Xr;let f=new AbortController,p=await this.fetchWithTimeout(a,s,c,f).catch(NE),h=Date.now();if(p instanceof globalThis.Error){let _=`retrying, ${r} attempts remaining`;if(i.signal?.aborted)throw new Xr;let v=Ga(p)||/timed? ?out/i.test(String(p)+("cause"in p?String(p.cause):""));if(r)return Fr(this).info(`[${l}] connection ${v?"timed out":"failed"} - ${_}`),Fr(this).debug(`[${l}] connection ${v?"timed out":"failed"} (${_})`,Wa({retryOfRequestLogID:n,url:a,durationMs:h-d,message:p.message})),this.retryRequest(i,r,n??l);throw Fr(this).info(`[${l}] connection ${v?"timed out":"failed"} - error; no more retries left`),Fr(this).debug(`[${l}] connection ${v?"timed out":"failed"} (error; no more retries left)`,Wa({retryOfRequestLogID:n,url:a,durationMs:h-d,message:p.message})),v?new qh:new hl({cause:p})}let m=[...p.headers.entries()].filter(([_])=>_==="request-id").map(([_,v])=>", "+_+": "+JSON.stringify(v)).join(""),g=`[${l}${u}${m}] ${s.method} ${a} ${p.ok?"succeeded":"failed"} with status ${p.status} in ${h-d}ms`;if(!p.ok){let _=await this.shouldRetry(p);if(r&&_){let R=`retrying, ${r} attempts remaining`;return await Hfe(p.body),Fr(this).info(`${g} - ${R}`),Fr(this).debug(`[${l}] response error (${R})`,Wa({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,durationMs:h-d})),this.retryRequest(i,r,n??l,p.headers)}let v=_?"error; no more retries left":"error; not retryable";Fr(this).info(`${g} - ${v}`);let w=await p.text().catch(R=>NE(R).message),y=XC(w),T=y?void 0:w;throw Fr(this).debug(`[${l}] response error (${v})`,Wa({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,message:T,durationMs:Date.now()-d})),this.makeStatusError(p.status,y,T,p.headers)}return Fr(this).info(g),Fr(this).debug(`[${l}] response start`,Wa({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,durationMs:h-d})),{response:p,options:i,controller:f,requestLogID:l,retryOfRequestLogID:n,startTime:d}}getAPIList(e,r,n){return this.requestAPIList(r,n&&"then"in n?n.then(i=>({method:"get",path:e,...i})):{method:"get",path:e,...n})}requestAPIList(e,r){let n=this.makeRequest(r,null,void 0);return new UE(this,n,e)}async fetchWithTimeout(e,r,n,i){let{signal:o,method:s,...a}=r||{},c=this._makeAbort(i);o&&o.addEventListener("abort",c,{once:!0});let l=setTimeout(c,n),u=globalThis.ReadableStream&&a.body instanceof globalThis.ReadableStream||typeof a.body=="object"&&a.body!==null&&Symbol.asyncIterator in a.body,d={signal:i.signal,...u?{duplex:"half"}:{},method:"GET",...a};s&&(d.method=s.toUpperCase());try{return await this.fetch.call(void 0,e,d)}finally{clearTimeout(l)}}async shouldRetry(e){let r=e.headers.get("x-should-retry");return r==="true"?!0:r==="false"?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,r,n,i){let o,s=i?.get("retry-after-ms");if(s){let c=parseFloat(s);Number.isNaN(c)||(o=c)}let a=i?.get("retry-after");if(a&&!o){let c=parseFloat(a);Number.isNaN(c)?o=Date.parse(a)-Date.now():o=c*1e3}if(o===void 0){let c=e.maxRetries??this.maxRetries;o=this.calculateDefaultRetryTimeoutMillis(r,c)}return await Ffe(o),this.makeRequest(e,r-1,n)}calculateDefaultRetryTimeoutMillis(e,r){let o=r-e,s=Math.min(.5*Math.pow(2,o),8),a=1-Math.random()*.25;return s*a*1e3}calculateNonstreamingTimeout(e,r){if(36e5*e/128e3>6e5||r!=null&&e>r)throw new Te("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details");return 6e5}async buildRequest(e,{retryCount:r=0}={}){let n={...e},{method:i,path:o,query:s,defaultBaseURL:a}=n,c=this.buildURL(o,s,a);"timeout"in n&&Ufe("timeout",n.timeout),n.timeout=n.timeout??this.timeout;let{bodyHeaders:l,body:u}=this.buildBody({options:n}),d=await this.buildHeaders({options:e,method:i,bodyHeaders:l,retryCount:r});return{req:{method:i,headers:d,...n.signal&&{signal:n.signal},...globalThis.ReadableStream&&u instanceof globalThis.ReadableStream&&{duplex:"half"},...u&&{body:u},...this.fetchOptions??{},...n.fetchOptions??{}},url:c,timeout:n.timeout}}async buildHeaders({options:e,method:r,bodyHeaders:n,retryCount:i}){let o={};this.idempotencyHeader&&r!=="get"&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),o[this.idempotencyHeader]=e.idempotencyKey);let s=K([o,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(i),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...Vfe(),...this._options.dangerouslyAllowBrowser?{"anthropic-dangerous-direct-browser-access":"true"}:void 0,"anthropic-version":"2023-06-01"},await this.authHeaders(e),this._options.defaultHeaders,n,e.headers]);return this.validateHeaders(s),s.values}_makeAbort(e){return()=>e.abort()}buildBody({options:{body:e,headers:r}}){if(!e)return{bodyHeaders:void 0,body:void 0};let n=K([r]);return ArrayBuffer.isView(e)||e instanceof ArrayBuffer||e instanceof DataView||typeof e=="string"&&n.values.has("content-type")||globalThis.Blob&&e instanceof globalThis.Blob||e instanceof FormData||e instanceof URLSearchParams||globalThis.ReadableStream&&e instanceof globalThis.ReadableStream?{bodyHeaders:void 0,body:e}:typeof e=="object"&&(Symbol.asyncIterator in e||Symbol.iterator in e&&"next"in e&&typeof e.next=="function")?{bodyHeaders:void 0,body:QC(e)}:typeof e=="object"&&n.values.get("content-type")==="application/x-www-form-urlencoded"?{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery(e)}:z(this,AI,"f").call(this,{body:e,headers:n})}};PB=Jt,AI=new WeakMap,IB=new WeakSet,bpe=function(){return this.baseURL!=="https://api.anthropic.com"};Jt.Anthropic=PB;Jt.HUMAN_PROMPT=Tpe;Jt.AI_PROMPT=wpe;Jt.DEFAULT_TIMEOUT=6e5;Jt.AnthropicError=Te;Jt.APIError=Ur;Jt.APIConnectionError=hl;Jt.APIConnectionTimeoutError=qh;Jt.APIUserAbortError=Xr;Jt.NotFoundError=Wh;Jt.ConflictError=Yh;Jt.RateLimitError=Zh;Jt.BadRequestError=Vh;Jt.AuthenticationError=Gh;Jt.InternalServerError=Jh;Jt.PermissionDeniedError=Hh;Jt.UnprocessableEntityError=Kh;Jt.toFile=oI;var Xa=class extends Jt{constructor(){super(...arguments),this.completions=new Dd(this),this.messages=new vl(this),this.models=new Ud(this),this.beta=new Qr(this)}};Xa.Completions=Dd;Xa.Messages=vl;Xa.Models=Ud;Xa.Beta=Qr;var OB=ie("runner"),ym=(t,e)=>e&&v0.includes(e)&&t!=="opencode"?void 0:e,xI=t=>t==="create",Qa=(t,e)=>t==null&&e==null?void 0:(t??0)+(e??0),LKe=(t,e)=>t||e?{input_tokens:Qa(t?.input_tokens,e?.input_tokens),output_tokens:Qa(t?.output_tokens,e?.output_tokens),reasoning_output_tokens:Qa(t?.reasoning_output_tokens,e?.reasoning_output_tokens),total_tokens:Qa(t?.total_tokens,e?.total_tokens),cache_creation_input_tokens:Qa(t?.cache_creation_input_tokens,e?.cache_creation_input_tokens),cache_read_input_tokens:Qa(t?.cache_read_input_tokens,e?.cache_read_input_tokens)}:void 0,bl=(t,e)=>{let r=t;return!!(e?.aborted&&(r?.isCanceled||r?.isTerminated))},Sm=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(OB.log(`${i} command completed with catch handler triggered`,{hadExistingError:!!r,hadExistingResult:!!n,resultLength:n?n.length:0,catchError:t?.message||"No error object",processExitCode:e.exitCode,processKilled:e.killed}),n?(OB.log("Preserving existing result despite catch handler being triggered"),r?{error:r,result:n}:{error:"Process completed with errors but result was captured",result:n}):(OB.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),rv=(t,e)=>({...e,steps:[...t.steps||[],...e.steps||[]],duration:(t.duration||0)+(e.duration||0),usage:LKe(t.usage,e.usage),costUsd:Qa(t.costUsd,e.costUsd),toolCallCount:Qa(t.toolCallCount,e.toolCallCount),toolErrorCount:Qa(t.toolErrorCount,e.toolErrorCount)});import Fd from"process";var RI=ie("ask_db_access"),NB=()=>{delete Fd.env.NETLIFY_DB_URL,delete Fd.env.NETLIFY_DB_BRANCH},Ape=(t,e)=>{delete Fd.env.EXPERIMENTAL_NETLIFY_DB_ENABLED;let r=UKe(t,e);return r?(Fd.env.NETLIFY_DB_URL=r.connectionString,Fd.env.NETLIFY_DB_BRANCH=r.branch,RI.log("Ask mode has read-only database access",{branch:r.branch,host:r.host}),r):(NB(),null)},Em=t=>{if(t.mode!=="ask")return null;let e=Fd.env.NETLIFY_DB_URL,r=Fd.env.NETLIFY_DB_BRANCH,n=e?mz(e):null;return e&&r&&n?{connectionString:e,branch:r,host:n}:null},CI=t=>[...new Set([`${t} db connect`,"netlify db connect","npx netlify db connect"])],UKe=(t,e)=>{if(t.mode!=="ask")return null;let r=t.dbConnectionString;if(!r)return RI.log("No database connection string in the payload; ask mode runs without database access"),null;if(!e)return RI.warn("Database connection string present but no deploy alias to name the branch; skipping DB access"),null;let n=mz(r);return n?{connectionString:r,branch:e,host:n}:(RI.warn("Could not read a host from the database connection string; skipping DB access"),null)};import u3 from"fs/promises";import EEe from"os";import d3 from"path";import uc from"process";import{randomUUID as Brt}from"crypto";import{existsSync as qrt}from"fs";import{fileURLToPath as SEe}from"url";var Fs="netlify_interactions";var xpe="--questions-file",Ci="netlify_connections",vm="request_service_authorization",Rpe="--runner-id",Cpe="--session-id",Ipe="--request-file",nv=(t,e)=>`mcp__${t}__${e}`,kB=(t,e)=>`mcp_${t}_${e}`,MB=(t,e)=>`${t}_${e}`,FKe=nv(Fs,"ask"),zKe=kB(Fs,"ask"),jKe=MB(Fs,"ask"),BKe=nv(Ci,vm),qKe=kB(Ci,vm),VKe=MB(Ci,vm),$B={ask:FKe,authorize:BKe},DB={ask:zKe,authorize:qKe},Ppe={ask:jKe,authorize:VKe},Ope={ask:"ask",authorize:vm},GKe={claude:nv,codex:nv,gemini:kB,opencode:MB},LB=(t,e,r)=>(GKe[t]??nv)(e,r),Npe=t=>t===Fs||t===Ci;import zrt from"process";var rc={};Gr(rc,{$ZodAny:()=>wq,$ZodArray:()=>Iq,$ZodAsyncError:()=>Bo,$ZodBase64:()=>hq,$ZodBase64URL:()=>mq,$ZodBigInt:()=>YI,$ZodBigIntFormat:()=>Eq,$ZodBoolean:()=>Ev,$ZodCIDRv4:()=>dq,$ZodCIDRv6:()=>fq,$ZodCUID:()=>Q2,$ZodCUID2:()=>eq,$ZodCatch:()=>Wq,$ZodCheck:()=>zt,$ZodCheckBigIntFormat:()=>I2,$ZodCheckEndsWith:()=>j2,$ZodCheckGreaterThan:()=>BI,$ZodCheckIncludes:()=>F2,$ZodCheckLengthEquals:()=>$2,$ZodCheckLessThan:()=>jI,$ZodCheckLowerCase:()=>L2,$ZodCheckMaxLength:()=>k2,$ZodCheckMaxSize:()=>P2,$ZodCheckMimeType:()=>q2,$ZodCheckMinLength:()=>M2,$ZodCheckMinSize:()=>O2,$ZodCheckMultipleOf:()=>R2,$ZodCheckNumberFormat:()=>C2,$ZodCheckOverwrite:()=>V2,$ZodCheckProperty:()=>B2,$ZodCheckRegex:()=>D2,$ZodCheckSizeEquals:()=>N2,$ZodCheckStartsWith:()=>z2,$ZodCheckStringFormat:()=>Pm,$ZodCheckUpperCase:()=>U2,$ZodCodec:()=>bv,$ZodCustom:()=>t4,$ZodCustomStringFormat:()=>yq,$ZodDate:()=>Cq,$ZodDefault:()=>qq,$ZodDiscriminatedUnion:()=>Nq,$ZodE164:()=>gq,$ZodEmail:()=>K2,$ZodEmoji:()=>J2,$ZodEncodeError:()=>Tl,$ZodEnum:()=>Lq,$ZodError:()=>dv,$ZodExactOptional:()=>jq,$ZodFile:()=>Fq,$ZodFunction:()=>Xq,$ZodGUID:()=>W2,$ZodIPv4:()=>cq,$ZodIPv6:()=>lq,$ZodISODate:()=>oq,$ZodISODateTime:()=>iq,$ZodISODuration:()=>aq,$ZodISOTime:()=>sq,$ZodIntersection:()=>kq,$ZodJWT:()=>_q,$ZodKSUID:()=>nq,$ZodLazy:()=>e4,$ZodLiteral:()=>Uq,$ZodMAC:()=>uq,$ZodMap:()=>$q,$ZodNaN:()=>Yq,$ZodNanoID:()=>X2,$ZodNever:()=>xq,$ZodNonOptional:()=>Gq,$ZodNull:()=>Tq,$ZodNullable:()=>Bq,$ZodNumber:()=>WI,$ZodNumberFormat:()=>Sq,$ZodObject:()=>_he,$ZodObjectJIT:()=>Pq,$ZodOptional:()=>ZI,$ZodPipe:()=>JI,$ZodPrefault:()=>Vq,$ZodPreprocess:()=>Kq,$ZodPromise:()=>Qq,$ZodReadonly:()=>Zq,$ZodRealError:()=>ii,$ZodRecord:()=>Mq,$ZodRegistry:()=>tP,$ZodSet:()=>Dq,$ZodString:()=>qd,$ZodStringFormat:()=>It,$ZodSuccess:()=>Hq,$ZodSymbol:()=>vq,$ZodTemplateLiteral:()=>Jq,$ZodTransform:()=>zq,$ZodTuple:()=>KI,$ZodType:()=>ze,$ZodULID:()=>tq,$ZodURL:()=>Z2,$ZodUUID:()=>Y2,$ZodUndefined:()=>bq,$ZodUnion:()=>vv,$ZodUnknown:()=>Aq,$ZodVoid:()=>Rq,$ZodXID:()=>rq,$ZodXor:()=>Oq,$brand:()=>UB,$constructor:()=>D,$input:()=>n4,$output:()=>r4,Doc:()=>Sv,JSONSchema:()=>Sme,JSONSchemaGenerator:()=>NP,NEVER:()=>iv,TimePrecision:()=>a4,_any:()=>C4,_array:()=>$4,_base64:()=>SP,_base64url:()=>EP,_bigint:()=>v4,_boolean:()=>S4,_catch:()=>s8e,_check:()=>yme,_cidrv4:()=>_P,_cidrv6:()=>yP,_coercedBigint:()=>b4,_coercedBoolean:()=>E4,_coercedDate:()=>k4,_coercedNumber:()=>p4,_coercedString:()=>o4,_cuid:()=>uP,_cuid2:()=>dP,_custom:()=>L4,_date:()=>N4,_decode:()=>NI,_decodeAsync:()=>MI,_default:()=>n8e,_discriminatedUnion:()=>GZe,_e164:()=>vP,_email:()=>nP,_emoji:()=>cP,_encode:()=>OI,_encodeAsync:()=>kI,_endsWith:()=>Lm,_enum:()=>JZe,_file:()=>D4,_float32:()=>m4,_float64:()=>g4,_gt:()=>js,_gte:()=>Un,_guid:()=>Av,_includes:()=>$m,_int:()=>h4,_int32:()=>_4,_int64:()=>T4,_intersection:()=>HZe,_ipv4:()=>mP,_ipv6:()=>gP,_isoDate:()=>l4,_isoDateTime:()=>c4,_isoDuration:()=>d4,_isoTime:()=>u4,_jwt:()=>bP,_ksuid:()=>hP,_lazy:()=>u8e,_length:()=>Hd,_literal:()=>QZe,_lowercase:()=>km,_lt:()=>zs,_lte:()=>Pi,_mac:()=>s4,_map:()=>KZe,_max:()=>Pi,_maxLength:()=>Gd,_maxSize:()=>Il,_mime:()=>Um,_min:()=>Un,_minLength:()=>tc,_minSize:()=>Bs,_multipleOf:()=>Cl,_nan:()=>M4,_nanoid:()=>lP,_nativeEnum:()=>XZe,_negative:()=>wP,_never:()=>P4,_nonnegative:()=>xP,_nonoptional:()=>i8e,_nonpositive:()=>AP,_normalize:()=>Fm,_null:()=>R4,_nullable:()=>r8e,_number:()=>f4,_optional:()=>t8e,_overwrite:()=>qo,_parse:()=>Am,_parseAsync:()=>xm,_pipe:()=>a8e,_positive:()=>TP,_promise:()=>d8e,_property:()=>RP,_readonly:()=>c8e,_record:()=>YZe,_refine:()=>U4,_regex:()=>Nm,_safeDecode:()=>DI,_safeDecodeAsync:()=>UI,_safeEncode:()=>$I,_safeEncodeAsync:()=>LI,_safeParse:()=>Rm,_safeParseAsync:()=>Im,_set:()=>ZZe,_size:()=>Vd,_slugify:()=>qm,_startsWith:()=>Dm,_string:()=>i4,_stringFormat:()=>Vm,_stringbool:()=>B4,_success:()=>o8e,_superRefine:()=>F4,_symbol:()=>A4,_templateLiteral:()=>l8e,_toLowerCase:()=>jm,_toUpperCase:()=>Bm,_transform:()=>e8e,_trim:()=>zm,_tuple:()=>WZe,_uint32:()=>y4,_uint64:()=>w4,_ulid:()=>fP,_undefined:()=>x4,_union:()=>qZe,_unknown:()=>I4,_uppercase:()=>Mm,_url:()=>xv,_uuid:()=>iP,_uuidv4:()=>oP,_uuidv6:()=>sP,_uuidv7:()=>aP,_void:()=>O4,_xid:()=>pP,_xor:()=>VZe,clone:()=>Dn,config:()=>ir,createStandardJSONSchemaMethod:()=>Gm,createToJSONSchemaMethod:()=>q4,decode:()=>zpe,decodeAsync:()=>Bpe,describe:()=>z4,encode:()=>Fpe,encodeAsync:()=>jpe,extractDefs:()=>Ol,finalize:()=>Nl,flattenError:()=>fv,formatError:()=>pv,globalConfig:()=>zd,globalRegistry:()=>en,initializeContext:()=>Pl,isValidBase64:()=>pq,isValidBase64URL:()=>phe,isValidJWT:()=>hhe,locales:()=>wv,meta:()=>j4,parse:()=>hv,parseAsync:()=>mv,prettifyError:()=>JB,process:()=>St,regexes:()=>Ii,registry:()=>rP,safeDecode:()=>Vpe,safeDecodeAsync:()=>Hpe,safeEncode:()=>qpe,safeEncodeAsync:()=>Gpe,safeParse:()=>Cm,safeParseAsync:()=>gv,toDotPath:()=>Upe,toJSONSchema:()=>OP,treeifyError:()=>ZB,util:()=>re,version:()=>G2});var kpe,iv=Object.freeze({status:"aborted"});function D(t,e,r){function n(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),a._zod.traits.has(t))return;a._zod.traits.add(t),e(a,c);let l=s.prototype,u=Object.keys(l);for(let d=0;d<u.length;d++){let f=u[d];f in a||(a[f]=l[f].bind(a))}}let i=r?.Parent??Object;class o extends i{}Object.defineProperty(o,"name",{value:t});function s(a){var c;let l=r?.Parent?new o:this;n(l,a),(c=l._zod).deferred??(c.deferred=[]);for(let u of l._zod.deferred)u();return l}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(t)}),Object.defineProperty(s,"name",{value:t}),s}var UB=Symbol("zod_brand"),Bo=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Tl=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(kpe=globalThis).__zod_globalConfig??(kpe.__zod_globalConfig={});var zd=globalThis.__zod_globalConfig;function ir(t){return t&&Object.assign(zd,t),zd}var re={};Gr(re,{BIGINT_FORMAT_RANGES:()=>YB,Class:()=>zB,NUMBER_FORMAT_RANGES:()=>WB,aborted:()=>Rl,allowsEval:()=>qB,assert:()=>ZKe,assertEqual:()=>HKe,assertIs:()=>YKe,assertNever:()=>KKe,assertNotEqual:()=>WKe,assignProp:()=>Al,base64ToUint8Array:()=>$pe,base64urlToUint8Array:()=>p9e,cached:()=>Tm,captureStackTrace:()=>PI,cleanEnum:()=>f9e,cleanRegex:()=>av,clone:()=>Dn,cloneDef:()=>XKe,createTransparentProxy:()=>i9e,defineLazy:()=>et,esc:()=>II,escapeRegex:()=>no,explicitlyAborted:()=>KB,extend:()=>a9e,finalizeIssue:()=>Ln,floatSafeRemainder:()=>jB,getElementAtPath:()=>QKe,getEnumValues:()=>sv,getLengthableOrigin:()=>uv,getParsedType:()=>n9e,getSizableOrigin:()=>lv,hexToUint8Array:()=>m9e,isObject:()=>jd,isPlainObject:()=>xl,issue:()=>wm,joinValues:()=>B,jsonStringifyReplacer:()=>bm,merge:()=>l9e,mergeDefs:()=>ec,normalizeParams:()=>ae,nullish:()=>wl,numKeys:()=>r9e,objectClone:()=>JKe,omit:()=>s9e,optionalKeys:()=>HB,parsedType:()=>ee,partial:()=>u9e,pick:()=>o9e,prefixIssues:()=>ni,primitiveTypes:()=>GB,promiseAllObject:()=>e9e,propertyKeyTypes:()=>cv,randomString:()=>t9e,required:()=>d9e,safeExtend:()=>c9e,shallowClone:()=>VB,slugify:()=>BB,stringifyPrimitive:()=>Q,uint8ArrayToBase64:()=>Dpe,uint8ArrayToBase64url:()=>h9e,uint8ArrayToHex:()=>g9e,unwrapMessage:()=>ov});function HKe(t){return t}function WKe(t){return t}function YKe(t){}function KKe(t){throw new Error("Unexpected value in exhaustive check")}function ZKe(t){}function sv(t){let e=Object.values(t).filter(n=>typeof n=="number");return Object.entries(t).filter(([n,i])=>e.indexOf(+n)===-1).map(([n,i])=>i)}function B(t,e="|"){return t.map(r=>Q(r)).join(e)}function bm(t,e){return typeof e=="bigint"?e.toString():e}function Tm(t){return{get value(){{let r=t();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function wl(t){return t==null}function av(t){let e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}function jB(t,e){let r=t/e,n=Math.round(r),i=Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<i?0:r-n}var Mpe=Symbol("evaluating");function et(t,e,r){let n;Object.defineProperty(t,e,{get(){if(n!==Mpe)return n===void 0&&(n=Mpe,n=r()),n},set(i){Object.defineProperty(t,e,{value:i})},configurable:!0})}function JKe(t){return Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t))}function Al(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function ec(...t){let e={};for(let r of t){let n=Object.getOwnPropertyDescriptors(r);Object.assign(e,n)}return Object.defineProperties({},e)}function XKe(t){return ec(t._zod.def)}function QKe(t,e){return e?e.reduce((r,n)=>r?.[n],t):t}function e9e(t){let e=Object.keys(t),r=e.map(n=>t[n]);return Promise.all(r).then(n=>{let i={};for(let o=0;o<e.length;o++)i[e[o]]=n[o];return i})}function t9e(t=10){let e="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<t;n++)r+=e[Math.floor(Math.random()*e.length)];return r}function II(t){return JSON.stringify(t)}function BB(t){return t.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var PI="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function jd(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var qB=Tm(()=>{if(zd.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let t=Function;return new t(""),!0}catch{return!1}});function xl(t){if(jd(t)===!1)return!1;let e=t.constructor;if(e===void 0||typeof e!="function")return!0;let r=e.prototype;return!(jd(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function VB(t){return xl(t)?{...t}:Array.isArray(t)?[...t]:t instanceof Map?new Map(t):t instanceof Set?new Set(t):t}function r9e(t){let e=0;for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&e++;return e}var n9e=t=>{let e=typeof t;switch(e){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(t)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(t)?"array":t===null?"null":t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?"promise":typeof Map<"u"&&t instanceof Map?"map":typeof Set<"u"&&t instanceof Set?"set":typeof Date<"u"&&t instanceof Date?"date":typeof File<"u"&&t instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${e}`)}},cv=new Set(["string","number","symbol"]),GB=new Set(["string","number","bigint","boolean","symbol","undefined"]);function no(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Dn(t,e,r){let n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function ae(t){let e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function i9e(t){let e;return new Proxy({},{get(r,n,i){return e??(e=t()),Reflect.get(e,n,i)},set(r,n,i,o){return e??(e=t()),Reflect.set(e,n,i,o)},has(r,n){return e??(e=t()),Reflect.has(e,n)},deleteProperty(r,n){return e??(e=t()),Reflect.deleteProperty(e,n)},ownKeys(r){return e??(e=t()),Reflect.ownKeys(e)},getOwnPropertyDescriptor(r,n){return e??(e=t()),Reflect.getOwnPropertyDescriptor(e,n)},defineProperty(r,n,i){return e??(e=t()),Reflect.defineProperty(e,n,i)}})}function Q(t){return typeof t=="bigint"?t.toString()+"n":typeof t=="string"?`"${t}"`:`${t}`}function HB(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var WB={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},YB={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function o9e(t,e){let r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let o=ec(t._zod.def,{get shape(){let s={};for(let a in e){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&(s[a]=r.shape[a])}return Al(this,"shape",s),s},checks:[]});return Dn(t,o)}function s9e(t,e){let r=t._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let o=ec(t._zod.def,{get shape(){let s={...t._zod.def.shape};for(let a in e){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&delete s[a]}return Al(this,"shape",s),s},checks:[]});return Dn(t,o)}function a9e(t,e){if(!xl(e))throw new Error("Invalid input to extend: expected a plain object");let r=t._zod.def.checks;if(r&&r.length>0){let o=t._zod.def.shape;for(let s in e)if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let i=ec(t._zod.def,{get shape(){let o={...t._zod.def.shape,...e};return Al(this,"shape",o),o}});return Dn(t,i)}function c9e(t,e){if(!xl(e))throw new Error("Invalid input to safeExtend: expected a plain object");let r=ec(t._zod.def,{get shape(){let n={...t._zod.def.shape,...e};return Al(this,"shape",n),n}});return Dn(t,r)}function l9e(t,e){if(t._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r=ec(t._zod.def,{get shape(){let n={...t._zod.def.shape,...e._zod.def.shape};return Al(this,"shape",n),n},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]});return Dn(t,r)}function u9e(t,e,r){let i=e._zod.def.checks;if(i&&i.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let s=ec(e._zod.def,{get shape(){let a=e._zod.def.shape,c={...a};if(r)for(let l in r){if(!(l in a))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(c[l]=t?new t({type:"optional",innerType:a[l]}):a[l])}else for(let l in a)c[l]=t?new t({type:"optional",innerType:a[l]}):a[l];return Al(this,"shape",c),c},checks:[]});return Dn(e,s)}function d9e(t,e,r){let n=ec(e._zod.def,{get shape(){let i=e._zod.def.shape,o={...i};if(r)for(let s in r){if(!(s in o))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(o[s]=new t({type:"nonoptional",innerType:i[s]}))}else for(let s in i)o[s]=new t({type:"nonoptional",innerType:i[s]});return Al(this,"shape",o),o}});return Dn(e,n)}function Rl(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue!==!0)return!0;return!1}function KB(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue===!1)return!0;return!1}function ni(t,e){return e.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function ov(t){return typeof t=="string"?t:t?.message}function Ln(t,e,r){let n=t.message?t.message:ov(t.inst?._zod.def?.error?.(t))??ov(e?.error?.(t))??ov(r.customError?.(t))??ov(r.localeError?.(t))??"Invalid input",{inst:i,continue:o,input:s,...a}=t;return a.path??(a.path=[]),a.message=n,e?.reportInput&&(a.input=s),a}function lv(t){return t instanceof Set?"set":t instanceof Map?"map":t instanceof File?"file":"unknown"}function uv(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function ee(t){let e=typeof t;switch(e){case"number":return Number.isNaN(t)?"nan":"number";case"object":{if(t===null)return"null";if(Array.isArray(t))return"array";let r=t;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return e}function wm(...t){let[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}function f9e(t){return Object.entries(t).filter(([e,r])=>Number.isNaN(Number.parseInt(e,10))).map(e=>e[1])}function $pe(t){let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}function Dpe(t){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}function p9e(t){let e=t.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-e.length%4)%4);return $pe(e+r)}function h9e(t){return Dpe(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function m9e(t){let e=t.replace(/^0x/,"");if(e.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)r[n/2]=Number.parseInt(e.slice(n,n+2),16);return r}function g9e(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}var zB=class{constructor(...e){}};var Lpe=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,bm,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},dv=D("$ZodError",Lpe),ii=D("$ZodError",Lpe,{Parent:Error});function fv(t,e=r=>r.message){let r={},n=[];for(let i of t.issues)i.path.length>0?(r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(e(i))):n.push(e(i));return{formErrors:n,fieldErrors:r}}function pv(t,e=r=>r.message){let r={_errors:[]},n=(i,o=[])=>{for(let s of i.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(a=>n({issues:a},[...o,...s.path]));else if(s.code==="invalid_key")n({issues:s.issues},[...o,...s.path]);else if(s.code==="invalid_element")n({issues:s.issues},[...o,...s.path]);else{let a=[...o,...s.path];if(a.length===0)r._errors.push(e(s));else{let c=r,l=0;for(;l<a.length;){let u=a[l];l===a.length-1?(c[u]=c[u]||{_errors:[]},c[u]._errors.push(e(s))):c[u]=c[u]||{_errors:[]},c=c[u],l++}}}};return n(t),r}function ZB(t,e=r=>r.message){let r={errors:[]},n=(i,o=[])=>{var s,a;for(let c of i.issues)if(c.code==="invalid_union"&&c.errors.length)c.errors.map(l=>n({issues:l},[...o,...c.path]));else if(c.code==="invalid_key")n({issues:c.issues},[...o,...c.path]);else if(c.code==="invalid_element")n({issues:c.issues},[...o,...c.path]);else{let l=[...o,...c.path];if(l.length===0){r.errors.push(e(c));continue}let u=r,d=0;for(;d<l.length;){let f=l[d],p=d===l.length-1;typeof f=="string"?(u.properties??(u.properties={}),(s=u.properties)[f]??(s[f]={errors:[]}),u=u.properties[f]):(u.items??(u.items=[]),(a=u.items)[f]??(a[f]={errors:[]}),u=u.items[f]),p&&u.errors.push(e(c)),d++}}};return n(t),r}function Upe(t){let e=[],r=t.map(n=>typeof n=="object"?n.key:n);for(let n of r)typeof n=="number"?e.push(`[${n}]`):typeof n=="symbol"?e.push(`[${JSON.stringify(String(n))}]`):/[^\w$]/.test(n)?e.push(`[${JSON.stringify(n)}]`):(e.length&&e.push("."),e.push(n));return e.join("")}function JB(t){let e=[],r=[...t.issues].sort((n,i)=>(n.path??[]).length-(i.path??[]).length);for(let n of r)e.push(`\u2716 ${n.message}`),n.path?.length&&e.push(` \u2192 at ${Upe(n.path)}`);return e.join(`
189
189
  `)}var Am=t=>(e,r,n,i)=>{let o=n?{...n,async:!1}:{async:!1},s=e._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new Bo;if(s.issues.length){let a=new(i?.Err??t)(s.issues.map(c=>Ln(c,o,ir())));throw PI(a,i?.callee),a}return s.value},hv=Am(ii),xm=t=>async(e,r,n,i)=>{let o=n?{...n,async:!0}:{async:!0},s=e._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let a=new(i?.Err??t)(s.issues.map(c=>Ln(c,o,ir())));throw PI(a,i?.callee),a}return s.value},mv=xm(ii),Rm=t=>(e,r,n)=>{let i=n?{...n,async:!1}:{async:!1},o=e._zod.run({value:r,issues:[]},i);if(o instanceof Promise)throw new Bo;return o.issues.length?{success:!1,error:new(t??dv)(o.issues.map(s=>Ln(s,i,ir())))}:{success:!0,data:o.value}},Cm=Rm(ii),Im=t=>async(e,r,n)=>{let i=n?{...n,async:!0}:{async:!0},o=e._zod.run({value:r,issues:[]},i);return o instanceof Promise&&(o=await o),o.issues.length?{success:!1,error:new t(o.issues.map(s=>Ln(s,i,ir())))}:{success:!0,data:o.value}},gv=Im(ii),OI=t=>(e,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return Am(t)(e,r,i)},Fpe=OI(ii),NI=t=>(e,r,n)=>Am(t)(e,r,n),zpe=NI(ii),kI=t=>async(e,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return xm(t)(e,r,i)},jpe=kI(ii),MI=t=>async(e,r,n)=>xm(t)(e,r,n),Bpe=MI(ii),$I=t=>(e,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return Rm(t)(e,r,i)},qpe=$I(ii),DI=t=>(e,r,n)=>Rm(t)(e,r,n),Vpe=DI(ii),LI=t=>async(e,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return Im(t)(e,r,i)},Gpe=LI(ii),UI=t=>async(e,r,n)=>Im(t)(e,r,n),Hpe=UI(ii);var Ii={};Gr(Ii,{base64:()=>p2,base64url:()=>FI,bigint:()=>E2,boolean:()=>b2,browserEmail:()=>A9e,cidrv4:()=>d2,cidrv6:()=>f2,cuid:()=>XB,cuid2:()=>QB,date:()=>g2,datetime:()=>y2,domain:()=>C9e,duration:()=>i2,e164:()=>m2,email:()=>s2,emoji:()=>a2,extendedDuration:()=>y9e,guid:()=>o2,hex:()=>I9e,hostname:()=>R9e,html5Email:()=>b9e,httpProtocol:()=>h2,idnEmail:()=>w9e,integer:()=>v2,ipv4:()=>c2,ipv6:()=>l2,ksuid:()=>r2,lowercase:()=>A2,mac:()=>u2,md5_base64:()=>O9e,md5_base64url:()=>N9e,md5_hex:()=>P9e,nanoid:()=>n2,null:()=>T2,number:()=>zI,rfc5322Email:()=>T9e,sha1_base64:()=>M9e,sha1_base64url:()=>$9e,sha1_hex:()=>k9e,sha256_base64:()=>L9e,sha256_base64url:()=>U9e,sha256_hex:()=>D9e,sha384_base64:()=>z9e,sha384_base64url:()=>j9e,sha384_hex:()=>F9e,sha512_base64:()=>q9e,sha512_base64url:()=>V9e,sha512_hex:()=>B9e,string:()=>S2,time:()=>_2,ulid:()=>e2,undefined:()=>w2,unicodeEmail:()=>Wpe,uppercase:()=>x2,uuid:()=>Bd,uuid4:()=>S9e,uuid6:()=>E9e,uuid7:()=>v9e,xid:()=>t2});var XB=/^[cC][0-9a-z]{6,}$/,QB=/^[0-9a-z]+$/,e2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,t2=/^[0-9a-vA-V]{20}$/,r2=/^[A-Za-z0-9]{27}$/,n2=/^[a-zA-Z0-9_-]{21}$/,i2=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,y9e=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,o2=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Bd=t=>t?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,S9e=Bd(4),E9e=Bd(6),v9e=Bd(7),s2=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,b9e=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,T9e=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,Wpe=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,w9e=Wpe,A9e=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,x9e="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function a2(){return new RegExp(x9e,"u")}var c2=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,l2=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,u2=t=>{let e=no(t??":");return new RegExp(`^(?:[0-9A-F]{2}${e}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${e}){5}[0-9a-f]{2}$`)},d2=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,f2=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,p2=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,FI=/^[A-Za-z0-9_-]*$/,R9e=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,C9e=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,h2=/^https?$/,m2=/^\+[1-9]\d{6,14}$/,Ype="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",g2=new RegExp(`^${Ype}$`);function Kpe(t){let e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof t.precision=="number"?t.precision===-1?`${e}`:t.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${t.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function _2(t){return new RegExp(`^${Kpe(t)}$`)}function y2(t){let e=Kpe({precision:t.precision}),r=["Z"];t.local&&r.push(""),t.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${e}(?:${r.join("|")})`;return new RegExp(`^${Ype}T(?:${n})$`)}var S2=t=>{let e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)},E2=/^-?\d+n?$/,v2=/^-?\d+$/,zI=/^-?\d+(?:\.\d+)?$/,b2=/^(?:true|false)$/i,T2=/^null$/i;var w2=/^undefined$/i;var A2=/^[^A-Z]*$/,x2=/^[^a-z]*$/,I9e=/^[0-9a-fA-F]*$/;function _v(t,e){return new RegExp(`^[A-Za-z0-9+/]{${t}}${e}$`)}function yv(t){return new RegExp(`^[A-Za-z0-9_-]{${t}}$`)}var P9e=/^[0-9a-fA-F]{32}$/,O9e=_v(22,"=="),N9e=yv(22),k9e=/^[0-9a-fA-F]{40}$/,M9e=_v(27,"="),$9e=yv(27),D9e=/^[0-9a-fA-F]{64}$/,L9e=_v(43,"="),U9e=yv(43),F9e=/^[0-9a-fA-F]{96}$/,z9e=_v(64,""),j9e=yv(64),B9e=/^[0-9a-fA-F]{128}$/,q9e=_v(86,"=="),V9e=yv(86);var zt=D("$ZodCheck",(t,e)=>{var r;t._zod??(t._zod={}),t._zod.def=e,(r=t._zod).onattach??(r.onattach=[])}),Jpe={number:"number",bigint:"bigint",object:"date"},jI=D("$ZodCheckLessThan",(t,e)=>{zt.init(t,e);let r=Jpe[typeof e.value];t._zod.onattach.push(n=>{let i=n._zod.bag,o=(e.inclusive?i.maximum:i.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value<o&&(e.inclusive?i.maximum=e.value:i.exclusiveMaximum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value<=e.value:n.value<e.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),BI=D("$ZodCheckGreaterThan",(t,e)=>{zt.init(t,e);let r=Jpe[typeof e.value];t._zod.onattach.push(n=>{let i=n._zod.bag,o=(e.inclusive?i.minimum:i.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>o&&(e.inclusive?i.minimum=e.value:i.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),R2=D("$ZodCheckMultipleOf",(t,e)=>{zt.init(t,e),t._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=e.value)}),t._zod.check=r=>{if(typeof r.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%e.value===BigInt(0):jB(r.value,e.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:e.value,input:r.value,inst:t,continue:!e.abort})}}),C2=D("$ZodCheckNumberFormat",(t,e)=>{zt.init(t,e),e.format=e.format||"float64";let r=e.format?.includes("int"),n=r?"int":"number",[i,o]=WB[e.format];t._zod.onattach.push(s=>{let a=s._zod.bag;a.format=e.format,a.minimum=i,a.maximum=o,r&&(a.pattern=v2)}),t._zod.check=s=>{let a=s.value;if(r){if(!Number.isInteger(a)){s.issues.push({expected:n,format:e.format,code:"invalid_type",continue:!1,input:a,inst:t});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort});return}}a<i&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:i,inclusive:!0,inst:t,continue:!e.abort}),a>o&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:o,inclusive:!0,inst:t,continue:!e.abort})}}),I2=D("$ZodCheckBigIntFormat",(t,e)=>{zt.init(t,e);let[r,n]=YB[e.format];t._zod.onattach.push(i=>{let o=i._zod.bag;o.format=e.format,o.minimum=r,o.maximum=n}),t._zod.check=i=>{let o=i.value;o<r&&i.issues.push({origin:"bigint",input:o,code:"too_small",minimum:r,inclusive:!0,inst:t,continue:!e.abort}),o>n&&i.issues.push({origin:"bigint",input:o,code:"too_big",maximum:n,inclusive:!0,inst:t,continue:!e.abort})}}),P2=D("$ZodCheckMaxSize",(t,e)=>{var r;zt.init(t,e),(r=t._zod.def).when??(r.when=n=>{let i=n.value;return!wl(i)&&i.size!==void 0}),t._zod.onattach.push(n=>{let i=n._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum<i&&(n._zod.bag.maximum=e.maximum)}),t._zod.check=n=>{let i=n.value;i.size<=e.maximum||n.issues.push({origin:lv(i),code:"too_big",maximum:e.maximum,inclusive:!0,input:i,inst:t,continue:!e.abort})}}),O2=D("$ZodCheckMinSize",(t,e)=>{var r;zt.init(t,e),(r=t._zod.def).when??(r.when=n=>{let i=n.value;return!wl(i)&&i.size!==void 0}),t._zod.onattach.push(n=>{let i=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>i&&(n._zod.bag.minimum=e.minimum)}),t._zod.check=n=>{let i=n.value;i.size>=e.minimum||n.issues.push({origin:lv(i),code:"too_small",minimum:e.minimum,inclusive:!0,input:i,inst:t,continue:!e.abort})}}),N2=D("$ZodCheckSizeEquals",(t,e)=>{var r;zt.init(t,e),(r=t._zod.def).when??(r.when=n=>{let i=n.value;return!wl(i)&&i.size!==void 0}),t._zod.onattach.push(n=>{let i=n._zod.bag;i.minimum=e.size,i.maximum=e.size,i.size=e.size}),t._zod.check=n=>{let i=n.value,o=i.size;if(o===e.size)return;let s=o>e.size;n.issues.push({origin:lv(i),...s?{code:"too_big",maximum:e.size}:{code:"too_small",minimum:e.size},inclusive:!0,exact:!0,input:n.value,inst:t,continue:!e.abort})}}),k2=D("$ZodCheckMaxLength",(t,e)=>{var r;zt.init(t,e),(r=t._zod.def).when??(r.when=n=>{let i=n.value;return!wl(i)&&i.length!==void 0}),t._zod.onattach.push(n=>{let i=n._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum<i&&(n._zod.bag.maximum=e.maximum)}),t._zod.check=n=>{let i=n.value;if(i.length<=e.maximum)return;let s=uv(i);n.issues.push({origin:s,code:"too_big",maximum:e.maximum,inclusive:!0,input:i,inst:t,continue:!e.abort})}}),M2=D("$ZodCheckMinLength",(t,e)=>{var r;zt.init(t,e),(r=t._zod.def).when??(r.when=n=>{let i=n.value;return!wl(i)&&i.length!==void 0}),t._zod.onattach.push(n=>{let i=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>i&&(n._zod.bag.minimum=e.minimum)}),t._zod.check=n=>{let i=n.value;if(i.length>=e.minimum)return;let s=uv(i);n.issues.push({origin:s,code:"too_small",minimum:e.minimum,inclusive:!0,input:i,inst:t,continue:!e.abort})}}),$2=D("$ZodCheckLengthEquals",(t,e)=>{var r;zt.init(t,e),(r=t._zod.def).when??(r.when=n=>{let i=n.value;return!wl(i)&&i.length!==void 0}),t._zod.onattach.push(n=>{let i=n._zod.bag;i.minimum=e.length,i.maximum=e.length,i.length=e.length}),t._zod.check=n=>{let i=n.value,o=i.length;if(o===e.length)return;let s=uv(i),a=o>e.length;n.issues.push({origin:s,...a?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:n.value,inst:t,continue:!e.abort})}}),Pm=D("$ZodCheckStringFormat",(t,e)=>{var r,n;zt.init(t,e),t._zod.onattach.push(i=>{let o=i._zod.bag;o.format=e.format,e.pattern&&(o.patterns??(o.patterns=new Set),o.patterns.add(e.pattern))}),e.pattern?(r=t._zod).check??(r.check=i=>{e.pattern.lastIndex=0,!e.pattern.test(i.value)&&i.issues.push({origin:"string",code:"invalid_format",format:e.format,input:i.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})}),D2=D("$ZodCheckRegex",(t,e)=>{Pm.init(t,e),t._zod.check=r=>{e.pattern.lastIndex=0,!e.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:e.pattern.toString(),inst:t,continue:!e.abort})}}),L2=D("$ZodCheckLowerCase",(t,e)=>{e.pattern??(e.pattern=A2),Pm.init(t,e)}),U2=D("$ZodCheckUpperCase",(t,e)=>{e.pattern??(e.pattern=x2),Pm.init(t,e)}),F2=D("$ZodCheckIncludes",(t,e)=>{zt.init(t,e);let r=no(e.includes),n=new RegExp(typeof e.position=="number"?`^.{${e.position}}${r}`:r);e.pattern=n,t._zod.onattach.push(i=>{let o=i._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),t._zod.check=i=>{i.value.includes(e.includes,e.position)||i.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:i.value,inst:t,continue:!e.abort})}}),z2=D("$ZodCheckStartsWith",(t,e)=>{zt.init(t,e);let r=new RegExp(`^${no(e.prefix)}.*`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let i=n._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),t._zod.check=n=>{n.value.startsWith(e.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:n.value,inst:t,continue:!e.abort})}}),j2=D("$ZodCheckEndsWith",(t,e)=>{zt.init(t,e);let r=new RegExp(`.*${no(e.suffix)}$`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let i=n._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),t._zod.check=n=>{n.value.endsWith(e.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:n.value,inst:t,continue:!e.abort})}});function Zpe(t,e,r){t.issues.length&&e.issues.push(...ni(r,t.issues))}var B2=D("$ZodCheckProperty",(t,e)=>{zt.init(t,e),t._zod.check=r=>{let n=e.schema._zod.run({value:r.value[e.property],issues:[]},{});if(n instanceof Promise)return n.then(i=>Zpe(i,r,e.property));Zpe(n,r,e.property)}}),q2=D("$ZodCheckMimeType",(t,e)=>{zt.init(t,e);let r=new Set(e.mime);t._zod.onattach.push(n=>{n._zod.bag.mime=e.mime}),t._zod.check=n=>{r.has(n.value.type)||n.issues.push({code:"invalid_value",values:e.mime,input:n.value.type,inst:t,continue:!e.abort})}}),V2=D("$ZodCheckOverwrite",(t,e)=>{zt.init(t,e),t._zod.check=r=>{r.value=e.tx(r.value)}});var Sv=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(`
190
190
  `).filter(s=>s),i=Math.min(...n.map(s=>s.length-s.trimStart().length)),o=n.map(s=>s.slice(i)).map(s=>" ".repeat(this.indent*2)+s);for(let s of o)this.content.push(s)}compile(){let e=Function,r=this?.args,i=[...(this?.content??[""]).map(o=>` ${o}`)];return new e(...r,i.join(`
191
191
  `))}};var G2={major:4,minor:4,patch:3};var ze=D("$ZodType",(t,e)=>{var r;t??(t={}),t._zod.def=e,t._zod.bag=t._zod.bag||{},t._zod.version=G2;let n=[...t._zod.def.checks??[]];t._zod.traits.has("$ZodCheck")&&n.unshift(t);for(let i of n)for(let o of i._zod.onattach)o(t);if(n.length===0)(r=t._zod).deferred??(r.deferred=[]),t._zod.deferred?.push(()=>{t._zod.run=t._zod.parse});else{let i=(s,a,c)=>{let l=Rl(s),u;for(let d of a){if(d._zod.def.when){if(KB(s)||!d._zod.def.when(s))continue}else if(l)continue;let f=s.issues.length,p=d._zod.check(s);if(p instanceof Promise&&c?.async===!1)throw new Bo;if(u||p instanceof Promise)u=(u??Promise.resolve()).then(async()=>{await p,s.issues.length!==f&&(l||(l=Rl(s,f)))});else{if(s.issues.length===f)continue;l||(l=Rl(s,f))}}return u?u.then(()=>s):s},o=(s,a,c)=>{if(Rl(s))return s.aborted=!0,s;let l=i(a,n,c);if(l instanceof Promise){if(c.async===!1)throw new Bo;return l.then(u=>t._zod.parse(u,c))}return t._zod.parse(l,c)};t._zod.run=(s,a)=>{if(a.skipChecks)return t._zod.parse(s,a);if(a.direction==="backward"){let l=t._zod.parse({value:s.value,issues:[]},{...a,skipChecks:!0});return l instanceof Promise?l.then(u=>o(u,s,a)):o(l,s,a)}let c=t._zod.parse(s,a);if(c instanceof Promise){if(a.async===!1)throw new Bo;return c.then(l=>i(l,n,a))}return i(c,n,a)}}et(t,"~standard",()=>({validate:i=>{try{let o=Cm(t,i);return o.success?{value:o.data}:{issues:o.error?.issues}}catch{return gv(t,i).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),qd=D("$ZodString",(t,e)=>{ze.init(t,e),t._zod.pattern=[...t?._zod.bag?.patterns??[]].pop()??S2(t._zod.bag),t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:t}),r}}),It=D("$ZodStringFormat",(t,e)=>{Pm.init(t,e),qd.init(t,e)}),W2=D("$ZodGUID",(t,e)=>{e.pattern??(e.pattern=o2),It.init(t,e)}),Y2=D("$ZodUUID",(t,e)=>{if(e.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[e.version];if(n===void 0)throw new Error(`Invalid UUID version: "${e.version}"`);e.pattern??(e.pattern=Bd(n))}else e.pattern??(e.pattern=Bd());It.init(t,e)}),K2=D("$ZodEmail",(t,e)=>{e.pattern??(e.pattern=s2),It.init(t,e)}),Z2=D("$ZodURL",(t,e)=>{It.init(t,e),t._zod.check=r=>{try{let n=r.value.trim();if(!e.normalize&&e.protocol?.source===h2.source&&!/^https?:\/\//i.test(n)){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:t,continue:!e.abort});return}let i=new URL(n);e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(i.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:r.value,inst:t,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(i.protocol.endsWith(":")?i.protocol.slice(0,-1):i.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:r.value,inst:t,continue:!e.abort})),e.normalize?r.value=i.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:t,continue:!e.abort})}}}),J2=D("$ZodEmoji",(t,e)=>{e.pattern??(e.pattern=a2()),It.init(t,e)}),X2=D("$ZodNanoID",(t,e)=>{e.pattern??(e.pattern=n2),It.init(t,e)}),Q2=D("$ZodCUID",(t,e)=>{e.pattern??(e.pattern=XB),It.init(t,e)}),eq=D("$ZodCUID2",(t,e)=>{e.pattern??(e.pattern=QB),It.init(t,e)}),tq=D("$ZodULID",(t,e)=>{e.pattern??(e.pattern=e2),It.init(t,e)}),rq=D("$ZodXID",(t,e)=>{e.pattern??(e.pattern=t2),It.init(t,e)}),nq=D("$ZodKSUID",(t,e)=>{e.pattern??(e.pattern=r2),It.init(t,e)}),iq=D("$ZodISODateTime",(t,e)=>{e.pattern??(e.pattern=y2(e)),It.init(t,e)}),oq=D("$ZodISODate",(t,e)=>{e.pattern??(e.pattern=g2),It.init(t,e)}),sq=D("$ZodISOTime",(t,e)=>{e.pattern??(e.pattern=_2(e)),It.init(t,e)}),aq=D("$ZodISODuration",(t,e)=>{e.pattern??(e.pattern=i2),It.init(t,e)}),cq=D("$ZodIPv4",(t,e)=>{e.pattern??(e.pattern=c2),It.init(t,e),t._zod.bag.format="ipv4"}),lq=D("$ZodIPv6",(t,e)=>{e.pattern??(e.pattern=l2),It.init(t,e),t._zod.bag.format="ipv6",t._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:t,continue:!e.abort})}}}),uq=D("$ZodMAC",(t,e)=>{e.pattern??(e.pattern=u2(e.delimiter)),It.init(t,e),t._zod.bag.format="mac"}),dq=D("$ZodCIDRv4",(t,e)=>{e.pattern??(e.pattern=d2),It.init(t,e)}),fq=D("$ZodCIDRv6",(t,e)=>{e.pattern??(e.pattern=f2),It.init(t,e),t._zod.check=r=>{let n=r.value.split("/");try{if(n.length!==2)throw new Error;let[i,o]=n;if(!o)throw new Error;let s=Number(o);if(`${s}`!==o)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${i}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:t,continue:!e.abort})}}});function pq(t){if(t==="")return!0;if(/\s/.test(t)||t.length%4!==0)return!1;try{return atob(t),!0}catch{return!1}}var hq=D("$ZodBase64",(t,e)=>{e.pattern??(e.pattern=p2),It.init(t,e),t._zod.bag.contentEncoding="base64",t._zod.check=r=>{pq(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:t,continue:!e.abort})}});function phe(t){if(!FI.test(t))return!1;let e=t.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=e.padEnd(Math.ceil(e.length/4)*4,"=");return pq(r)}var mq=D("$ZodBase64URL",(t,e)=>{e.pattern??(e.pattern=FI),It.init(t,e),t._zod.bag.contentEncoding="base64url",t._zod.check=r=>{phe(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:t,continue:!e.abort})}}),gq=D("$ZodE164",(t,e)=>{e.pattern??(e.pattern=m2),It.init(t,e)});function hhe(t,e=null){try{let r=t.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let i=JSON.parse(atob(n));return!("typ"in i&&i?.typ!=="JWT"||!i.alg||e&&(!("alg"in i)||i.alg!==e))}catch{return!1}}var _q=D("$ZodJWT",(t,e)=>{It.init(t,e),t._zod.check=r=>{hhe(r.value,e.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:t,continue:!e.abort})}}),yq=D("$ZodCustomStringFormat",(t,e)=>{It.init(t,e),t._zod.check=r=>{e.fn(r.value)||r.issues.push({code:"invalid_format",format:e.format,input:r.value,inst:t,continue:!e.abort})}}),WI=D("$ZodNumber",(t,e)=>{ze.init(t,e),t._zod.pattern=t._zod.bag.pattern??zI,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=Number(r.value)}catch{}let i=r.value;if(typeof i=="number"&&!Number.isNaN(i)&&Number.isFinite(i))return r;let o=typeof i=="number"?Number.isNaN(i)?"NaN":Number.isFinite(i)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:i,inst:t,...o?{received:o}:{}}),r}}),Sq=D("$ZodNumberFormat",(t,e)=>{C2.init(t,e),WI.init(t,e)}),Ev=D("$ZodBoolean",(t,e)=>{ze.init(t,e),t._zod.pattern=b2,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=!!r.value}catch{}let i=r.value;return typeof i=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:i,inst:t}),r}}),YI=D("$ZodBigInt",(t,e)=>{ze.init(t,e),t._zod.pattern=E2,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=BigInt(r.value)}catch{}return typeof r.value=="bigint"||r.issues.push({expected:"bigint",code:"invalid_type",input:r.value,inst:t}),r}}),Eq=D("$ZodBigIntFormat",(t,e)=>{I2.init(t,e),YI.init(t,e)}),vq=D("$ZodSymbol",(t,e)=>{ze.init(t,e),t._zod.parse=(r,n)=>{let i=r.value;return typeof i=="symbol"||r.issues.push({expected:"symbol",code:"invalid_type",input:i,inst:t}),r}}),bq=D("$ZodUndefined",(t,e)=>{ze.init(t,e),t._zod.pattern=w2,t._zod.values=new Set([void 0]),t._zod.parse=(r,n)=>{let i=r.value;return typeof i>"u"||r.issues.push({expected:"undefined",code:"invalid_type",input:i,inst:t}),r}}),Tq=D("$ZodNull",(t,e)=>{ze.init(t,e),t._zod.pattern=T2,t._zod.values=new Set([null]),t._zod.parse=(r,n)=>{let i=r.value;return i===null||r.issues.push({expected:"null",code:"invalid_type",input:i,inst:t}),r}}),wq=D("$ZodAny",(t,e)=>{ze.init(t,e),t._zod.parse=r=>r}),Aq=D("$ZodUnknown",(t,e)=>{ze.init(t,e),t._zod.parse=r=>r}),xq=D("$ZodNever",(t,e)=>{ze.init(t,e),t._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:t}),r)}),Rq=D("$ZodVoid",(t,e)=>{ze.init(t,e),t._zod.parse=(r,n)=>{let i=r.value;return typeof i>"u"||r.issues.push({expected:"void",code:"invalid_type",input:i,inst:t}),r}}),Cq=D("$ZodDate",(t,e)=>{ze.init(t,e),t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=new Date(r.value)}catch{}let i=r.value,o=i instanceof Date;return o&&!Number.isNaN(i.getTime())||r.issues.push({expected:"date",code:"invalid_type",input:i,...o?{received:"Invalid Date"}:{},inst:t}),r}});function Qpe(t,e,r){t.issues.length&&e.issues.push(...ni(r,t.issues)),e.value[r]=t.value}var Iq=D("$ZodArray",(t,e)=>{ze.init(t,e),t._zod.parse=(r,n)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:t}),r;r.value=Array(i.length);let o=[];for(let s=0;s<i.length;s++){let a=i[s],c=e.element._zod.run({value:a,issues:[]},n);c instanceof Promise?o.push(c.then(l=>Qpe(l,r,s))):Qpe(c,r,s)}return o.length?Promise.all(o).then(()=>r):r}});function HI(t,e,r,n,i,o){let s=r in n;if(t.issues.length){if(i&&o&&!s)return;e.issues.push(...ni(r,t.issues))}if(!s&&!i){t.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}t.value===void 0?s&&(e.value[r]=void 0):e.value[r]=t.value}function mhe(t){let e=Object.keys(t.shape);for(let n of e)if(!t.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=HB(t.shape);return{...t,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(r)}}function ghe(t,e,r,n,i,o){let s=[],a=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin==="optional",d=c.optout==="optional";for(let f in e){if(f==="__proto__"||a.has(f))continue;if(l==="never"){s.push(f);continue}let p=c.run({value:e[f],issues:[]},n);p instanceof Promise?t.push(p.then(h=>HI(h,r,f,e,u,d))):HI(p,r,f,e,u,d)}return s.length&&r.issues.push({code:"unrecognized_keys",keys:s,input:e,inst:o}),t.length?Promise.all(t).then(()=>r):r}var _he=D("$ZodObject",(t,e)=>{if(ze.init(t,e),!Object.getOwnPropertyDescriptor(e,"shape")?.get){let a=e.shape;Object.defineProperty(e,"shape",{get:()=>{let c={...a};return Object.defineProperty(e,"shape",{value:c}),c}})}let n=Tm(()=>mhe(e));et(t._zod,"propValues",()=>{let a=e.shape,c={};for(let l in a){let u=a[l]._zod;if(u.values){c[l]??(c[l]=new Set);for(let d of u.values)c[l].add(d)}}return c});let i=jd,o=e.catchall,s;t._zod.parse=(a,c)=>{s??(s=n.value);let l=a.value;if(!i(l))return a.issues.push({expected:"object",code:"invalid_type",input:l,inst:t}),a;a.value={};let u=[],d=s.shape;for(let f of s.keys){let p=d[f],h=p._zod.optin==="optional",m=p._zod.optout==="optional",g=p._zod.run({value:l[f],issues:[]},c);g instanceof Promise?u.push(g.then(_=>HI(_,a,f,l,h,m))):HI(g,a,f,l,h,m)}return o?ghe(u,l,a,c,n.value,t):u.length?Promise.all(u).then(()=>a):a}}),Pq=D("$ZodObjectJIT",(t,e)=>{_he.init(t,e);let r=t._zod.parse,n=Tm(()=>mhe(e)),i=f=>{let p=new Sv(["shape","payload","ctx"]),h=n.value,m=w=>{let y=II(w);return`shape[${y}]._zod.run({ value: input[${y}], issues: [] }, ctx)`};p.write("const input = payload.value;");let g=Object.create(null),_=0;for(let w of h.keys)g[w]=`key_${_++}`;p.write("const newResult = {};");for(let w of h.keys){let y=g[w],T=II(w),A=f[w],R=A?._zod?.optin==="optional",P=A?._zod?.optout==="optional";p.write(`const ${y} = ${m(w)};`),R&&P?p.write(`
@@ -365,7 +365,7 @@ If you are unsure which path applies, take Path B \u2014 but if milestone 1 is c
365
365
 
366
366
  ${xnt}
367
367
 
368
- ${Ant}`,Ont="./.netlify-cache",Nnt=({cwd:t=yN.cwd()}={})=>{let e=yN.env.NVM_BIN?`${yN.env.NVM_BIN}/node`:"node",r;try{let n=zEe.resolve("@netlify/ts-cli/package.json"),i=zb.dirname(n),o=zEe("@netlify/ts-cli/package.json");r=zb.join(i,o.bin)}catch{r=jo(t,"ts-cli")}return{nodeCmd:e,tsCliPath:r}},knt=t=>{let e;try{if(!t)throw new Error("empty response");e=JSON.parse(t)}catch(r){return _f.error("Failed to parse template list from ts-cli",{raw:t,error:r.message}),K.inc("context.degraded",1,{component:"templates"}),[]}return e.filter(r=>r.type==="example").map(r=>{let{type:n,...i}=r;return i})},Mnt=({templates:t,nodeCmd:e,scaffoldScriptPath:r,budgetConstrained:n=!1,askUserClarity:i=!1})=>{let o=JSON.stringify(t.map(({id:l,name:u,description:d})=>({id:l,name:u,description:d})),null,2),s=t.length>0?`## Available Templates
368
+ ${Ant}`,Ont="./.netlify-cache",Nnt=({cwd:t=yN.cwd()}={})=>{let e=yN.env.NVM_BIN?`${yN.env.NVM_BIN}/node`:"node",r;try{let n=zEe.resolve("@netlify/ts-cli/package.json"),i=zb.dirname(n),o=zEe("@netlify/ts-cli/package.json");r=zb.join(i,o.bin)}catch{r=jo(t,"ts-cli")}return{nodeCmd:e,tsCliPath:r}},knt=t=>{let e;try{if(!t)throw new Error("empty response");e=JSON.parse(t)}catch(r){return _f.error("Failed to parse template list from ts-cli",{raw:t,error:r.message}),Y.inc("context.degraded",1,{component:"templates"}),[]}return e.filter(r=>r.type==="example").map(r=>{let{type:n,...i}=r;return i})},Mnt=({templates:t,nodeCmd:e,scaffoldScriptPath:r,budgetConstrained:n=!1,askUserClarity:i=!1})=>{let o=JSON.stringify(t.map(({id:l,name:u,description:d})=>({id:l,name:u,description:d})),null,2),s=t.length>0?`## Available Templates
369
369
 
370
370
  Start with one of the following templates by using the Bash command below, unless there's a strong reason to start from scratch based on the users prompt.
371
371
 
@@ -381,14 +381,14 @@ NETLIFY_BUILD_BASE="\${NETLIFY_BUILD_BASE:-${Ont}}" ${e} ${r} <template-id> [--p
381
381
 
382
382
  Replace \`<template-id>\` with the matching template \`id\`. Include \`--package-manager\` only if the user specified one. The templates can include relevant agent skills. The \`NETLIFY_BUILD_BASE=\u2026\` prefix lets the scaffold use a local template mirror if the platform set one \u2014 leave it as-is. Follow the instructions printed by the scaffold command.`:"",a="You are creating a new Netlify project to fulfill the user's request. The project directory is currently empty.",c=[a,s,Int];return n?c=[a,Pnt,s]:i&&(c=[a,Rnt,s]),c.filter(Boolean).join(`
383
383
 
384
- `)},$nt=t=>{try{return JSON.parse(_nt(zb.join(t,".netlify","scaffold-result.json"),"utf8"))}catch{return}},jEe=async t=>{let e=$nt(t);await Ut(pt(),"create-scaffold-telemetry",r=>{r?.setAttributes({"create.template":e?.template??"none","create.packageManager":e?.packageManager??"none"})})},BEe=async({config:t,cwd:e=yN.cwd()})=>await Ut(pt(),"create-stage",async r=>{let n=performance.now();r?.setAttributes({"create.runner":t.runner,"create.id":t.id,"create.sessionId":t.sessionId}),await UEe(e,[".netlify",".git","node_modules"]),_f.info("Cleaned cwd folder");let{nodeCmd:i,tsCliPath:o}=Nnt({cwd:e}),s=[];if(o){let f=[o,"--list-addons-json"];_f.log(`Running ${i} ${f.join(" ")}`);let{stdout:p}=await Ft(i,f);s=knt(p),_f.info("Retrieved add-ons")}else _f.warn("ts-cli binary not resolved; create-mode prompt will omit template section"),K.inc("context.degraded",1,{component:"templates"});let a=E3(t),c=a==="budget_constrained",l=a==="ask_first";l&&_f.log("Low budget create run - Instructing the agent to ask for clarity if necessary",{accountType:t.accountType,sessionCreditLimit:t.sessionCreditLimit}),K.inc("create.low_budget_limit_ask",1,{ask_first:l}),c&&_f.log("Budget-constrained create run \u2014 using plan + first-milestone instructions",{accountType:t.accountType,sessionCreditLimit:t.sessionCreditLimit}),K.inc("create.budget_constrained",1,{constrained:c});let u=Mnt({templates:s,nodeCmd:i,scaffoldScriptPath:Snt,budgetConstrained:c,askUserClarity:l}),d=performance.now()-n;return r?.setAttributes({"create.duration.ms":d,"create.status":"success","create.budget_constrained":c,"create.ask_user_clarity":l}),{additionalContext:u}});var fc={Task:{name:"Task",category:H.Task},Agent:{name:"Task",category:H.Task},SendMessage:{name:"Message agent",category:H.Task},TaskOutput:{name:"Get task output",category:H.Task},TaskStop:{name:"Stop task",category:H.Task},TaskCreate:{name:"Update task list",category:H.Todo},TaskUpdate:{name:"Update task list",category:H.Todo},TaskList:{name:"Read task list",category:H.Todo},TaskGet:{name:"Read task list",category:H.Todo},ToolSearch:{name:"Load tools",category:H.Explore},Skill:{name:"Use skill",category:H.Skill},EnterPlanMode:{name:"Start planning",category:H.Plan},ListMcpResources:{name:"List resources",category:H.Explore},ReadMcpResource:{name:"Read resource",category:H.Explore},Bash:{name:"Run command",category:H.RunCommand},Glob:{name:"Find files",category:H.Explore},Grep:{name:"Search files",category:H.Explore},LS:{name:"List directory",category:H.Explore},ExitPlanMode:{name:"Exit planning",category:H.Plan},Read:{name:"Read file",category:H.FileRead},Edit:{name:"Edit file",category:H.FileWrite},MultiEdit:{name:"Edit multiple files",category:H.FileWrite},Write:{name:"Edit file",category:H.FileWrite},NotebookEdit:{name:"Edit notebook",category:H.Notebook},WebFetch:{name:"Fetch web",category:H.Web},TodoWrite:{name:"Update task list",category:H.Todo},WebSearch:{name:"Search web",category:H.Web},BashOutput:{name:"Get command output",category:H.RunCommand},KillBash:{name:"Stop command",category:H.RunCommand}},jb=t=>{if(fc[t])return fc[t].name;let e=t.match(/^mcp__(.+?)__(.+)$/);return e?`${e[2].replace(/_/g," ")} (${e[1]})`:t},w3=t=>t==="Task"||t==="Agent",qEe=t=>{let[e=""]=t.split(`
385
- `,1);return/^(Async agent launched successfully|Agent launched in background)/.test(e)||/\(internal ID:?\s*[\w./-]+\)/i.test(e)},VEe=new Set(["SendMessage","ToolSearch","TaskList","TaskGet","EnterPlanMode","TaskStop"]);var ln=ie("runner_claude"),Bb="Claude Code",HEe="claude-opus-5",A3="claude-sonnet-5",Lnt={[iz]:"claude-sonnet-5"};async function Unt({aiGateway:t,config:e,model:r}){let n=r;if(t)if(e.modelVersionOverrides?.claude){let i=e.modelVersionOverrides?.claude?.[e.accountType];if(i){if(!await t.isModelAvailableForProvider("anthropic",i))throw new Error(`Model override '${i}' is not available for anthropic provider`);n=i}}else if(r)await t.isModelAvailableForProvider("anthropic",r)||(ln.log(`Model '${r}' is not available for anthropic provider, proceeding without model specification`),K.inc("model.unavailable",1,{provider:"anthropic"}),n=void 0);else{let i=Lnt[e.accountType],o=i||HEe;!!o&&await t.isModelAvailableForProvider("anthropic",o)?(ln.log(`Using ${i?"account override":"default"} model: ${o}`),n=o):o&&ln.log(`Model ${o} is not available, proceeding without model specification`)}return n}function Fnt({aiGateway:t}){if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");return{...Cg.env,ANTHROPIC_API_KEY:e,ANTHROPIC_BASE_URL:r}}if(!Cg.env.ANTHROPIC_API_KEY)throw new Error("ANTHROPIC_API_KEY is not provided");return{...Cg.env}}async function znt(){let t=qb.join(Cg.cwd(),"AGENTS.md");try{await Rg.access(t)}catch{return}let e=qb.join(Cg.cwd(),"CLAUDE.local.md"),r="@AGENTS.md";try{if((await Rg.readFile(e,"utf-8")).includes(r))return;await Rg.appendFile(e,`
384
+ `)},$nt=t=>{try{return JSON.parse(_nt(zb.join(t,".netlify","scaffold-result.json"),"utf8"))}catch{return}},jEe=async t=>{let e=$nt(t);await Ut(pt(),"create-scaffold-telemetry",r=>{r?.setAttributes({"create.template":e?.template??"none","create.packageManager":e?.packageManager??"none"})})},BEe=async({config:t,cwd:e=yN.cwd()})=>await Ut(pt(),"create-stage",async r=>{let n=performance.now();r?.setAttributes({"create.runner":t.runner,"create.id":t.id,"create.sessionId":t.sessionId}),await UEe(e,[".netlify",".git","node_modules"]),_f.info("Cleaned cwd folder");let{nodeCmd:i,tsCliPath:o}=Nnt({cwd:e}),s=[];if(o){let f=[o,"--list-addons-json"];_f.log(`Running ${i} ${f.join(" ")}`);let{stdout:p}=await Ft(i,f);s=knt(p),_f.info("Retrieved add-ons")}else _f.warn("ts-cli binary not resolved; create-mode prompt will omit template section"),Y.inc("context.degraded",1,{component:"templates"});let a=E3(t),c=a==="budget_constrained",l=a==="ask_first";l&&_f.log("Low budget create run - Instructing the agent to ask for clarity if necessary",{accountType:t.accountType,sessionCreditLimit:t.sessionCreditLimit}),Y.inc("create.low_budget_limit_ask",1,{ask_first:l}),c&&_f.log("Budget-constrained create run \u2014 using plan + first-milestone instructions",{accountType:t.accountType,sessionCreditLimit:t.sessionCreditLimit}),Y.inc("create.budget_constrained",1,{constrained:c});let u=Mnt({templates:s,nodeCmd:i,scaffoldScriptPath:Snt,budgetConstrained:c,askUserClarity:l}),d=performance.now()-n;return r?.setAttributes({"create.duration.ms":d,"create.status":"success","create.budget_constrained":c,"create.ask_user_clarity":l}),{additionalContext:u}});var fc={Task:{name:"Task",category:H.Task},Agent:{name:"Task",category:H.Task},SendMessage:{name:"Message agent",category:H.Task},TaskOutput:{name:"Get task output",category:H.Task},TaskStop:{name:"Stop task",category:H.Task},TaskCreate:{name:"Update task list",category:H.Todo},TaskUpdate:{name:"Update task list",category:H.Todo},TaskList:{name:"Read task list",category:H.Todo},TaskGet:{name:"Read task list",category:H.Todo},ToolSearch:{name:"Load tools",category:H.Explore},Skill:{name:"Use skill",category:H.Skill},EnterPlanMode:{name:"Start planning",category:H.Plan},ListMcpResources:{name:"List resources",category:H.Explore},ReadMcpResource:{name:"Read resource",category:H.Explore},Bash:{name:"Run command",category:H.RunCommand},Glob:{name:"Find files",category:H.Explore},Grep:{name:"Search files",category:H.Explore},LS:{name:"List directory",category:H.Explore},ExitPlanMode:{name:"Exit planning",category:H.Plan},Read:{name:"Read file",category:H.FileRead},Edit:{name:"Edit file",category:H.FileWrite},MultiEdit:{name:"Edit multiple files",category:H.FileWrite},Write:{name:"Edit file",category:H.FileWrite},NotebookEdit:{name:"Edit notebook",category:H.Notebook},WebFetch:{name:"Fetch web",category:H.Web},TodoWrite:{name:"Update task list",category:H.Todo},WebSearch:{name:"Search web",category:H.Web},BashOutput:{name:"Get command output",category:H.RunCommand},KillBash:{name:"Stop command",category:H.RunCommand}},jb=t=>{if(fc[t])return fc[t].name;let e=t.match(/^mcp__(.+?)__(.+)$/);return e?`${e[2].replace(/_/g," ")} (${e[1]})`:t},w3=t=>t==="Task"||t==="Agent",qEe=t=>{let[e=""]=t.split(`
385
+ `,1);return/^(Async agent launched successfully|Agent launched in background)/.test(e)||/\(internal ID:?\s*[\w./-]+\)/i.test(e)},VEe=new Set(["SendMessage","ToolSearch","TaskList","TaskGet","EnterPlanMode","TaskStop"]);var ln=ie("runner_claude"),Bb="Claude Code",HEe="claude-opus-5",A3="claude-sonnet-5",Lnt={[iz]:"claude-sonnet-5"};async function Unt({aiGateway:t,config:e,model:r}){let n=r;if(t)if(e.modelVersionOverrides?.claude){let i=e.modelVersionOverrides?.claude?.[e.accountType];if(i){if(!await t.isModelAvailableForProvider("anthropic",i))throw new Error(`Model override '${i}' is not available for anthropic provider`);n=i}}else if(r)await t.isModelAvailableForProvider("anthropic",r)||(ln.log(`Model '${r}' is not available for anthropic provider, proceeding without model specification`),Y.inc("model.unavailable",1,{provider:"anthropic"}),n=void 0);else{let i=Lnt[e.accountType],o=i||HEe;!!o&&await t.isModelAvailableForProvider("anthropic",o)?(ln.log(`Using ${i?"account override":"default"} model: ${o}`),n=o):o&&ln.log(`Model ${o} is not available, proceeding without model specification`)}return n}function Fnt({aiGateway:t}){if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");return{...Cg.env,ANTHROPIC_API_KEY:e,ANTHROPIC_BASE_URL:r}}if(!Cg.env.ANTHROPIC_API_KEY)throw new Error("ANTHROPIC_API_KEY is not provided");return{...Cg.env}}async function znt(){let t=qb.join(Cg.cwd(),"AGENTS.md");try{await Rg.access(t)}catch{return}let e=qb.join(Cg.cwd(),"CLAUDE.local.md"),r="@AGENTS.md";try{if((await Rg.readFile(e,"utf-8")).includes(r))return;await Rg.appendFile(e,`
386
386
  ${r}
387
387
  `)}catch{await Rg.writeFile(e,`${r}
388
388
  `)}ln.log("Added @AGENTS.md import to CLAUDE.local.md")}async function x3({config:t,persistSteps:e,aiGateway:r,continueSession:n,priorAgentSessionId:i,cwd:o=Cg.cwd(),cliPath:s="netlify",abortSignal:a,onSessionId:c,forceLowEffortForCreditWrapUp:l}){let u=t,{prompt:d}=u,{model:f}=t,p="";await znt();let h=Fnt({aiGateway:r}),m=await Unt({config:t,aiGateway:r,model:f});l&&m?.includes("fable")&&(!r||await r.isModelAvailableForProvider("anthropic",A3))&&(ln.log(`Credit wrap-up: downgrading model ${m} to ${A3}`),m=A3);let g=[],_=[],v={},w=new Set,y=[],T=ft=>ft?.match(/task\s+#([\w-]+)\s+created/i)?.[1],A=ft=>{if(typeof ft=="string")return ft;if(Array.isArray(ft))return ft.filter(rt=>rt?.type==="text"&&typeof rt.text=="string").map(rt=>rt.text).join(`
389
389
  `)||void 0},R=(ft,we)=>{let rt=ft.input||{};if(ft.name==="TaskCreate"){y.push({id:T(we),subject:typeof rt.subject=="string"?rt.subject:"",activeForm:typeof rt.activeForm=="string"?rt.activeForm:void 0,status:"pending"});return}let Ie=typeof rt.taskId=="string"?rt.taskId:void 0,be=Ie===void 0?void 0:y.find(fn=>fn.id===Ie);if(!be&&typeof rt.subject=="string"){let fn=y.filter(aa=>aa.subject===rt.subject);fn.length===1&&(be=fn[0])}if(rt.status==="deleted"){be&&y.splice(y.indexOf(be),1);return}if(!be){if(Ie===void 0||typeof rt.subject!="string"&&typeof rt.activeForm!="string")return;be={id:Ie,subject:"",status:"pending"},y.push(be)}typeof rt.status=="string"&&(be.status=rt.status),typeof rt.subject=="string"&&(be.subject=rt.subject),typeof rt.activeForm=="string"&&(be.activeForm=rt.activeForm)},P=()=>y.map(ft=>({name:ft.status==="in_progress"&&ft.activeForm||ft.subject,value:ft.status})),k=0,L=0,S,te,$,b,x,M="",Z=mf(t),G="mode"in t&&t.mode==="create"&&t.accountType===iz,me="mode"in t&&t.mode==="ask",Ne=Hl({creditWrapUpTurn:l}),ve=Ye().creditWrapUpEnabled&&gf(t,Z),Ge=t.effort===ei,$e=G&&!ve&&!Ge,He=["ExitPlanMode","EnterPlanMode","AskUserQuestion"];$e&&He.push("TodoWrite","TaskCreate","TaskUpdate","TaskList","TaskGet"),me&&(He.push("Edit","Write","NotebookEdit","EnterWorktree","Bash(git push:*)","Bash(netlify deploy:*)"),Em(t)||He.push(...CI(s).map(ft=>`Bash(${ft}:*)`)));let ke=ym("claude",t.effort);t.effort&&!ke&&ln.log(`Effort '${t.effort}' is not available on ${Bb}; using its default`);let he=l||$e?"low":Ge?ei:ke??"high",gt=jo(o,"claude");if(!gt)throw new Error("Claude CLI binary not found");let ne=Gl(t,{creditWrapUpTurn:l}),Fe=Ne||ne?await PEe({interactions:Ne,connections:ne}):void 0,V=["--permission-mode","bypassPermissions","--dangerously-skip-permissions","--output-format","stream-json","--verbose","--disallowed-tools",He.join(","),...Fe?.args??[],...he===ei?[]:["--effort",he],...m?["--model",m]:[],...n?i?["--resume",i]:["--continue"]:[],"-p"];ln.log(`Running ${gt} ${V.join(" ")}`);let C=Ft(gt,V,{all:!0,env:h,cwd:o,idleTimeout:$a,cancelSignal:a});C.stdin?.end(d);let N=ll(()=>{e?.({steps:g,duration:L})},250),U=(ft,we)=>{let{wrapMessage:rt,...Ie}=ft,be=L0({...Ie,id:k});be.message&&(be.message=be.message.replace(/\n?<system-reminder>.+?<\/system-reminder>\n?/gs,"").trim(),rt&&be.message&&(be.message=`\`\`\`
390
390
  ${be.message}
391
- \`\`\``)),k+=1,_.push(be),g.push(be),we||N.flush(),N(),we&&N.flush()},F=m||HEe,de=$e?`Using ${Bb} with ${F} and low effort because you are reaching your user limit`:`Using ${Bb} with ${F}`;t.answeredInteraction||U({title:de,category:H.Environment},!0);let oe=Dnt.createInterface({input:C.all});oe.on("error",ft=>{ln.error("Readline interface error",{error:ft.message,stack:ft.stack})});let Ce=!1,bt=!1;oe.on("line",ft=>{let we=null;try{we=JSON.parse(ft)}catch{ln.log("Could not parse line",ft)}if(we?.session_id&&we.session_id!==p&&(p=we.session_id,c?.(p)),we?.type==="system"&&we.subtype==="status"&&we.status==="compacting"?Ce||(U({category:H.Compaction,message:"Compacting context\u2026"}),Ce=!0):we?.type==="system"&&we.subtype==="compact_boundary"&&(Ce=!1,bt=!0),Array.isArray(we?.message?.content)){let rt=bt&&we.message?.role==="user";bt=!1,we.message.content.forEach(Ie=>{switch(Ie.type){case"text":{if(Ie.text){if(Ie.text.startsWith("Base directory for this skill:"))break;we.message?.role!=="user"&&(M=Ie.text);let be=H.AgentMessage;rt?be=H.Compaction:we.message?.role==="user"&&(be=H.SubagentPrompt),U({message:Ie.text,category:be,parentGroupId:we.parent_tool_use_id||void 0})}break}case"image":{typeof Ie.source=="object"&&Ie.source&&Ie.source.type==="base64"&&Ie.source.media_type?U({message:`![](data:${Ie.source.media_type};base64,${Ie.source.data})`,category:H.AgentMessage,parentGroupId:we.parent_tool_use_id||void 0}):ln.log(`Unsupported image type ${Ie.source?.type}`,Ie.source);break}case"tool_use":{if(Ie.name&&!fc[Ie.name]&&!w.has(Ie.name)&&(w.add(Ie.name),ln.log(`Unmapped tool in stream: ${Ie.name}`)),w3(Ie.name)){let fn=Ie.input?.description&&`\`${Ie.input.description}\``;U({title:[jb(Ie.name),fn].filter(Boolean).join(" "),category:fc[Ie.name]?.category,groupId:Ie.id,parentGroupId:we.parent_tool_use_id||void 0})}else Ie.name==="Bash"&&dc(Ie.input?.command)&&U({title:"Generating the site",category:H.SiteGeneration,groupId:Ie.id,parentGroupId:we.parent_tool_use_id||void 0});let be=Ie.id&&!x?Ag(Ie.name,Ie.input,$B):void 0;be&&"interaction"in be?(x=be.interaction,C.kill()):be&&(ln.warn("Ignoring malformed pause tool input",{toolUseId:Ie.id,tool:Ie.name,issues:be.issues}),K.inc(be.metric,1)),Ie.id&&(v[Ie.id]=Ie),N.flush();break}case"tool_result":{let be=Ie.tool_use_id?v[Ie.tool_use_id]:void 0;if(xg(be?.name,$B))break;let fn=w3(be?.name),aa=be?.name==="Bash"&&dc(be?.input?.command);if(be?.name==="Skill"&&be?.input?.skill){let Ir=Ps(be.input.skill?.toString());Ua(ln,Ir),U({title:`Use ${Ir}`,category:H.Skill,type:be.input.skill?.toString(),parentGroupId:we.parent_tool_use_id||void 0},!0);break}if(be?.name==="TodoWrite"){let{name:Ir,category:Yt}=fc.TodoWrite;U({title:Ir,category:Yt,parentGroupId:we.parent_tool_use_id||void 0,tasks:we.tool_use_result?.newTodos?.map(Re=>({name:Re.status==="in_progress"?Re.activeForm:Re.content,value:Re.status}))},!0);break}if(be?.name==="TaskCreate"||be?.name==="TaskUpdate"){Ie.is_error||R(be,A(Ie.content)),U({title:jb(be.name),category:H.Todo,parentGroupId:we.parent_tool_use_id||void 0,tasks:P()},!0);break}if(be?.name&&VEe.has(be.name)){let Ir=fc[be.name]?.category||H.Tool,Yt=Ir===H.Todo&&y.length>0;U({title:jb(be.name),category:Ir===H.Todo&&!Yt?H.Tool:Ir,parentGroupId:we.parent_tool_use_id||void 0,...Yt?{tasks:P()}:{}},!0);break}let yM=!!(be?.name&&fc[be.name]),ry;if(!fn&&!aa&&be){let Ir=be.input?.file_path&&qb.relative(o,be.input.file_path);Ir||(Ir=be.input?.pattern||be.input?.command);let Yt=Ir&&`\`${Ir}\``;ry=[jb(be.name||""),Yt].filter(Boolean).join(" ")}else!fn&&!aa&&!be&&(ry="Tool result");let SM=["Bash","Glob","Grep","LS","Read","Edit","Write","TaskOutput"].includes(be?.name||"")||!fn&&!aa&&!yM,tp=we.parent_tool_use_id||void 0;!tp&&(fn||aa)&&(tp=Ie.tool_use_id);let Nu,rp=fn&&we.tool_use_result?.content||Ie.content;if(typeof rp=="string")Nu=rp;else if(Array.isArray(rp)){let Ir=[];rp.forEach(Yt=>{Yt?.type==="text"&&typeof Yt.text=="string"?Ir.push(Yt.text):Yt?.type==="image"&&typeof Yt.source=="object"&&Yt.source?Yt.source.type==="base64"&&Yt.source.media_type?Ir.push(`![](data:${Yt.source.media_type};base64,${Yt.source.data})`):ln.log(`Unsupported image type ${Yt.source.type}`,Yt.source):ln.log(`Unsupported block type ${Yt?.type}`)}),Nu=Ir.join(`
391
+ \`\`\``)),k+=1,_.push(be),g.push(be),we||N.flush(),N(),we&&N.flush()},F=m||HEe,de=$e?`Using ${Bb} with ${F} and low effort because you are reaching your user limit`:`Using ${Bb} with ${F}`;t.answeredInteraction||U({title:de,category:H.Environment},!0);let oe=Dnt.createInterface({input:C.all});oe.on("error",ft=>{ln.error("Readline interface error",{error:ft.message,stack:ft.stack})});let Ce=!1,bt=!1;oe.on("line",ft=>{let we=null;try{we=JSON.parse(ft)}catch{ln.log("Could not parse line",ft)}if(we?.session_id&&we.session_id!==p&&(p=we.session_id,c?.(p)),we?.type==="system"&&we.subtype==="status"&&we.status==="compacting"?Ce||(U({category:H.Compaction,message:"Compacting context\u2026"}),Ce=!0):we?.type==="system"&&we.subtype==="compact_boundary"&&(Ce=!1,bt=!0),Array.isArray(we?.message?.content)){let rt=bt&&we.message?.role==="user";bt=!1,we.message.content.forEach(Ie=>{switch(Ie.type){case"text":{if(Ie.text){if(Ie.text.startsWith("Base directory for this skill:"))break;we.message?.role!=="user"&&(M=Ie.text);let be=H.AgentMessage;rt?be=H.Compaction:we.message?.role==="user"&&(be=H.SubagentPrompt),U({message:Ie.text,category:be,parentGroupId:we.parent_tool_use_id||void 0})}break}case"image":{typeof Ie.source=="object"&&Ie.source&&Ie.source.type==="base64"&&Ie.source.media_type?U({message:`![](data:${Ie.source.media_type};base64,${Ie.source.data})`,category:H.AgentMessage,parentGroupId:we.parent_tool_use_id||void 0}):ln.log(`Unsupported image type ${Ie.source?.type}`,Ie.source);break}case"tool_use":{if(Ie.name&&!fc[Ie.name]&&!w.has(Ie.name)&&(w.add(Ie.name),ln.log(`Unmapped tool in stream: ${Ie.name}`)),w3(Ie.name)){let fn=Ie.input?.description&&`\`${Ie.input.description}\``;U({title:[jb(Ie.name),fn].filter(Boolean).join(" "),category:fc[Ie.name]?.category,groupId:Ie.id,parentGroupId:we.parent_tool_use_id||void 0})}else Ie.name==="Bash"&&dc(Ie.input?.command)&&U({title:"Generating the site",category:H.SiteGeneration,groupId:Ie.id,parentGroupId:we.parent_tool_use_id||void 0});let be=Ie.id&&!x?Ag(Ie.name,Ie.input,$B):void 0;be&&"interaction"in be?(x=be.interaction,C.kill()):be&&(ln.warn("Ignoring malformed pause tool input",{toolUseId:Ie.id,tool:Ie.name,issues:be.issues}),Y.inc(be.metric,1)),Ie.id&&(v[Ie.id]=Ie),N.flush();break}case"tool_result":{let be=Ie.tool_use_id?v[Ie.tool_use_id]:void 0;if(xg(be?.name,$B))break;let fn=w3(be?.name),aa=be?.name==="Bash"&&dc(be?.input?.command);if(be?.name==="Skill"&&be?.input?.skill){let Ir=Ps(be.input.skill?.toString());Ua(ln,Ir),U({title:`Use ${Ir}`,category:H.Skill,type:be.input.skill?.toString(),parentGroupId:we.parent_tool_use_id||void 0},!0);break}if(be?.name==="TodoWrite"){let{name:Ir,category:Yt}=fc.TodoWrite;U({title:Ir,category:Yt,parentGroupId:we.parent_tool_use_id||void 0,tasks:we.tool_use_result?.newTodos?.map(Re=>({name:Re.status==="in_progress"?Re.activeForm:Re.content,value:Re.status}))},!0);break}if(be?.name==="TaskCreate"||be?.name==="TaskUpdate"){Ie.is_error||R(be,A(Ie.content)),U({title:jb(be.name),category:H.Todo,parentGroupId:we.parent_tool_use_id||void 0,tasks:P()},!0);break}if(be?.name&&VEe.has(be.name)){let Ir=fc[be.name]?.category||H.Tool,Yt=Ir===H.Todo&&y.length>0;U({title:jb(be.name),category:Ir===H.Todo&&!Yt?H.Tool:Ir,parentGroupId:we.parent_tool_use_id||void 0,...Yt?{tasks:P()}:{}},!0);break}let yM=!!(be?.name&&fc[be.name]),ry;if(!fn&&!aa&&be){let Ir=be.input?.file_path&&qb.relative(o,be.input.file_path);Ir||(Ir=be.input?.pattern||be.input?.command);let Yt=Ir&&`\`${Ir}\``;ry=[jb(be.name||""),Yt].filter(Boolean).join(" ")}else!fn&&!aa&&!be&&(ry="Tool result");let SM=["Bash","Glob","Grep","LS","Read","Edit","Write","TaskOutput"].includes(be?.name||"")||!fn&&!aa&&!yM,tp=we.parent_tool_use_id||void 0;!tp&&(fn||aa)&&(tp=Ie.tool_use_id);let Nu,rp=fn&&we.tool_use_result?.content||Ie.content;if(typeof rp=="string")Nu=rp;else if(Array.isArray(rp)){let Ir=[];rp.forEach(Yt=>{Yt?.type==="text"&&typeof Yt.text=="string"?Ir.push(Yt.text):Yt?.type==="image"&&typeof Yt.source=="object"&&Yt.source?Yt.source.type==="base64"&&Yt.source.media_type?Ir.push(`![](data:${Yt.source.media_type};base64,${Yt.source.data})`):ln.log(`Unsupported image type ${Yt.source.type}`,Yt.source):ln.log(`Unsupported block type ${Yt?.type}`)}),Nu=Ir.join(`
392
392
 
393
393
  `)}if(fn&&Nu&&qEe(Nu)){U({title:"Running in background",category:H.Task,parentGroupId:tp},!0);break}U({title:ry,message:Nu,wrapMessage:SM,category:fn?H.AgentMessage:aa?H.SiteGeneration:fc[be?.name??""]?.category||H.Tool,parentGroupId:tp},!0);break}case"thinking":{Ie.thinking&&U({title:"Reasoning",message:Ie.thinking,category:H.Reasoning,parentGroupId:we.parent_tool_use_id||void 0},!0);break}default:ln.log(`Message content type is not supported ${Ie.type}`,Ie)}})}else we?.type==="result"&&(L=we.duration_ms||0,we.is_error?x||(te=we.result,$=we.api_error_status??void 0):S=we.result,we.usage&&(al(we.usage,m?{model:m}:{}),b=we.usage),[_,g].forEach(rt=>{rt[rt.length-1]?.message===S&&rt.pop()}))});let Cr=!1;if(await C.catch(ft=>{Cr=bl(ft,a),{error:te,result:S}=Sm({catchError:ft,runCmd:C,error:te,result:S,runnerName:"Claude"})}),Fe&&await Rg.rm(Fe.mcpConfigPath,{force:!0}).catch(()=>{}),oe.close(),N.flush(),x)return{steps:_,duration:L,agentSessionId:p,resolvedModel:m,effort:he,usage:b,pendingInteraction:x};let _t=Cr;_t&&(!S&&M.trim()&&(S=M.trim()),te=void 0);let Rn=te?MEe({error:te,apiErrorStatus:$}):void 0,at=gN(Rn);return at&&ln.log(`Classified provider failure as ${at.failureClass}`,JSON.stringify({...Rn,retryable:at.retryable})),{steps:_,duration:L,result:await Wl({initialResult:S,agentName:Bb,hasError:!!te}),error:Yl({error:te,agentName:Bb}),isRetryableError:at?.retryable??Kl(te),isProviderUnavailableError:at?.providerFault??Zl(te),...Rn?{providerFailure:Rn}:{},agentSessionId:p,resolvedModel:m,effort:he,usage:b,..._t?{aborted:!0}:{}}}var WEe=async()=>{let t=qb.join(GEe.homedir(),".claude");await Rg.rm(t,{recursive:!0,force:!0})},YEe={baseDir:qb.join(GEe.homedir(),".claude"),include:["projects"]};import fT from"fs/promises";import pT from"os";import hu from"path";import bc from"process";import dot from"readline";function Oe(t,e,r,n,i){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?i.call(t,r):i?i.value=r:e.set(t,r),r}function j(t,e,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(t):n?n.value:e.get(t)}var R3=function(){let{crypto:t}=globalThis;if(t?.randomUUID)return R3=t.randomUUID.bind(t),t.randomUUID();let e=new Uint8Array(1),r=t?()=>t.getRandomValues(e)[0]:()=>Math.random()*255&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,n=>(+n^r()&15>>+n/4).toString(16))};function Vb(t){return typeof t=="object"&&t!==null&&("name"in t&&t.name==="AbortError"||"message"in t&&String(t.message).includes("FetchRequestCanceledException"))}var Gb=t=>{if(t instanceof Error)return t;if(typeof t=="object"&&t!==null){try{if(Object.prototype.toString.call(t)==="[object Error]"){let e=new Error(t.message,t.cause?{cause:t.cause}:{});return t.stack&&(e.stack=t.stack),t.cause&&!e.cause&&(e.cause=t.cause),t.name&&(e.name=t.name),e}}catch{}try{return new Error(JSON.stringify(t))}catch{}}return new Error(t)};var ye=class extends Error{},or=class t extends ye{constructor(e,r,n,i){super(`${t.makeMessage(e,r,n)}`),this.status=e,this.headers=i,this.requestID=i?.get("x-request-id"),this.error=r;let o=r;this.code=o?.code,this.param=o?.param,this.type=o?.type}static makeMessage(e,r,n){let i=r?.message?typeof r.message=="string"?r.message:JSON.stringify(r.message):r?JSON.stringify(r):n;return e&&i?`${e} ${i}`:e?`${e} status code (no body)`:i||"(no status code or body)"}static generate(e,r,n,i){if(!e||!i)return new Jl({message:n,cause:Gb(r)});let o=r?.error;return e===400?new Ig(e,o,n,i):e===401?new Pg(e,o,n,i):e===403?new Og(e,o,n,i):e===404?new Ng(e,o,n,i):e===409?new kg(e,o,n,i):e===422?new Mg(e,o,n,i):e===429?new $g(e,o,n,i):e>=500?new Dg(e,o,n,i):new t(e,o,n,i)}},gr=class extends or{constructor({message:e}={}){super(void 0,void 0,e||"Request was aborted.",void 0)}},Jl=class extends or{constructor({message:e,cause:r}){super(void 0,void 0,e||"Connection error.",void 0),r&&(this.cause=r)}},Xl=class extends Jl{constructor({message:e}={}){super({message:e??"Request timed out."})}},Ig=class extends or{},Pg=class extends or{},Og=class extends or{},Ng=class extends or{},kg=class extends or{},Mg=class extends or{},$g=class extends or{},Dg=class extends or{},Lg=class extends ye{constructor(){super("Could not parse response content as the length limit was reached")}},Ug=class extends ye{constructor(){super("Could not parse response content as the request was rejected by the content filter")}},Ks=class extends Error{constructor(e){super(e)}},yf=class extends or{constructor(e,r,n){let i="OAuth2 authentication error",o;if(r&&typeof r=="object"){let s=r;o=s.error;let a=s.error_description;a&&typeof a=="string"?i=a:o&&(i=o)}super(e,r,i,n),this.error_code=o}},Hb=class extends ye{constructor(e,r,n){super(e),this.provider=r,this.cause=n}};var Bnt=/^[a-z][a-z0-9+.-]*:/i,KEe=t=>Bnt.test(t),En=t=>(En=Array.isArray,En(t)),C3=En;function I3(t){return typeof t!="object"?{}:t??{}}function P3(t){if(!t)return!0;for(let e in t)return!1;return!0}function ZEe(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Wb(t){return t!=null&&typeof t=="object"&&!Array.isArray(t)}var JEe=(t,e)=>{if(typeof e!="number"||!Number.isInteger(e))throw new ye(`${t} must be an integer`);if(e<0)throw new ye(`${t} must be a positive integer`);return e};var XEe=t=>{try{return JSON.parse(t)}catch{return}};var Zs=t=>new Promise(e=>setTimeout(e,t));var Ql="6.34.0";var rve=()=>typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u";function qnt(){return typeof Deno<"u"&&Deno.build!=null?"deno":typeof EdgeRuntime<"u"?"edge":Object.prototype.toString.call(typeof globalThis.process<"u"?globalThis.process:0)==="[object process]"?"node":"unknown"}var Vnt=()=>{let t=qnt();if(t==="deno")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":Ql,"X-Stainless-OS":eve(Deno.build.os),"X-Stainless-Arch":QEe(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version=="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":Ql,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if(t==="node")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":Ql,"X-Stainless-OS":eve(globalThis.process.platform??"unknown"),"X-Stainless-Arch":QEe(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let e=Gnt();return e?{"X-Stainless-Lang":"js","X-Stainless-Package-Version":Ql,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${e.browser}`,"X-Stainless-Runtime-Version":e.version}:{"X-Stainless-Lang":"js","X-Stainless-Package-Version":Ql,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}};function Gnt(){if(typeof navigator>"u"||!navigator)return null;let t=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:e,pattern:r}of t){let n=r.exec(navigator.userAgent);if(n){let i=n[1]||0,o=n[2]||0,s=n[3]||0;return{browser:e,version:`${i}.${o}.${s}`}}}return null}var QEe=t=>t==="x32"?"x32":t==="x86_64"||t==="x64"?"x64":t==="arm"?"arm":t==="aarch64"||t==="arm64"?"arm64":t?`other:${t}`:"unknown",eve=t=>(t=t.toLowerCase(),t.includes("ios")?"iOS":t==="android"?"Android":t==="darwin"?"MacOS":t==="win32"?"Windows":t==="freebsd"?"FreeBSD":t==="openbsd"?"OpenBSD":t==="linux"?"Linux":t?`Other:${t}`:"Unknown"),tve,nve=()=>tve??(tve=Vnt());function SN(){if(typeof fetch<"u")return fetch;throw new Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function O3(...t){let e=globalThis.ReadableStream;if(typeof e>"u")throw new Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new e(...t)}function EN(t){let e=Symbol.asyncIterator in t?t[Symbol.asyncIterator]():t[Symbol.iterator]();return O3({start(){},async pull(r){let{done:n,value:i}=await e.next();n?r.close():r.enqueue(i)},async cancel(){await e.return?.()}})}function N3(t){if(t[Symbol.asyncIterator])return t;let e=t.getReader();return{async next(){try{let r=await e.read();return r?.done&&e.releaseLock(),r}catch(r){throw e.releaseLock(),r}},async return(){let r=e.cancel();return e.releaseLock(),await r,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function k3(t){if(t===null||typeof t!="object")return;if(t[Symbol.asyncIterator]){await t[Symbol.asyncIterator]().return?.();return}let e=t.getReader(),r=e.cancel();e.releaseLock(),await r}var ove=({headers:t,body:e})=>({bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(e)});var M3="RFC3986",$3=t=>String(t),D3={RFC1738:t=>String(t).replace(/%20/g,"+"),RFC3986:$3},sve="RFC1738";var vN=(t,e)=>(vN=Object.hasOwn??Function.prototype.call.bind(Object.prototype.hasOwnProperty),vN(t,e)),Js=(()=>{let t=[];for(let e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t})();var L3=1024,ave=(t,e,r,n,i)=>{if(t.length===0)return t;let o=t;if(typeof t=="symbol"?o=Symbol.prototype.toString.call(t):typeof t!="string"&&(o=String(t)),r==="iso-8859-1")return escape(o).replace(/%u[0-9a-f]{4}/gi,function(a){return"%26%23"+parseInt(a.slice(2),16)+"%3B"});let s="";for(let a=0;a<o.length;a+=L3){let c=o.length>=L3?o.slice(a,a+L3):o,l=[];for(let u=0;u<c.length;++u){let d=c.charCodeAt(u);if(d===45||d===46||d===95||d===126||d>=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122||i===sve&&(d===40||d===41)){l[l.length]=c.charAt(u);continue}if(d<128){l[l.length]=Js[d];continue}if(d<2048){l[l.length]=Js[192|d>>6]+Js[128|d&63];continue}if(d<55296||d>=57344){l[l.length]=Js[224|d>>12]+Js[128|d>>6&63]+Js[128|d&63];continue}u+=1,d=65536+((d&1023)<<10|c.charCodeAt(u)&1023),l[l.length]=Js[240|d>>18]+Js[128|d>>12&63]+Js[128|d>>6&63]+Js[128|d&63]}s+=l.join("")}return s};function cve(t){return!t||typeof t!="object"?!1:!!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t))}function U3(t,e){if(En(t)){let r=[];for(let n=0;n<t.length;n+=1)r.push(e(t[n]));return r}return e(t)}var uve={brackets(t){return String(t)+"[]"},comma:"comma",indices(t,e){return String(t)+"["+e+"]"},repeat(t){return String(t)}},dve=function(t,e){Array.prototype.push.apply(t,En(e)?e:[e])},lve,wr={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:ave,encodeValuesOnly:!1,format:M3,formatter:$3,indices:!1,serializeDate(t){return(lve??(lve=Function.prototype.call.bind(Date.prototype.toISOString)))(t)},skipNulls:!1,strictNullHandling:!1};function Wnt(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="symbol"||typeof t=="bigint"}var F3={};function fve(t,e,r,n,i,o,s,a,c,l,u,d,f,p,h,m,g,_){let v=t,w=_,y=0,T=!1;for(;(w=w.get(F3))!==void 0&&!T;){let L=w.get(t);if(y+=1,typeof L<"u"){if(L===y)throw new RangeError("Cyclic object value");T=!0}typeof w.get(F3)>"u"&&(y=0)}if(typeof l=="function"?v=l(e,v):v instanceof Date?v=f?.(v):r==="comma"&&En(v)&&(v=U3(v,function(L){return L instanceof Date?f?.(L):L})),v===null){if(o)return c&&!m?c(e,wr.encoder,g,"key",p):e;v=""}if(Wnt(v)||cve(v)){if(c){let L=m?e:c(e,wr.encoder,g,"key",p);return[h?.(L)+"="+h?.(c(v,wr.encoder,g,"value",p))]}return[h?.(e)+"="+h?.(String(v))]}let A=[];if(typeof v>"u")return A;let R;if(r==="comma"&&En(v))m&&c&&(v=U3(v,c)),R=[{value:v.length>0?v.join(",")||null:void 0}];else if(En(l))R=l;else{let L=Object.keys(v);R=u?L.sort(u):L}let P=a?String(e).replace(/\./g,"%2E"):String(e),k=n&&En(v)&&v.length===1?P+"[]":P;if(i&&En(v)&&v.length===0)return k+"[]";for(let L=0;L<R.length;++L){let S=R[L],te=typeof S=="object"&&typeof S.value<"u"?S.value:v[S];if(s&&te===null)continue;let $=d&&a?S.replace(/\./g,"%2E"):S,b=En(v)?typeof r=="function"?r(k,$):k:k+(d?"."+$:"["+$+"]");_.set(t,y);let x=new WeakMap;x.set(F3,_),dve(A,fve(te,b,r,n,i,o,s,a,r==="comma"&&m&&En(v)?null:c,l,u,d,f,p,h,m,g,x))}return A}function Ynt(t=wr){if(typeof t.allowEmptyArrays<"u"&&typeof t.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof t.encodeDotInKeys<"u"&&typeof t.encodeDotInKeys!="boolean")throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(t.encoder!==null&&typeof t.encoder<"u"&&typeof t.encoder!="function")throw new TypeError("Encoder has to be a function.");let e=t.charset||wr.charset;if(typeof t.charset<"u"&&t.charset!=="utf-8"&&t.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");let r=M3;if(typeof t.format<"u"){if(!vN(D3,t.format))throw new TypeError("Unknown format option provided.");r=t.format}let n=D3[r],i=wr.filter;(typeof t.filter=="function"||En(t.filter))&&(i=t.filter);let o;if(t.arrayFormat&&t.arrayFormat in uve?o=t.arrayFormat:"indices"in t?o=t.indices?"indices":"repeat":o=wr.arrayFormat,"commaRoundTrip"in t&&typeof t.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");let s=typeof t.allowDots>"u"?t.encodeDotInKeys?!0:wr.allowDots:!!t.allowDots;return{addQueryPrefix:typeof t.addQueryPrefix=="boolean"?t.addQueryPrefix:wr.addQueryPrefix,allowDots:s,allowEmptyArrays:typeof t.allowEmptyArrays=="boolean"?!!t.allowEmptyArrays:wr.allowEmptyArrays,arrayFormat:o,charset:e,charsetSentinel:typeof t.charsetSentinel=="boolean"?t.charsetSentinel:wr.charsetSentinel,commaRoundTrip:!!t.commaRoundTrip,delimiter:typeof t.delimiter>"u"?wr.delimiter:t.delimiter,encode:typeof t.encode=="boolean"?t.encode:wr.encode,encodeDotInKeys:typeof t.encodeDotInKeys=="boolean"?t.encodeDotInKeys:wr.encodeDotInKeys,encoder:typeof t.encoder=="function"?t.encoder:wr.encoder,encodeValuesOnly:typeof t.encodeValuesOnly=="boolean"?t.encodeValuesOnly:wr.encodeValuesOnly,filter:i,format:r,formatter:n,serializeDate:typeof t.serializeDate=="function"?t.serializeDate:wr.serializeDate,skipNulls:typeof t.skipNulls=="boolean"?t.skipNulls:wr.skipNulls,sort:typeof t.sort=="function"?t.sort:null,strictNullHandling:typeof t.strictNullHandling=="boolean"?t.strictNullHandling:wr.strictNullHandling}}function pve(t,e={}){let r=t,n=Ynt(e),i,o;typeof n.filter=="function"?(o=n.filter,r=o("",r)):En(n.filter)&&(o=n.filter,i=o);let s=[];if(typeof r!="object"||r===null)return"";let a=uve[n.arrayFormat],c=a==="comma"&&n.commaRoundTrip;i||(i=Object.keys(r)),n.sort&&i.sort(n.sort);let l=new WeakMap;for(let f=0;f<i.length;++f){let p=i[f];n.skipNulls&&r[p]===null||dve(s,fve(r[p],p,a,c,n.allowEmptyArrays,n.strictNullHandling,n.skipNulls,n.encodeDotInKeys,n.encode?n.encoder:null,n.filter,n.sort,n.allowDots,n.serializeDate,n.format,n.formatter,n.encodeValuesOnly,n.charset,l))}let u=s.join(n.delimiter),d=n.addQueryPrefix===!0?"?":"";return n.charsetSentinel&&(n.charset==="iso-8859-1"?d+="utf8=%26%2310003%3B&":d+="utf8=%E2%9C%93&"),u.length>0?d+u:""}function hve(t){return pve(t,{arrayFormat:"brackets"})}function _ve(t){let e=0;for(let i of t)e+=i.length;let r=new Uint8Array(e),n=0;for(let i of t)r.set(i,n),n+=i.length;return r}var mve;function Fg(t){let e;return(mve??(e=new globalThis.TextEncoder,mve=e.encode.bind(e)))(t)}var gve;function z3(t){let e;return(gve??(e=new globalThis.TextDecoder,gve=e.decode.bind(e)))(t)}var Ni,ki,Sf=class{constructor(){Ni.set(this,void 0),ki.set(this,void 0),Oe(this,Ni,new Uint8Array,"f"),Oe(this,ki,null,"f")}decode(e){if(e==null)return[];let r=e instanceof ArrayBuffer?new Uint8Array(e):typeof e=="string"?Fg(e):e;Oe(this,Ni,_ve([j(this,Ni,"f"),r]),"f");let n=[],i;for(;(i=Znt(j(this,Ni,"f"),j(this,ki,"f")))!=null;){if(i.carriage&&j(this,ki,"f")==null){Oe(this,ki,i.index,"f");continue}if(j(this,ki,"f")!=null&&(i.index!==j(this,ki,"f")+1||i.carriage)){n.push(z3(j(this,Ni,"f").subarray(0,j(this,ki,"f")-1))),Oe(this,Ni,j(this,Ni,"f").subarray(j(this,ki,"f")),"f"),Oe(this,ki,null,"f");continue}let o=j(this,ki,"f")!==null?i.preceding-1:i.preceding,s=z3(j(this,Ni,"f").subarray(0,o));n.push(s),Oe(this,Ni,j(this,Ni,"f").subarray(i.index),"f"),Oe(this,ki,null,"f")}return n}flush(){return j(this,Ni,"f").length?this.decode(`
394
394
  `):[]}};Ni=new WeakMap,ki=new WeakMap;Sf.NEWLINE_CHARS=new Set([`
@@ -412,10 +412,10 @@ you can set the \`dangerouslyAllowBrowser\` option to \`true\`, e.g.,
412
412
  new OpenAI({ apiKey, dangerouslyAllowBrowser: true });
413
413
 
414
414
  https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety
415
- `);this.baseURL=c.baseURL,this.timeout=c.timeout??pW.DEFAULT_TIMEOUT,this.logger=c.logger??console;let l="warn";this.logLevel=l,this.logLevel=j3(c.logLevel,"ClientOptions.logLevel",this)??j3(su("OPENAI_LOG"),"process.env['OPENAI_LOG']",this)??l,this.fetchOptions=c.fetchOptions,this.maxRetries=c.maxRetries??2,this.fetch=c.fetch??SN(),Oe(this,WN,ove,"f"),this._options=c,s&&(this._workloadIdentityAuth=new xN(s,this.fetch)),this.apiKey=typeof r=="string"?r:"Missing Key",this.organization=n,this.project=i,this.webhookSecret=o}withOptions(e){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this.apiKey,workloadIdentity:this._options.workloadIdentity,organization:this.organization,project:this.project,webhookSecret:this.webhookSecret,...e})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:r}){}async authHeaders(e){return se([{Authorization:`Bearer ${this.apiKey}`}])}stringifyQuery(e){return hve(e)}getUserAgent(){return`${this.constructor.name}/JS ${Ql}`}defaultIdempotencyKey(){return`stainless-node-retry-${R3()}`}makeStatusError(e,r,n,i){return or.generate(e,r,n,i)}async _callApiKey(){let e=this._options.apiKey;if(typeof e!="function")return!1;let r;try{r=await e()}catch(n){throw n instanceof ye?n:new ye(`Failed to get token from 'apiKey' function: ${n.message}`,{cause:n})}if(typeof r!="string"||!r)throw new ye(`Expected 'apiKey' function argument to return a string but it returned ${r}`);return this.apiKey=r,!0}buildURL(e,r,n){let i=!j(this,fW,"m",Jve).call(this)&&n||this.baseURL,o=KEe(e)?new URL(e):new URL(i+(i.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),s=this.defaultQuery(),a=Object.fromEntries(o.searchParams);return(!P3(s)||!P3(a))&&(r={...a,...s,...r}),typeof r=="object"&&r&&!Array.isArray(r)&&(o.search=this.stringifyQuery(r)),o.toString()}async prepareOptions(e){await this._callApiKey()}async prepareRequest(e,{url:r,options:n}){}get(e,r){return this.methodRequest("get",e,r)}post(e,r){return this.methodRequest("post",e,r)}patch(e,r){return this.methodRequest("patch",e,r)}put(e,r){return this.methodRequest("put",e,r)}delete(e,r){return this.methodRequest("delete",e,r)}methodRequest(e,r,n){return this.request(Promise.resolve(n).then(i=>({method:e,path:r,...i})))}request(e,r=null){return new Ef(this,this.makeRequest(e,r,void 0))}async makeRequest(e,r,n){let i=await e,o=i.maxRetries??this.maxRetries;r==null&&(r=o),await this.prepareOptions(i);let{req:s,url:a,timeout:c}=await this.buildRequest(i,{retryCount:o-r});await this.prepareRequest(s,{url:a,options:i});let l="log_"+(Math.random()*(1<<24)|0).toString(16).padStart(6,"0"),u=n===void 0?"":`, retryOf: ${n}`,d=Date.now();if(pr(this).debug(`[${l}] sending request`,pc({retryOfRequestLogID:n,method:i.method,url:a,options:i,headers:s.headers})),i.signal?.aborted)throw new gr;let f=new AbortController,p=await this.fetchWithAuth(a,s,c,f).catch(Gb),h=Date.now();if(p instanceof globalThis.Error){let _=`retrying, ${r} attempts remaining`;if(i.signal?.aborted)throw new gr;let v=Vb(p)||/timed? ?out/i.test(String(p)+("cause"in p?String(p.cause):""));if(r)return pr(this).info(`[${l}] connection ${v?"timed out":"failed"} - ${_}`),pr(this).debug(`[${l}] connection ${v?"timed out":"failed"} (${_})`,pc({retryOfRequestLogID:n,url:a,durationMs:h-d,message:p.message})),this.retryRequest(i,r,n??l);throw pr(this).info(`[${l}] connection ${v?"timed out":"failed"} - error; no more retries left`),pr(this).debug(`[${l}] connection ${v?"timed out":"failed"} (error; no more retries left)`,pc({retryOfRequestLogID:n,url:a,durationMs:h-d,message:p.message})),p instanceof yf||p instanceof Hb?p:v?new Xl:new Jl({cause:p})}let m=[...p.headers.entries()].filter(([_])=>_==="x-request-id").map(([_,v])=>", "+_+": "+JSON.stringify(v)).join(""),g=`[${l}${u}${m}] ${s.method} ${a} ${p.ok?"succeeded":"failed"} with status ${p.status} in ${h-d}ms`;if(!p.ok){if(p.status===401&&this._workloadIdentityAuth&&!i.__metadata?.hasStreamingBody&&!i.__metadata?.workloadIdentityTokenRefreshed)return await k3(p.body),this._workloadIdentityAuth.invalidateToken(),this.makeRequest({...i,__metadata:{...i.__metadata,workloadIdentityTokenRefreshed:!0}},r,n??l);let _=await this.shouldRetry(p);if(r&&_){let R=`retrying, ${r} attempts remaining`;return await k3(p.body),pr(this).info(`${g} - ${R}`),pr(this).debug(`[${l}] response error (${R})`,pc({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,durationMs:h-d})),this.retryRequest(i,r,n??l,p.headers)}let v=_?"error; no more retries left":"error; not retryable";pr(this).info(`${g} - ${v}`);let w=await p.text().catch(R=>Gb(R).message),y=XEe(w),T=y?void 0:w;throw pr(this).debug(`[${l}] response error (${v})`,pc({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,message:T,durationMs:Date.now()-d})),this.makeStatusError(p.status,y,T,p.headers)}return pr(this).info(g),pr(this).debug(`[${l}] response start`,pc({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,durationMs:h-d})),{response:p,options:i,controller:f,requestLogID:l,retryOfRequestLogID:n,startTime:d}}getAPIList(e,r,n){return this.requestAPIList(r,n&&"then"in n?n.then(i=>({method:"get",path:e,...i})):{method:"get",path:e,...n})}requestAPIList(e,r){let n=this.makeRequest(r,null,void 0);return new Xb(this,n,e)}async fetchWithAuth(e,r,n,i){if(this._workloadIdentityAuth){let s=r.headers,a=s.get("Authorization");if(!a||a===`Bearer ${dW}`){let c=await this._workloadIdentityAuth.getToken();s.set("Authorization",`Bearer ${c}`)}}return await this.fetchWithTimeout(e,r,n,i)}async fetchWithTimeout(e,r,n,i){let{signal:o,method:s,...a}=r||{},c=this._makeAbort(i);o&&o.addEventListener("abort",c,{once:!0});let l=setTimeout(c,n),u=globalThis.ReadableStream&&a.body instanceof globalThis.ReadableStream||typeof a.body=="object"&&a.body!==null&&Symbol.asyncIterator in a.body,d={signal:i.signal,...u?{duplex:"half"}:{},method:"GET",...a};s&&(d.method=s.toUpperCase());try{return await this.fetch.call(void 0,e,d)}finally{clearTimeout(l)}}async shouldRetry(e){let r=e.headers.get("x-should-retry");return r==="true"?!0:r==="false"?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,r,n,i){let o,s=i?.get("retry-after-ms");if(s){let c=parseFloat(s);Number.isNaN(c)||(o=c)}let a=i?.get("retry-after");if(a&&!o){let c=parseFloat(a);Number.isNaN(c)?o=Date.parse(a)-Date.now():o=c*1e3}if(o===void 0){let c=e.maxRetries??this.maxRetries;o=this.calculateDefaultRetryTimeoutMillis(r,c)}return await Zs(o),this.makeRequest(e,r-1,n)}calculateDefaultRetryTimeoutMillis(e,r){let o=r-e,s=Math.min(.5*Math.pow(2,o),8),a=1-Math.random()*.25;return s*a*1e3}async buildRequest(e,{retryCount:r=0}={}){let n={...e},{method:i,path:o,query:s,defaultBaseURL:a}=n,c=this.buildURL(o,s,a);"timeout"in n&&JEe("timeout",n.timeout),n.timeout=n.timeout??this.timeout;let{bodyHeaders:l,body:u,isStreamingBody:d}=this.buildBody({options:n});d&&(e.__metadata={...e.__metadata,hasStreamingBody:!0});let f=await this.buildHeaders({options:e,method:i,bodyHeaders:l,retryCount:r});return{req:{method:i,headers:f,...n.signal&&{signal:n.signal},...globalThis.ReadableStream&&u instanceof globalThis.ReadableStream&&{duplex:"half"},...u&&{body:u},...this.fetchOptions??{},...n.fetchOptions??{}},url:c,timeout:n.timeout}}async buildHeaders({options:e,method:r,bodyHeaders:n,retryCount:i}){let o={};this.idempotencyHeader&&r!=="get"&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),o[this.idempotencyHeader]=e.idempotencyKey);let s=se([o,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(i),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...nve(),"OpenAI-Organization":this.organization,"OpenAI-Project":this.project},await this.authHeaders(e),this._options.defaultHeaders,n,e.headers]);return this.validateHeaders(s),s.values}_makeAbort(e){return()=>e.abort()}buildBody({options:{body:e,headers:r}}){if(!e)return{bodyHeaders:void 0,body:void 0,isStreamingBody:!1};let n=se([r]),i=typeof globalThis.ReadableStream<"u"&&e instanceof globalThis.ReadableStream,o=!i&&(typeof e=="string"||e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof globalThis.Blob<"u"&&e instanceof globalThis.Blob||e instanceof URLSearchParams||e instanceof FormData);return ArrayBuffer.isView(e)||e instanceof ArrayBuffer||e instanceof DataView||typeof e=="string"&&n.values.has("content-type")||globalThis.Blob&&e instanceof globalThis.Blob||e instanceof FormData||e instanceof URLSearchParams||i?{bodyHeaders:void 0,body:e,isStreamingBody:!o}:typeof e=="object"&&(Symbol.asyncIterator in e||Symbol.iterator in e&&"next"in e&&typeof e.next=="function")?{bodyHeaders:void 0,body:EN(e),isStreamingBody:!0}:typeof e=="object"&&n.values.get("content-type")==="application/x-www-form-urlencoded"?{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery(e),isStreamingBody:!1}:{...j(this,WN,"f").call(this,{body:e,headers:n}),isStreamingBody:!1}}};pW=Be,WN=new WeakMap,fW=new WeakSet,Jve=function(){return this.baseURL!=="https://api.openai.com/v1"};Be.OpenAI=pW;Be.DEFAULT_TIMEOUT=6e5;Be.OpenAIError=ye;Be.APIError=or;Be.APIConnectionError=Jl;Be.APIConnectionTimeoutError=Xl;Be.APIUserAbortError=gr;Be.NotFoundError=Ng;Be.ConflictError=kg;Be.RateLimitError=$g;Be.BadRequestError=Ig;Be.AuthenticationError=Pg;Be.InternalServerError=Dg;Be.PermissionDeniedError=Og;Be.UnprocessableEntityError=Mg;Be.InvalidWebhookSignatureError=Ks;Be.toFile=CN;Be.Completions=If;Be.Chat=nu;Be.Embeddings=Of;Be.Files=kf;Be.Images=Lf;Be.Audio=ea;Be.Moderations=Ff;Be.Models=Uf;Be.FineTuning=Qo;Be.Graders=du;Be.VectorStores=vc;Be.Webhooks=Bf;Be.Beta=Xo;Be.Batches=wf;Be.Uploads=pu;Be.Responses=Sc;Be.Realtime=yc;Be.Conversations=lu;Be.Evals=uu;Be.Containers=cu;Be.Skills=Ec;Be.Videos=jf;var ui=ie("runner_codex"),YN="Codex CLI",v_="gpt-5.6-sol";async function fot({aiGateway:t,config:e,model:r}){let n=r;if(t)if(e.modelVersionOverrides?.codex){let i=e.modelVersionOverrides?.codex?.[e.accountType];if(i){if(!await t.isModelAvailableForProvider("openai",i))throw new Error(`Model override '${i}' is not available for openai provider`);n=i}}else r?await t.isModelAvailableForProvider("openai",r)||(ui.log(`Model '${r}' is not available for openai provider, proceeding without model specification`),K.inc("model.unavailable",1,{provider:"openai"}),n=void 0):!!v_&&await t.isModelAvailableForProvider("openai",v_)?(n=v_,ui.log(`Using default model: ${v_}`)):v_&&ui.log(`Default model ${v_} is not available, proceeding without model specification`);return n}var KN="netlify-ask-db",pot=`default_permissions = "${KN}"`,hot=()=>hu.join(bc.env.XDG_CONFIG_HOME??hu.join(pT.homedir(),".config"),"netlify"),mot=t=>["",`[permissions.${KN}]`,'description = "Ask mode: read-only filesystem, network access for database reads"','extends = ":read-only"',"",`[permissions.${KN}.filesystem]`,'":minimal" = "read"','"/" = "read"',`"${t}" = "write"`,"",`[permissions.${KN}.network]`,"enabled = true"];function got({aiGateway:t}){if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");bc.env.OPENAI_API_KEY=e,bc.env.OPENAI_BASE_URL=r}else if(!bc.env.OPENAI_API_KEY)throw new Error("OPENAI_API_KEY is not provided")}async function hW({config:t,persistSteps:e,sendSteps:r,aiGateway:n,continueSession:i,priorAgentSessionId:o,cwd:s=bc.cwd(),abortSignal:a,onSessionId:c,forceLowEffortForCreditWrapUp:l}){let{prompt:u}=t,{model:d}=t;got({aiGateway:n});let f=await fot({config:t,aiGateway:n,model:d}),p=[],h=[],m=[],g={},_=new Set,v=0,w=0,y,T,A,R,P,k=Em(t),L=`${bc.env.NVM_BIN}/node`,S=hu.join(pT.homedir(),".codex"),te=hu.join(S,"config.toml"),$=hu.join(S,"auth.json");try{await fT.mkdir(S,{recursive:!0});let V={OPENAI_API_KEY:bc.env.OPENAI_API_KEY};await fT.writeFile($,JSON.stringify(V,null,2),"utf-8"),ui.log("Created Codex auth.json file");let C=bc.env.OPENAI_BASE_URL,N=['forced_login_method = "api"'],U=Hl({creditWrapUpTurn:l}),F=Gl(t,{creditWrapUpTurn:l});k&&N.push(pot),C&&N.push('model_provider = "openai_proxy"',"","[model_providers.openai_proxy]",'name = "OpenAI Proxy"',`base_url = "${C}"`,'env_key = "OPENAI_API_KEY"','wire_api = "responses"',"supports_websockets = false","requires_openai_auth = true"),U&&N.push(...AEe()),F&&N.push(...xEe(F));let de=[];k&&(de=mot(hot()),N.push(...de)),await fT.writeFile(te,`${N.join(`
415
+ `);this.baseURL=c.baseURL,this.timeout=c.timeout??pW.DEFAULT_TIMEOUT,this.logger=c.logger??console;let l="warn";this.logLevel=l,this.logLevel=j3(c.logLevel,"ClientOptions.logLevel",this)??j3(su("OPENAI_LOG"),"process.env['OPENAI_LOG']",this)??l,this.fetchOptions=c.fetchOptions,this.maxRetries=c.maxRetries??2,this.fetch=c.fetch??SN(),Oe(this,WN,ove,"f"),this._options=c,s&&(this._workloadIdentityAuth=new xN(s,this.fetch)),this.apiKey=typeof r=="string"?r:"Missing Key",this.organization=n,this.project=i,this.webhookSecret=o}withOptions(e){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this.apiKey,workloadIdentity:this._options.workloadIdentity,organization:this.organization,project:this.project,webhookSecret:this.webhookSecret,...e})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:r}){}async authHeaders(e){return se([{Authorization:`Bearer ${this.apiKey}`}])}stringifyQuery(e){return hve(e)}getUserAgent(){return`${this.constructor.name}/JS ${Ql}`}defaultIdempotencyKey(){return`stainless-node-retry-${R3()}`}makeStatusError(e,r,n,i){return or.generate(e,r,n,i)}async _callApiKey(){let e=this._options.apiKey;if(typeof e!="function")return!1;let r;try{r=await e()}catch(n){throw n instanceof ye?n:new ye(`Failed to get token from 'apiKey' function: ${n.message}`,{cause:n})}if(typeof r!="string"||!r)throw new ye(`Expected 'apiKey' function argument to return a string but it returned ${r}`);return this.apiKey=r,!0}buildURL(e,r,n){let i=!j(this,fW,"m",Jve).call(this)&&n||this.baseURL,o=KEe(e)?new URL(e):new URL(i+(i.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),s=this.defaultQuery(),a=Object.fromEntries(o.searchParams);return(!P3(s)||!P3(a))&&(r={...a,...s,...r}),typeof r=="object"&&r&&!Array.isArray(r)&&(o.search=this.stringifyQuery(r)),o.toString()}async prepareOptions(e){await this._callApiKey()}async prepareRequest(e,{url:r,options:n}){}get(e,r){return this.methodRequest("get",e,r)}post(e,r){return this.methodRequest("post",e,r)}patch(e,r){return this.methodRequest("patch",e,r)}put(e,r){return this.methodRequest("put",e,r)}delete(e,r){return this.methodRequest("delete",e,r)}methodRequest(e,r,n){return this.request(Promise.resolve(n).then(i=>({method:e,path:r,...i})))}request(e,r=null){return new Ef(this,this.makeRequest(e,r,void 0))}async makeRequest(e,r,n){let i=await e,o=i.maxRetries??this.maxRetries;r==null&&(r=o),await this.prepareOptions(i);let{req:s,url:a,timeout:c}=await this.buildRequest(i,{retryCount:o-r});await this.prepareRequest(s,{url:a,options:i});let l="log_"+(Math.random()*(1<<24)|0).toString(16).padStart(6,"0"),u=n===void 0?"":`, retryOf: ${n}`,d=Date.now();if(pr(this).debug(`[${l}] sending request`,pc({retryOfRequestLogID:n,method:i.method,url:a,options:i,headers:s.headers})),i.signal?.aborted)throw new gr;let f=new AbortController,p=await this.fetchWithAuth(a,s,c,f).catch(Gb),h=Date.now();if(p instanceof globalThis.Error){let _=`retrying, ${r} attempts remaining`;if(i.signal?.aborted)throw new gr;let v=Vb(p)||/timed? ?out/i.test(String(p)+("cause"in p?String(p.cause):""));if(r)return pr(this).info(`[${l}] connection ${v?"timed out":"failed"} - ${_}`),pr(this).debug(`[${l}] connection ${v?"timed out":"failed"} (${_})`,pc({retryOfRequestLogID:n,url:a,durationMs:h-d,message:p.message})),this.retryRequest(i,r,n??l);throw pr(this).info(`[${l}] connection ${v?"timed out":"failed"} - error; no more retries left`),pr(this).debug(`[${l}] connection ${v?"timed out":"failed"} (error; no more retries left)`,pc({retryOfRequestLogID:n,url:a,durationMs:h-d,message:p.message})),p instanceof yf||p instanceof Hb?p:v?new Xl:new Jl({cause:p})}let m=[...p.headers.entries()].filter(([_])=>_==="x-request-id").map(([_,v])=>", "+_+": "+JSON.stringify(v)).join(""),g=`[${l}${u}${m}] ${s.method} ${a} ${p.ok?"succeeded":"failed"} with status ${p.status} in ${h-d}ms`;if(!p.ok){if(p.status===401&&this._workloadIdentityAuth&&!i.__metadata?.hasStreamingBody&&!i.__metadata?.workloadIdentityTokenRefreshed)return await k3(p.body),this._workloadIdentityAuth.invalidateToken(),this.makeRequest({...i,__metadata:{...i.__metadata,workloadIdentityTokenRefreshed:!0}},r,n??l);let _=await this.shouldRetry(p);if(r&&_){let R=`retrying, ${r} attempts remaining`;return await k3(p.body),pr(this).info(`${g} - ${R}`),pr(this).debug(`[${l}] response error (${R})`,pc({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,durationMs:h-d})),this.retryRequest(i,r,n??l,p.headers)}let v=_?"error; no more retries left":"error; not retryable";pr(this).info(`${g} - ${v}`);let w=await p.text().catch(R=>Gb(R).message),y=XEe(w),T=y?void 0:w;throw pr(this).debug(`[${l}] response error (${v})`,pc({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,message:T,durationMs:Date.now()-d})),this.makeStatusError(p.status,y,T,p.headers)}return pr(this).info(g),pr(this).debug(`[${l}] response start`,pc({retryOfRequestLogID:n,url:p.url,status:p.status,headers:p.headers,durationMs:h-d})),{response:p,options:i,controller:f,requestLogID:l,retryOfRequestLogID:n,startTime:d}}getAPIList(e,r,n){return this.requestAPIList(r,n&&"then"in n?n.then(i=>({method:"get",path:e,...i})):{method:"get",path:e,...n})}requestAPIList(e,r){let n=this.makeRequest(r,null,void 0);return new Xb(this,n,e)}async fetchWithAuth(e,r,n,i){if(this._workloadIdentityAuth){let s=r.headers,a=s.get("Authorization");if(!a||a===`Bearer ${dW}`){let c=await this._workloadIdentityAuth.getToken();s.set("Authorization",`Bearer ${c}`)}}return await this.fetchWithTimeout(e,r,n,i)}async fetchWithTimeout(e,r,n,i){let{signal:o,method:s,...a}=r||{},c=this._makeAbort(i);o&&o.addEventListener("abort",c,{once:!0});let l=setTimeout(c,n),u=globalThis.ReadableStream&&a.body instanceof globalThis.ReadableStream||typeof a.body=="object"&&a.body!==null&&Symbol.asyncIterator in a.body,d={signal:i.signal,...u?{duplex:"half"}:{},method:"GET",...a};s&&(d.method=s.toUpperCase());try{return await this.fetch.call(void 0,e,d)}finally{clearTimeout(l)}}async shouldRetry(e){let r=e.headers.get("x-should-retry");return r==="true"?!0:r==="false"?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,r,n,i){let o,s=i?.get("retry-after-ms");if(s){let c=parseFloat(s);Number.isNaN(c)||(o=c)}let a=i?.get("retry-after");if(a&&!o){let c=parseFloat(a);Number.isNaN(c)?o=Date.parse(a)-Date.now():o=c*1e3}if(o===void 0){let c=e.maxRetries??this.maxRetries;o=this.calculateDefaultRetryTimeoutMillis(r,c)}return await Zs(o),this.makeRequest(e,r-1,n)}calculateDefaultRetryTimeoutMillis(e,r){let o=r-e,s=Math.min(.5*Math.pow(2,o),8),a=1-Math.random()*.25;return s*a*1e3}async buildRequest(e,{retryCount:r=0}={}){let n={...e},{method:i,path:o,query:s,defaultBaseURL:a}=n,c=this.buildURL(o,s,a);"timeout"in n&&JEe("timeout",n.timeout),n.timeout=n.timeout??this.timeout;let{bodyHeaders:l,body:u,isStreamingBody:d}=this.buildBody({options:n});d&&(e.__metadata={...e.__metadata,hasStreamingBody:!0});let f=await this.buildHeaders({options:e,method:i,bodyHeaders:l,retryCount:r});return{req:{method:i,headers:f,...n.signal&&{signal:n.signal},...globalThis.ReadableStream&&u instanceof globalThis.ReadableStream&&{duplex:"half"},...u&&{body:u},...this.fetchOptions??{},...n.fetchOptions??{}},url:c,timeout:n.timeout}}async buildHeaders({options:e,method:r,bodyHeaders:n,retryCount:i}){let o={};this.idempotencyHeader&&r!=="get"&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),o[this.idempotencyHeader]=e.idempotencyKey);let s=se([o,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(i),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...nve(),"OpenAI-Organization":this.organization,"OpenAI-Project":this.project},await this.authHeaders(e),this._options.defaultHeaders,n,e.headers]);return this.validateHeaders(s),s.values}_makeAbort(e){return()=>e.abort()}buildBody({options:{body:e,headers:r}}){if(!e)return{bodyHeaders:void 0,body:void 0,isStreamingBody:!1};let n=se([r]),i=typeof globalThis.ReadableStream<"u"&&e instanceof globalThis.ReadableStream,o=!i&&(typeof e=="string"||e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof globalThis.Blob<"u"&&e instanceof globalThis.Blob||e instanceof URLSearchParams||e instanceof FormData);return ArrayBuffer.isView(e)||e instanceof ArrayBuffer||e instanceof DataView||typeof e=="string"&&n.values.has("content-type")||globalThis.Blob&&e instanceof globalThis.Blob||e instanceof FormData||e instanceof URLSearchParams||i?{bodyHeaders:void 0,body:e,isStreamingBody:!o}:typeof e=="object"&&(Symbol.asyncIterator in e||Symbol.iterator in e&&"next"in e&&typeof e.next=="function")?{bodyHeaders:void 0,body:EN(e),isStreamingBody:!0}:typeof e=="object"&&n.values.get("content-type")==="application/x-www-form-urlencoded"?{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery(e),isStreamingBody:!1}:{...j(this,WN,"f").call(this,{body:e,headers:n}),isStreamingBody:!1}}};pW=Be,WN=new WeakMap,fW=new WeakSet,Jve=function(){return this.baseURL!=="https://api.openai.com/v1"};Be.OpenAI=pW;Be.DEFAULT_TIMEOUT=6e5;Be.OpenAIError=ye;Be.APIError=or;Be.APIConnectionError=Jl;Be.APIConnectionTimeoutError=Xl;Be.APIUserAbortError=gr;Be.NotFoundError=Ng;Be.ConflictError=kg;Be.RateLimitError=$g;Be.BadRequestError=Ig;Be.AuthenticationError=Pg;Be.InternalServerError=Dg;Be.PermissionDeniedError=Og;Be.UnprocessableEntityError=Mg;Be.InvalidWebhookSignatureError=Ks;Be.toFile=CN;Be.Completions=If;Be.Chat=nu;Be.Embeddings=Of;Be.Files=kf;Be.Images=Lf;Be.Audio=ea;Be.Moderations=Ff;Be.Models=Uf;Be.FineTuning=Qo;Be.Graders=du;Be.VectorStores=vc;Be.Webhooks=Bf;Be.Beta=Xo;Be.Batches=wf;Be.Uploads=pu;Be.Responses=Sc;Be.Realtime=yc;Be.Conversations=lu;Be.Evals=uu;Be.Containers=cu;Be.Skills=Ec;Be.Videos=jf;var ui=ie("runner_codex"),YN="Codex CLI",v_="gpt-5.6-sol";async function fot({aiGateway:t,config:e,model:r}){let n=r;if(t)if(e.modelVersionOverrides?.codex){let i=e.modelVersionOverrides?.codex?.[e.accountType];if(i){if(!await t.isModelAvailableForProvider("openai",i))throw new Error(`Model override '${i}' is not available for openai provider`);n=i}}else r?await t.isModelAvailableForProvider("openai",r)||(ui.log(`Model '${r}' is not available for openai provider, proceeding without model specification`),Y.inc("model.unavailable",1,{provider:"openai"}),n=void 0):!!v_&&await t.isModelAvailableForProvider("openai",v_)?(n=v_,ui.log(`Using default model: ${v_}`)):v_&&ui.log(`Default model ${v_} is not available, proceeding without model specification`);return n}var KN="netlify-ask-db",pot=`default_permissions = "${KN}"`,hot=()=>hu.join(bc.env.XDG_CONFIG_HOME??hu.join(pT.homedir(),".config"),"netlify"),mot=t=>["",`[permissions.${KN}]`,'description = "Ask mode: read-only filesystem, network access for database reads"','extends = ":read-only"',"",`[permissions.${KN}.filesystem]`,'":minimal" = "read"','"/" = "read"',`"${t}" = "write"`,"",`[permissions.${KN}.network]`,"enabled = true"];function got({aiGateway:t}){if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");bc.env.OPENAI_API_KEY=e,bc.env.OPENAI_BASE_URL=r}else if(!bc.env.OPENAI_API_KEY)throw new Error("OPENAI_API_KEY is not provided")}async function hW({config:t,persistSteps:e,sendSteps:r,aiGateway:n,continueSession:i,priorAgentSessionId:o,cwd:s=bc.cwd(),abortSignal:a,onSessionId:c,forceLowEffortForCreditWrapUp:l}){let{prompt:u}=t,{model:d}=t;got({aiGateway:n});let f=await fot({config:t,aiGateway:n,model:d}),p=[],h=[],m=[],g={},_=new Set,v=0,w=0,y,T,A,R,P,k=Em(t),L=`${bc.env.NVM_BIN}/node`,S=hu.join(pT.homedir(),".codex"),te=hu.join(S,"config.toml"),$=hu.join(S,"auth.json");try{await fT.mkdir(S,{recursive:!0});let V={OPENAI_API_KEY:bc.env.OPENAI_API_KEY};await fT.writeFile($,JSON.stringify(V,null,2),"utf-8"),ui.log("Created Codex auth.json file");let C=bc.env.OPENAI_BASE_URL,N=['forced_login_method = "api"'],U=Hl({creditWrapUpTurn:l}),F=Gl(t,{creditWrapUpTurn:l});k&&N.push(pot),C&&N.push('model_provider = "openai_proxy"',"","[model_providers.openai_proxy]",'name = "OpenAI Proxy"',`base_url = "${C}"`,'env_key = "OPENAI_API_KEY"','wire_api = "responses"',"supports_websockets = false","requires_openai_auth = true"),U&&N.push(...AEe()),F&&N.push(...xEe(F));let de=[];k&&(de=mot(hot()),N.push(...de)),await fT.writeFile(te,`${N.join(`
416
416
  `)}
417
417
  `,"utf-8"),ui.log("Wrote Codex config.toml",...de.length?[de.join(`
418
- `)]:[])}catch(V){let C=V instanceof Error?V.message:String(V);throw ui.warn("Failed to setup Codex config and credentials",{error:C}),new Error(`Codex setup failed: ${C}`)}let b=f==="gpt-5.6-sol",x=ym("codex",t.effort);t.effort&&!x&&ui.log(`Effort '${t.effort}' is not available on ${YN}; using its default`);let G=l?"low":x===ei?ei:x??(b?"low":void 0),me=G??"high",Ne=!!(i&&o),ve="mode"in t&&t.mode==="ask",Ge=!!k,$e=[jo(s,"codex"),"exec",...ve&&!Ge?["--sandbox","read-only"]:[],...Ne?["resume",o]:[],...ve?[]:["--yolo"],"--json",...G&&G!==ei?["-c",`model_reasoning_effort="${G}"`]:[],...f?["--model",f]:[]].filter(Boolean);ui.log(`Running ${L} ${$e.join(" ")}`);let He=Ft(L,$e,{all:!0,cwd:s,env:{...bc.env},stdin:"pipe",idleTimeout:$a,cancelSignal:a});He.stdin?.end(u);let ke=ll(()=>{e?.({steps:p,duration:w}),r?.({steps:h,duration:w}),h=[]},250),ce=(V,C)=>{let N={...V,id:v};v+=1,m.push(N),p.push(N),h.push(N),C||ke.flush(),ke(),C&&ke.flush()},he=f||"default";t.answeredInteraction||ce({title:`Using ${YN} with ${he}`,category:H.Environment},!0);let gt=dot.createInterface({input:He.all});gt.on("error",V=>{ui.error("Readline interface error",{error:V.message,stack:V.stack})}),gt.on("line",V=>{let C;try{C=JSON.parse(V)}catch{ui.log("Could not parse line",V);return}if(C?.duration_ms&&(w=C.duration_ms),C?.type==="thread.started"&&typeof C?.thread_id=="string"&&(A=C.thread_id,c?.(A)),C?.type==="item.started"&&C?.item?.type==="command_execution")g[C.item.id]=C.item;else if(C?.type==="item.completed"&&C?.item?.type==="command_execution"){let N=C.item,U=Sot(N);U&&ce(U,!0);let F=N.command?.match(/\.agents\/skills\/([^\s/]+)/)?.[1];if(F&&!_.has(F)){_.add(F);let de=Ps(F);Ua(ui,de),ce({title:`Use ${de}`,category:H.Skill,type:F},!0)}}else if(C?.type==="item.completed"&&C?.item?.type==="reasoning"){let N={title:"Reasoning",message:C.item.text,category:H.Reasoning};ce(N,!0)}else if(C?.type==="item.completed"&&C?.item?.type==="agent_message")y=C.item.text;else if(C?.type==="item.started"&&C?.item?.type==="mcp_tool_call"){let N=C.item,U=Npe(N.server)&&!P?Ag(N.tool,N.arguments,Ope):void 0;U&&"interaction"in U?(P=U.interaction,He.kill()):U&&(ui.warn("Ignoring malformed pause tool input",{toolUseId:N.id,tool:N.tool,issues:U.issues}),K.inc(U.metric,1))}else if(C?.type==="turn.completed"&&C.usage)R={input_tokens:C.usage.input_tokens,output_tokens:C.usage.output_tokens},al(R,f?{model:f}:{});else if(C?.type==="turn.failed"&&C?.error?.message)T=C.error.message;else if(C?.type==="local_shell_call"){let N=C;g[N.call_id]=N}else if(C?.type==="local_shell_call_output"){let N=C,U=g[N.call_id],F=Eot(U,N);F&&ce(F,!0);let oe=(U?.action?.command?.join(" ")??"").match(/\.agents\/skills\/([^\s/]+)/)?.[1];if(oe&&!_.has(oe)){_.add(oe);let Ce=Ps(oe);Ua(ui,Ce),ce({title:`Use ${Ce}`,category:H.Skill,type:oe},!0)}}else C?.type==="message"&&C.role==="assistant"?y=C.content?.map(N=>N.text).join(`
418
+ `)]:[])}catch(V){let C=V instanceof Error?V.message:String(V);throw ui.warn("Failed to setup Codex config and credentials",{error:C}),new Error(`Codex setup failed: ${C}`)}let b=f==="gpt-5.6-sol",x=ym("codex",t.effort);t.effort&&!x&&ui.log(`Effort '${t.effort}' is not available on ${YN}; using its default`);let G=l?"low":x===ei?ei:x??(b?"low":void 0),me=G??"high",Ne=!!(i&&o),ve="mode"in t&&t.mode==="ask",Ge=!!k,$e=[jo(s,"codex"),"exec",...ve&&!Ge?["--sandbox","read-only"]:[],...Ne?["resume",o]:[],...ve?[]:["--yolo"],"--json",...G&&G!==ei?["-c",`model_reasoning_effort="${G}"`]:[],...f?["--model",f]:[]].filter(Boolean);ui.log(`Running ${L} ${$e.join(" ")}`);let He=Ft(L,$e,{all:!0,cwd:s,env:{...bc.env},stdin:"pipe",idleTimeout:$a,cancelSignal:a});He.stdin?.end(u);let ke=ll(()=>{e?.({steps:p,duration:w}),r?.({steps:h,duration:w}),h=[]},250),ce=(V,C)=>{let N={...V,id:v};v+=1,m.push(N),p.push(N),h.push(N),C||ke.flush(),ke(),C&&ke.flush()},he=f||"default";t.answeredInteraction||ce({title:`Using ${YN} with ${he}`,category:H.Environment},!0);let gt=dot.createInterface({input:He.all});gt.on("error",V=>{ui.error("Readline interface error",{error:V.message,stack:V.stack})}),gt.on("line",V=>{let C;try{C=JSON.parse(V)}catch{ui.log("Could not parse line",V);return}if(C?.duration_ms&&(w=C.duration_ms),C?.type==="thread.started"&&typeof C?.thread_id=="string"&&(A=C.thread_id,c?.(A)),C?.type==="item.started"&&C?.item?.type==="command_execution")g[C.item.id]=C.item;else if(C?.type==="item.completed"&&C?.item?.type==="command_execution"){let N=C.item,U=Sot(N);U&&ce(U,!0);let F=N.command?.match(/\.agents\/skills\/([^\s/]+)/)?.[1];if(F&&!_.has(F)){_.add(F);let de=Ps(F);Ua(ui,de),ce({title:`Use ${de}`,category:H.Skill,type:F},!0)}}else if(C?.type==="item.completed"&&C?.item?.type==="reasoning"){let N={title:"Reasoning",message:C.item.text,category:H.Reasoning};ce(N,!0)}else if(C?.type==="item.completed"&&C?.item?.type==="agent_message")y=C.item.text;else if(C?.type==="item.started"&&C?.item?.type==="mcp_tool_call"){let N=C.item,U=Npe(N.server)&&!P?Ag(N.tool,N.arguments,Ope):void 0;U&&"interaction"in U?(P=U.interaction,He.kill()):U&&(ui.warn("Ignoring malformed pause tool input",{toolUseId:N.id,tool:N.tool,issues:U.issues}),Y.inc(U.metric,1))}else if(C?.type==="turn.completed"&&C.usage)R={input_tokens:C.usage.input_tokens,output_tokens:C.usage.output_tokens},al(R,f?{model:f}:{});else if(C?.type==="turn.failed"&&C?.error?.message)T=C.error.message;else if(C?.type==="local_shell_call"){let N=C;g[N.call_id]=N}else if(C?.type==="local_shell_call_output"){let N=C,U=g[N.call_id],F=Eot(U,N);F&&ce(F,!0);let oe=(U?.action?.command?.join(" ")??"").match(/\.agents\/skills\/([^\s/]+)/)?.[1];if(oe&&!_.has(oe)){_.add(oe);let Ce=Ps(oe);Ua(ui,Ce),ce({title:`Use ${Ce}`,category:H.Skill,type:oe},!0)}}else C?.type==="message"&&C.role==="assistant"?y=C.content?.map(N=>N.text).join(`
419
419
  `):C?.type==="message"&&C.role==="system"&&(T=C.content?.map(N=>N.text).join(`
420
420
  `))});let ne=!1;if(await He.catch(V=>{ne=bl(V,a);let C=Sm({catchError:V,runCmd:He,error:T,result:y,runnerName:"Codex"});T=C.error,y=C.result}),gt.close(),ke.flush(),P)return{steps:m,duration:w,agentSessionId:A,resolvedModel:f,effort:me,usage:R,pendingInteraction:P};let Fe=ne;return Fe&&(T=void 0),{steps:m,duration:w,result:await Wl({initialResult:y,agentName:YN,hasError:!!T}),error:Yl({error:T,agentName:YN}),isRetryableError:Kl(T),isProviderUnavailableError:Zl(T),resolvedModel:f,effort:me,agentSessionId:A,usage:R,...Fe?{aborted:!0}:{}}}var Xve=async()=>{let t=hu.join(pT.homedir(),".codex");await fT.rm(t,{recursive:!0,force:!0});let e=hu.join(pT.homedir(),".agents","skills");await fT.rm(e,{recursive:!0,force:!0})},Qve={baseDir:hu.join(pT.homedir(),".codex"),include:["sessions"]},_ot=new Set(["bash","-lc"]),yot=/^sed\s+-n\s+(?:'[^']*'|"[^"]*"|\S+)\s+(\S+)\s*$/,ebe=t=>{if(dc(t))return{title:"Generating the site",category:H.SiteGeneration};let e=t.match(yot);return e?{title:`Reading \`${e[1]}\``,category:H.FileRead}:{title:`Running \`${t}\``,category:H.RunCommand}},Sot=t=>{if(!t||t.type!=="command_execution")return null;let e=t.command;e=e.replace(/^(\/usr\/bin\/)?bash -lc ['"]/,"").replace(/['"]$/,"");let{command:r,heredocContent:n}=gz(e),{title:i,category:o}=ebe(r),s=t.aggregated_output?.trim();return n?s=`\`\`\`
421
421
  ${n}
@@ -438,7 +438,7 @@ ${s.trim()}
438
438
  \`\`\``),{title:n,message:s,category:i}};import qf from"fs/promises";import gT from"os";import mu from"path";import T_ from"process";import Aot from"readline";import hT from"fs/promises";import vot from"os";import ZN from"path";var tbe=ie("gemini_session"),bot=t=>t instanceof Error?t.message:String(t),Tot=t=>{let e=!1;if(Array.isArray(t?.toolCalls))for(let n of t.toolCalls)n&&typeof n=="object"&&"id"in n&&(delete n.id,e=!0);let r=typeof t?.content=="object"?t.content?.parts:void 0;if(Array.isArray(r))for(let n of r)n?.functionCall&&typeof n.functionCall=="object"&&"id"in n.functionCall&&(delete n.functionCall.id,e=!0);return e},wot=async t=>{let r=(await hT.readFile(t,"utf8")).split(`
439
439
  `),n=!1,i=r.map(o=>{if(!o.trim())return o;let s;try{s=JSON.parse(o)}catch{return o}return Tot(s)?(n=!0,JSON.stringify(s)):o});return n&&await hT.writeFile(t,i.join(`
440
440
  `),"utf8"),n},mW=async(t,e=ZN.join(vot.homedir(),".gemini"))=>{let r=ZN.join(e,"tmp"),n=t.slice(0,8),i;try{i=await hT.readdir(r)}catch{return}for(let o of i){let s=ZN.join(r,o,"chats"),a;try{a=await hT.readdir(s)}catch{continue}for(let c of a){if(!c.endsWith(".jsonl")||!c.includes(n))continue;let l=ZN.join(s,c);try{let u=(await hT.readFile(l,"utf8")).split(`
441
- `,1)[0];if(JSON.parse(u).sessionId===t)return l}catch{continue}}}},mT=async t=>{try{let e=await mW(t);return e?(await wot(e),!0):(tbe.log(`No gemini session file for ${t}; not resumable, using fresh session`),!1)}catch(e){return tbe.warn(`Could not sanitize gemini session ${t} for resume; using fresh session`,{error:bot(e)}),!1}};var gW={list_directory:{name:"List directory",category:H.Explore},read_file:{name:"Read file",category:H.FileRead},write_file:{name:"Edit file",category:H.FileWrite},glob:{name:"Find files",category:H.Explore},search_file_content:{name:"Search files",category:H.Explore},replace:{name:"Edit file",category:H.FileWrite},run_shell_command:{name:"Run command",category:H.RunCommand},web_fetch:{name:"Fetch web",category:H.Web},web_search:{name:"Search web",category:H.Web},google_web_search:{name:"Search web",category:H.Web},update_topic:{name:"Update topic",category:H.Plan},read_many_files:{name:"Read files",category:H.FileRead},save_memory:{name:"Memorize",category:H.Memorize},activate_skill:{name:"Use Skill",category:H.Skill},grep_search:{name:"Search files",category:H.Explore}};var Br=ie("runner_gemini"),JN="Gemini CLI",b_="gemini-3.8-flash",xot=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(Br.log(`${i} command completed with catch handler triggered`,{hadExistingError:!!r,hadExistingResult:!!n,resultLength:n?n.length:0,catchError:t?.message||"No error object",processExitCode:e.exitCode,processKilled:e.killed}),n?(Br.log("Preserving existing result despite catch handler being triggered"),r?{error:r,result:n}:{error:"Process completed with errors but result was captured",result:n}):(Br.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),Rot={low:"LOW",medium:"MEDIUM",high:"HIGH"},rbe=t=>!!t&&t.startsWith("gemini-3"),Cot=(t,{model:e,effort:r})=>{let n=t.modelConfigs?.customAliases??{};!r||!rbe(e)?(r&&Br.log(`Model '${e}' does not support thinkingLevel; running at the model default effort`),delete n[e]):n[e]={extends:"chat-base-3",modelConfig:{model:e,generateContentConfig:{thinkingConfig:{thinkingLevel:Rot[r]}}}},Object.keys(n).length!==0&&(t.modelConfigs={...t.modelConfigs,customAliases:n})},Iot=async({config:t,model:e,effort:r,creditWrapUpTurn:n}={})=>{let i=mu.join(gT.homedir(),".gemini"),o=mu.join(i,"settings.json");try{await qf.mkdir(i,{recursive:!0});let s={};try{let c=await qf.readFile(o,"utf-8");s=JSON.parse(c)}catch{Br.log("Creating new Gemini CLI settings file")}s.general||(s.general={}),s.general.previewFeatures||(s.general.previewFeatures=!0),s.model||(s.model={}),s.model.compressionThreshold!==.3&&(s.model.compressionThreshold=.3),s.skills||(s.skills={}),s.skills.enabled=!0,s.context||(s.context={}),s.context.fileName=["GEMINI.md","AGENTS.md"],Cot(s,{model:e,effort:r}),s.mcpServers={...s.mcpServers},delete s.mcpServers[Fs],delete s.mcpServers[Ci],Hl({creditWrapUpTurn:n})&&Object.assign(s.mcpServers,m3({trust:!0}));let a=Gl(t,{creditWrapUpTurn:n});a&&Object.assign(s.mcpServers,g3(a,{trust:!0,env:bEe()})),await qf.writeFile(o,JSON.stringify(s,null,2),"utf-8"),Br.log("Configured Gemini CLI settings (preview features and compression threshold)")}catch(s){Br.error("Failed to ensure Gemini CLI settings",{error:s.message}),K.inc("context.degraded",1,{component:"agent_config"})}},Pot=t=>{t?.category===H.Skill&&t.type&&Ua(Br,Ps(t.type))},Oot=({aiGateway:t})=>{if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");T_.env.GEMINI_API_KEY=e,T_.env.GOOGLE_GEMINI_BASE_URL=r}else if(!T_.env.GEMINI_API_KEY)throw new Error("GEMINI_API_KEY is not provided")},Not=async({aiGateway:t,config:e,model:r})=>{let n=r;if(t){let i=e.modelVersionOverrides?.gemini?.[e.accountType];if(i){if(!await t.isModelAvailableForProvider("gemini",i))throw new Error(`Model override '${i}' is not available for gemini provider`);n=i}n?i||await t.isModelAvailableForProvider("gemini",n)||(Br.log(`Model '${n}' is not available for gemini provider, proceeding without model specification`),K.inc("model.unavailable",1,{provider:"gemini"}),n=void 0):!!b_&&await t.isModelAvailableForProvider("gemini",b_)?(n=b_,Br.log(`Using default model: ${b_}`)):b_&&Br.log(`Default model ${b_} is not available, proceeding without model specification`)}return n},kot=async({config:t,cliPath:e})=>{let r=[`[[rule]]
441
+ `,1)[0];if(JSON.parse(u).sessionId===t)return l}catch{continue}}}},mT=async t=>{try{let e=await mW(t);return e?(await wot(e),!0):(tbe.log(`No gemini session file for ${t}; not resumable, using fresh session`),!1)}catch(e){return tbe.warn(`Could not sanitize gemini session ${t} for resume; using fresh session`,{error:bot(e)}),!1}};var gW={list_directory:{name:"List directory",category:H.Explore},read_file:{name:"Read file",category:H.FileRead},write_file:{name:"Edit file",category:H.FileWrite},glob:{name:"Find files",category:H.Explore},search_file_content:{name:"Search files",category:H.Explore},replace:{name:"Edit file",category:H.FileWrite},run_shell_command:{name:"Run command",category:H.RunCommand},web_fetch:{name:"Fetch web",category:H.Web},web_search:{name:"Search web",category:H.Web},google_web_search:{name:"Search web",category:H.Web},update_topic:{name:"Update topic",category:H.Plan},read_many_files:{name:"Read files",category:H.FileRead},save_memory:{name:"Memorize",category:H.Memorize},activate_skill:{name:"Use Skill",category:H.Skill},grep_search:{name:"Search files",category:H.Explore}};var Br=ie("runner_gemini"),JN="Gemini CLI",b_="gemini-3.8-flash",xot=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(Br.log(`${i} command completed with catch handler triggered`,{hadExistingError:!!r,hadExistingResult:!!n,resultLength:n?n.length:0,catchError:t?.message||"No error object",processExitCode:e.exitCode,processKilled:e.killed}),n?(Br.log("Preserving existing result despite catch handler being triggered"),r?{error:r,result:n}:{error:"Process completed with errors but result was captured",result:n}):(Br.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),Rot={low:"LOW",medium:"MEDIUM",high:"HIGH"},rbe=t=>!!t&&t.startsWith("gemini-3"),Cot=(t,{model:e,effort:r})=>{let n=t.modelConfigs?.customAliases??{};!r||!rbe(e)?(r&&Br.log(`Model '${e}' does not support thinkingLevel; running at the model default effort`),delete n[e]):n[e]={extends:"chat-base-3",modelConfig:{model:e,generateContentConfig:{thinkingConfig:{thinkingLevel:Rot[r]}}}},Object.keys(n).length!==0&&(t.modelConfigs={...t.modelConfigs,customAliases:n})},Iot=async({config:t,model:e,effort:r,creditWrapUpTurn:n}={})=>{let i=mu.join(gT.homedir(),".gemini"),o=mu.join(i,"settings.json");try{await qf.mkdir(i,{recursive:!0});let s={};try{let c=await qf.readFile(o,"utf-8");s=JSON.parse(c)}catch{Br.log("Creating new Gemini CLI settings file")}s.general||(s.general={}),s.general.previewFeatures||(s.general.previewFeatures=!0),s.model||(s.model={}),s.model.compressionThreshold!==.3&&(s.model.compressionThreshold=.3),s.skills||(s.skills={}),s.skills.enabled=!0,s.context||(s.context={}),s.context.fileName=["GEMINI.md","AGENTS.md"],Cot(s,{model:e,effort:r}),s.mcpServers={...s.mcpServers},delete s.mcpServers[Fs],delete s.mcpServers[Ci],Hl({creditWrapUpTurn:n})&&Object.assign(s.mcpServers,m3({trust:!0}));let a=Gl(t,{creditWrapUpTurn:n});a&&Object.assign(s.mcpServers,g3(a,{trust:!0,env:bEe()})),await qf.writeFile(o,JSON.stringify(s,null,2),"utf-8"),Br.log("Configured Gemini CLI settings (preview features and compression threshold)")}catch(s){Br.error("Failed to ensure Gemini CLI settings",{error:s.message}),Y.inc("context.degraded",1,{component:"agent_config"})}},Pot=t=>{t?.category===H.Skill&&t.type&&Ua(Br,Ps(t.type))},Oot=({aiGateway:t})=>{if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");T_.env.GEMINI_API_KEY=e,T_.env.GOOGLE_GEMINI_BASE_URL=r}else if(!T_.env.GEMINI_API_KEY)throw new Error("GEMINI_API_KEY is not provided")},Not=async({aiGateway:t,config:e,model:r})=>{let n=r;if(t){let i=e.modelVersionOverrides?.gemini?.[e.accountType];if(i){if(!await t.isModelAvailableForProvider("gemini",i))throw new Error(`Model override '${i}' is not available for gemini provider`);n=i}n?i||await t.isModelAvailableForProvider("gemini",n)||(Br.log(`Model '${n}' is not available for gemini provider, proceeding without model specification`),Y.inc("model.unavailable",1,{provider:"gemini"}),n=void 0):!!b_&&await t.isModelAvailableForProvider("gemini",b_)?(n=b_,Br.log(`Using default model: ${b_}`)):b_&&Br.log(`Default model ${b_} is not available, proceeding without model specification`)}return n},kot=async({config:t,cliPath:e})=>{let r=[`[[rule]]
442
442
  toolName = "web_fetch"
443
443
  decision = "allow"
444
444
  priority = 10
@@ -448,9 +448,9 @@ commandPrefix = [${i}]
448
448
  decision = "allow"
449
449
  priority = 20
450
450
  `),Br.log("Ask policy allows the read-only database query command",{allowedPrefixes:i})}let n=mu.join(gT.homedir(),".gemini","ask-policy.toml");return await qf.mkdir(mu.dirname(n),{recursive:!0}),await qf.writeFile(n,r.join(`
451
- `),"utf-8"),n};async function _W({config:t,persistSteps:e=void 0,sendSteps:r=void 0,aiGateway:n,continueSession:i=!1,priorAgentSessionId:o=void 0,cwd:s=T_.cwd(),cliPath:a="netlify",abortSignal:c=void 0,onSessionId:l=void 0,forceLowEffortForCreditWrapUp:u=void 0}){let{prompt:d}=t,f=ym("gemini",t.effort);t.effort&&!f&&Br.log(`Effort '${t.effort}' is not available on ${JN}; using its default`);let h=u?"low":f===ei?void 0:f;Oot({aiGateway:n});let m=await Not({aiGateway:n,config:t,model:t.model});await Iot({config:t,model:m,effort:h,creditWrapUpTurn:u});let g=[],_=[],v=[],w={},y=0,T=0,A,R,P,k,L,S=!!(i&&o),te=!1;S&&(te=await mT(o)),S&&!te&&(Br.log(`Gemini resume requested for session ${o} but it was not resumable; starting a fresh session`),K.inc("inference.native_resume",1,{outcome:"sanitize_failed"}));let $=t.mode==="ask",b=$?await kot({config:t,cliPath:a}):void 0,x=[jo(s,"gemini"),...m?["--model",m]:[],...$?["--approval-mode","default","--policy",b]:["--yolo"],"--skip-trust","--output-format","stream-json",...te?["-r",o]:[],"-p",""],M=`${T_.env.NVM_BIN}/node`;Br.log(`Running ${M} ${x.join(" ")}`);let Z=Ft(M,x,{all:!0,env:{...T_.env,GEMINI_CLI_NO_RELAUNCH:"1"},cwd:s,idleTimeout:$a,cancelSignal:c});Z.stdin?.end(d);let G=ll(()=>{e?.({steps:g,duration:T}),r?.({steps:_,duration:T}),_=[]},250),me=(ce,he)=>{ce.id=y,y+=1,v.push(ce),g.push(ce),_.push(ce),he||G.flush(),G(),he&&G.flush()},Ne=m||"default";t.answeredInteraction||me({title:`Using ${JN} with ${Ne}`,category:H.Environment},!0);let ve=Aot.createInterface({input:Z.all});ve.on("error",ce=>{Br.error("Readline interface error",{error:ce.message,stack:ce.stack})});let Ge="",$e=()=>{Ge&&me({message:Ge.trim(),category:H.AgentMessage}),Ge=""};ve.on("line",ce=>{let he;try{if(ce.startsWith("[API Error")){let gt=ce.match(/\[api error: (.+?)]$/i)?.[1];he={type:"error",value:oae(gt,!1)?.error?.message||gt||"Gemini encountered error"}}else he=JSON.parse(ce)}catch{return}if(he)switch(he.type==="init"&&typeof he.session_id=="string"&&(k=he.session_id,l?.(k)),["message","result"].includes(he.type)||$e(),he.type){case"message":{he.role!=="user"&&he.content&&(Ge+=he.content);break}case"tool_use":{let gt=he.tool_id&&!L?Ag(he.tool_name,he.parameters,DB):void 0;if(gt&&"interaction"in gt){L=gt.interaction,Z.kill();break}if(gt){Br.warn("Ignoring malformed pause tool input",{toolUseId:he.tool_id,tool:he.tool_name,issues:gt.issues}),K.inc(gt.metric,1);break}if(xg(he.tool_name,DB))break;let ne=gW[he.tool_name]?.name??he.tool_name,Fe=he.parameters?.file_path,V=Fe&&mu.relative(s,Fe),C=he.parameters?.command,N=he.tool_name==="activate_skill"&&he.parameters?.name,U=he.tool_name==="run_shell_command"&&dc(C),F=[ne,V&&`\`${V}\``,C&&`\`${C}\``].filter(Boolean).join(" ");if(N)F=`Use ${Ps(N)}`;else if(U)F="Generating the site";else if(he.tool_name==="grep_search"){let{dir_path:oe,pattern:Ce}=he.parameters||{};oe&&Ce?F=`Search in \`${oe}\` for \`${Ce}\``:oe?F=`Search in \`${oe}\``:Ce&&(F=`Search for \`${Ce}\``)}else if(he.tool_name==="update_topic"){let oe=he.parameters?.title;oe&&(F=`${ne} \`${oe}\``)}let de={title:F,category:U?H.SiteGeneration:gW[he.tool_name]?.category,...N&&{type:N}};w[he.tool_id]=de,G.flush();break}case"tool_result":{let gt=w[he.tool_id];gt&&(he.output&&(gt.message=`\`\`\`
451
+ `),"utf-8"),n};async function _W({config:t,persistSteps:e=void 0,sendSteps:r=void 0,aiGateway:n,continueSession:i=!1,priorAgentSessionId:o=void 0,cwd:s=T_.cwd(),cliPath:a="netlify",abortSignal:c=void 0,onSessionId:l=void 0,forceLowEffortForCreditWrapUp:u=void 0}){let{prompt:d}=t,f=ym("gemini",t.effort);t.effort&&!f&&Br.log(`Effort '${t.effort}' is not available on ${JN}; using its default`);let h=u?"low":f===ei?void 0:f;Oot({aiGateway:n});let m=await Not({aiGateway:n,config:t,model:t.model});await Iot({config:t,model:m,effort:h,creditWrapUpTurn:u});let g=[],_=[],v=[],w={},y=0,T=0,A,R,P,k,L,S=!!(i&&o),te=!1;S&&(te=await mT(o)),S&&!te&&(Br.log(`Gemini resume requested for session ${o} but it was not resumable; starting a fresh session`),Y.inc("inference.native_resume",1,{outcome:"sanitize_failed"}));let $=t.mode==="ask",b=$?await kot({config:t,cliPath:a}):void 0,x=[jo(s,"gemini"),...m?["--model",m]:[],...$?["--approval-mode","default","--policy",b]:["--yolo"],"--skip-trust","--output-format","stream-json",...te?["-r",o]:[],"-p",""],M=`${T_.env.NVM_BIN}/node`;Br.log(`Running ${M} ${x.join(" ")}`);let Z=Ft(M,x,{all:!0,env:{...T_.env,GEMINI_CLI_NO_RELAUNCH:"1"},cwd:s,idleTimeout:$a,cancelSignal:c});Z.stdin?.end(d);let G=ll(()=>{e?.({steps:g,duration:T}),r?.({steps:_,duration:T}),_=[]},250),me=(ce,he)=>{ce.id=y,y+=1,v.push(ce),g.push(ce),_.push(ce),he||G.flush(),G(),he&&G.flush()},Ne=m||"default";t.answeredInteraction||me({title:`Using ${JN} with ${Ne}`,category:H.Environment},!0);let ve=Aot.createInterface({input:Z.all});ve.on("error",ce=>{Br.error("Readline interface error",{error:ce.message,stack:ce.stack})});let Ge="",$e=()=>{Ge&&me({message:Ge.trim(),category:H.AgentMessage}),Ge=""};ve.on("line",ce=>{let he;try{if(ce.startsWith("[API Error")){let gt=ce.match(/\[api error: (.+?)]$/i)?.[1];he={type:"error",value:oae(gt,!1)?.error?.message||gt||"Gemini encountered error"}}else he=JSON.parse(ce)}catch{return}if(he)switch(he.type==="init"&&typeof he.session_id=="string"&&(k=he.session_id,l?.(k)),["message","result"].includes(he.type)||$e(),he.type){case"message":{he.role!=="user"&&he.content&&(Ge+=he.content);break}case"tool_use":{let gt=he.tool_id&&!L?Ag(he.tool_name,he.parameters,DB):void 0;if(gt&&"interaction"in gt){L=gt.interaction,Z.kill();break}if(gt){Br.warn("Ignoring malformed pause tool input",{toolUseId:he.tool_id,tool:he.tool_name,issues:gt.issues}),Y.inc(gt.metric,1);break}if(xg(he.tool_name,DB))break;let ne=gW[he.tool_name]?.name??he.tool_name,Fe=he.parameters?.file_path,V=Fe&&mu.relative(s,Fe),C=he.parameters?.command,N=he.tool_name==="activate_skill"&&he.parameters?.name,U=he.tool_name==="run_shell_command"&&dc(C),F=[ne,V&&`\`${V}\``,C&&`\`${C}\``].filter(Boolean).join(" ");if(N)F=`Use ${Ps(N)}`;else if(U)F="Generating the site";else if(he.tool_name==="grep_search"){let{dir_path:oe,pattern:Ce}=he.parameters||{};oe&&Ce?F=`Search in \`${oe}\` for \`${Ce}\``:oe?F=`Search in \`${oe}\``:Ce&&(F=`Search for \`${Ce}\``)}else if(he.tool_name==="update_topic"){let oe=he.parameters?.title;oe&&(F=`${ne} \`${oe}\``)}let de={title:F,category:U?H.SiteGeneration:gW[he.tool_name]?.category,...N&&{type:N}};w[he.tool_id]=de,G.flush();break}case"tool_result":{let gt=w[he.tool_id];gt&&(he.output&&(gt.message=`\`\`\`
452
452
  ${he.output.trim()}
453
- \`\`\``),me(gt,!0),Pot(gt));break}case"result":{T=he.stats?.duration_ms,he.stats&&(al(he.stats,m?{model:m}:{}),P=he.stats),he.status==="error"?R=he.error?.message:A=Ge.trim();break}case"error":{R=he.error;break}case"finished":break;case"init":break;default:{Br.warn("Unhandled message type:",he.type);break}}});let He=!1;if(await Z.catch(ce=>{He=bl(ce,c),{error:R,result:A}=xot({catchError:ce,runCmd:Z,error:R,result:A,runnerName:"Gemini"})}),ve.close(),L)return G.flush(),{steps:v,duration:T,agentSessionId:k,resolvedModel:m,usage:P,pendingInteraction:L};let ke=He;return ke&&(!A&&Ge.trim()&&(A=Ge.trim()),R=void 0),G.flush(),{steps:v,duration:T,result:await Wl({initialResult:A,agentName:JN,hasError:!!R}),error:Yl({error:R,agentName:JN}),isRetryableError:Kl(R),isProviderUnavailableError:Zl(R),resolvedModel:m,usage:P,agentSessionId:k,...h&&rbe(m)?{effort:h}:{},...ke?{aborted:!0}:{}}}var nbe=async()=>{let t=mu.join(gT.homedir(),".gemini");await qf.rm(t,{recursive:!0,force:!0});let e=mu.join(gT.homedir(),".agents","skills");await qf.rm(e,{recursive:!0,force:!0})},ibe={baseDir:mu.join(gT.homedir(),".gemini"),include:["tmp"]};import SW from"fs/promises";import lbe from"os";import _T from"path";import vW from"process";import Dot from"readline";import Mot from"os";import abe from"path";import yW from"fs";var obe=ie("opencode_install"),sbe="1.17.19",$ot=()=>abe.join(Mot.homedir(),".netlify-agent-runner","opencode"),XN=async t=>{let e=jo(t,"opencode");if(e)return e;let r=$ot(),n=abe.join(r,"node_modules",".bin","opencode");if(yW.existsSync(n))return n;yW.mkdirSync(r,{recursive:!0}),obe.log(`Installing opencode-ai@${sbe} on demand`);let i=Date.now();await Ft("npm",["install","--no-save","--no-audit","--no-fund","--prefix",r,`opencode-ai@${sbe}`],{cwd:r});let o=Date.now()-i;if(K.timing("opencode.install_duration",o),obe.log(`Installed opencode-ai in ${o}ms`),!yW.existsSync(n))throw new Error("OpenCode CLI binary not found after installing opencode-ai");return n};var Tc=ie("runner_opencode"),QN="OpenCode",ube="gateway",Lot="z-ai/glm-5.3-flash",Uot=new Set(["z-ai/glm-5.3-flash","deepseek/deepseek-v4-pro","x-ai/grok-4.6"]),Fot=(t,e)=>!t||!v0.includes(t)?t:e&&Uot.has(e)?"xhigh":"max",EW={bash:{name:"Run command",category:H.RunCommand},read:{name:"Read file",category:H.FileRead},write:{name:"Edit file",category:H.FileWrite},edit:{name:"Edit file",category:H.FileWrite},glob:{name:"Find files",category:H.Explore},grep:{name:"Search files",category:H.Explore},list:{name:"List directory",category:H.Explore},task:{name:"Task",category:H.Task},todowrite:{name:"Update task list",category:H.Todo},webfetch:{name:"Fetch web",category:H.Web},websearch:{name:"Search web",category:H.Web},skill:{name:"Use Skill",category:H.Skill}},cbe=t=>EW[t]?.name||t,zot=t=>Array.isArray(t)?t.flatMap(e=>{let{content:r,status:n}=e??{};return typeof r!="string"||!r?[]:[{name:r,value:typeof n=="string"&&n?n:"pending"}]}):[],jot=250,Bot=t=>{let e;try{e=JSON.parse(t)}catch{return{issues:"invalid_json"}}let r=hN.safeParse(e);return r.success?{questions:r.data.questions}:{issues:wg(r.error.issues)}},dbe=(t,e,r,n)=>{let i=!0,o=setInterval(async()=>{let s=await SW.readFile(t,"utf-8").catch(()=>{});if(s===void 0)return;clearInterval(o),await SW.rm(t,{force:!0}).catch(()=>{});let{value:a,issues:c}=e(s);if(a===void 0){Tc.warn(n.message,{filePath:t,issues:c}),K.inc(n.metric,1);return}i&&r(a)},jot);return o.unref(),{stop:()=>{i=!1,clearInterval(o)}}},qot=(t,e)=>dbe(t,r=>{let{questions:n,issues:i}=Bot(r);return n?{value:n}:{issues:i}},e,{message:"Ignoring malformed ask tool questions file",metric:"inference.malformed_ask"}),Vot=(t,e)=>dbe(t,r=>{let n;try{n=JSON.parse(r)}catch{return{issues:"invalid_json"}}let i=pN.safeParse(n);return i.success?{value:i.data}:{issues:wg(i.error.issues)}},e,{message:"Ignoring malformed authorization request file",metric:"inference.malformed_authorization"});async function Got({aiGateway:t,config:e,model:r}){let n=r;if(t){let i=t.isModelAvailable;if(!i)throw new Error("OpenCode runner requires a gateway with isModelAvailable support");let o=e.modelVersionOverrides?.opencode?.[e.accountType];o?n=o:r||(n=Ye().opencodeDefaultModel||Lot),n&&(await i(n)||Tc.log(`Model '${n}' not found in gateway catalog; proceeding anyway (gateway is authoritative, e.g. flag-gated OpenRouter models)`))}return n}function Hot({aiGateway:t,model:e,effort:r,questionsFilePath:n,connections:i}){if(!t)throw new Error("OpenCode runner requires the AI gateway");let{token:o,url:s}=t;if(!o||!s)throw new Error("No token or url provided from AI Gateway");let a=e?{[e]:{id:e,name:e,tool_call:!0,reasoning:!0,interleaved:{field:/^~?deepseek\//.test(e)?"reasoning_content":"reasoning_details"},...r?{options:{reasoningEffort:r}}:{}}}:{},c={$schema:"https://opencode.ai/config.json",provider:{[ube]:{api:"openai",name:"Netlify AI Gateway",options:{apiKey:o,baseURL:s},...Object.keys(a).length>0?{models:a}:{}}},...n||i?{mcp:{...n?TEe(n):{},...i?wEe(i):{}}}:{}};return{...vW.env,OPENCODE_CONFIG_CONTENT:JSON.stringify(c),OPENCODE_DISABLE_AUTOUPDATE:"1"}}async function bW({config:t,persistSteps:e,aiGateway:r,continueSession:n,priorAgentSessionId:i,cwd:o=vW.cwd(),abortSignal:s,onSessionId:a,forceLowEffortForCreditWrapUp:c}){let{prompt:l}=t,{model:u}=t,d=t.effort===ei,f=c?"low":d?void 0:t.effort,p="",h,m,g,_,v=0,w=0,y,T=await Got({config:t,aiGateway:r,model:u}),A=Fot(f,T);Tc.log(f?`Requesting reasoning effort '${f}' for model '${T}'${A===f?"":` (sent as '${A}')`}; ignored if unsupported`:`No reasoning effort requested for model '${T}'; running at its own default`);let R=Hl({creditWrapUpTurn:c})?await CEe():void 0,P=p3({creditWrapUpTurn:c})?await IEe():void 0,k=Gl(t,{requestFilePath:P?.filePath,creditWrapUpTurn:c}),L=Hot({aiGateway:r,model:T,effort:A,questionsFilePath:R?.filePath,connections:k}),S=[],te=[],$=0,b=Date.now(),x=await XN(o),M=["run","--format","json","--dangerously-skip-permissions","--agent","build",...T?["--model",`${ube}/${T}`]:[],...n?i?["--session",i]:["--continue"]:[]];Tc.log(`Running ${x} ${M.join(" ")}`);let Z=Ft(x,M,{all:!0,env:L,cwd:o,idleTimeout:$a,cancelSignal:s});Z.stdin?.end(l);let G=R?qot(R.filePath,V=>{y||(y={questions:V},Z.kill())}):void 0,me=P?Vot(P.filePath,V=>{y||(y={authorization:V},Z.kill())}):void 0,Ne=ll(()=>{e?.({steps:te,duration:Date.now()-b})},250),ve=(V,C)=>{let{wrapMessage:N,...U}=V,F=L0({...U,id:$});F.message&&N&&(F.message=`\`\`\`
453
+ \`\`\``),me(gt,!0),Pot(gt));break}case"result":{T=he.stats?.duration_ms,he.stats&&(al(he.stats,m?{model:m}:{}),P=he.stats),he.status==="error"?R=he.error?.message:A=Ge.trim();break}case"error":{R=he.error;break}case"finished":break;case"init":break;default:{Br.warn("Unhandled message type:",he.type);break}}});let He=!1;if(await Z.catch(ce=>{He=bl(ce,c),{error:R,result:A}=xot({catchError:ce,runCmd:Z,error:R,result:A,runnerName:"Gemini"})}),ve.close(),L)return G.flush(),{steps:v,duration:T,agentSessionId:k,resolvedModel:m,usage:P,pendingInteraction:L};let ke=He;return ke&&(!A&&Ge.trim()&&(A=Ge.trim()),R=void 0),G.flush(),{steps:v,duration:T,result:await Wl({initialResult:A,agentName:JN,hasError:!!R}),error:Yl({error:R,agentName:JN}),isRetryableError:Kl(R),isProviderUnavailableError:Zl(R),resolvedModel:m,usage:P,agentSessionId:k,...h&&rbe(m)?{effort:h}:{},...ke?{aborted:!0}:{}}}var nbe=async()=>{let t=mu.join(gT.homedir(),".gemini");await qf.rm(t,{recursive:!0,force:!0});let e=mu.join(gT.homedir(),".agents","skills");await qf.rm(e,{recursive:!0,force:!0})},ibe={baseDir:mu.join(gT.homedir(),".gemini"),include:["tmp"]};import SW from"fs/promises";import lbe from"os";import _T from"path";import vW from"process";import Dot from"readline";import Mot from"os";import abe from"path";import yW from"fs";var obe=ie("opencode_install"),sbe="1.17.19",$ot=()=>abe.join(Mot.homedir(),".netlify-agent-runner","opencode"),XN=async t=>{let e=jo(t,"opencode");if(e)return e;let r=$ot(),n=abe.join(r,"node_modules",".bin","opencode");if(yW.existsSync(n))return n;yW.mkdirSync(r,{recursive:!0}),obe.log(`Installing opencode-ai@${sbe} on demand`);let i=Date.now();await Ft("npm",["install","--no-save","--no-audit","--no-fund","--prefix",r,`opencode-ai@${sbe}`],{cwd:r});let o=Date.now()-i;if(Y.timing("opencode.install_duration",o),obe.log(`Installed opencode-ai in ${o}ms`),!yW.existsSync(n))throw new Error("OpenCode CLI binary not found after installing opencode-ai");return n};var Tc=ie("runner_opencode"),QN="OpenCode",ube="gateway",Lot="z-ai/glm-5.3-flash",Uot=new Set(["z-ai/glm-5.3-flash","deepseek/deepseek-v4-pro","x-ai/grok-4.6"]),Fot=(t,e)=>!t||!v0.includes(t)?t:e&&Uot.has(e)?"xhigh":"max",EW={bash:{name:"Run command",category:H.RunCommand},read:{name:"Read file",category:H.FileRead},write:{name:"Edit file",category:H.FileWrite},edit:{name:"Edit file",category:H.FileWrite},glob:{name:"Find files",category:H.Explore},grep:{name:"Search files",category:H.Explore},list:{name:"List directory",category:H.Explore},task:{name:"Task",category:H.Task},todowrite:{name:"Update task list",category:H.Todo},webfetch:{name:"Fetch web",category:H.Web},websearch:{name:"Search web",category:H.Web},skill:{name:"Use Skill",category:H.Skill}},cbe=t=>EW[t]?.name||t,zot=t=>Array.isArray(t)?t.flatMap(e=>{let{content:r,status:n}=e??{};return typeof r!="string"||!r?[]:[{name:r,value:typeof n=="string"&&n?n:"pending"}]}):[],jot=250,Bot=t=>{let e;try{e=JSON.parse(t)}catch{return{issues:"invalid_json"}}let r=hN.safeParse(e);return r.success?{questions:r.data.questions}:{issues:wg(r.error.issues)}},dbe=(t,e,r,n)=>{let i=!0,o=setInterval(async()=>{let s=await SW.readFile(t,"utf-8").catch(()=>{});if(s===void 0)return;clearInterval(o),await SW.rm(t,{force:!0}).catch(()=>{});let{value:a,issues:c}=e(s);if(a===void 0){Tc.warn(n.message,{filePath:t,issues:c}),Y.inc(n.metric,1);return}i&&r(a)},jot);return o.unref(),{stop:()=>{i=!1,clearInterval(o)}}},qot=(t,e)=>dbe(t,r=>{let{questions:n,issues:i}=Bot(r);return n?{value:n}:{issues:i}},e,{message:"Ignoring malformed ask tool questions file",metric:"inference.malformed_ask"}),Vot=(t,e)=>dbe(t,r=>{let n;try{n=JSON.parse(r)}catch{return{issues:"invalid_json"}}let i=pN.safeParse(n);return i.success?{value:i.data}:{issues:wg(i.error.issues)}},e,{message:"Ignoring malformed authorization request file",metric:"inference.malformed_authorization"});async function Got({aiGateway:t,config:e,model:r}){let n=r;if(t){let i=t.isModelAvailable;if(!i)throw new Error("OpenCode runner requires a gateway with isModelAvailable support");let o=e.modelVersionOverrides?.opencode?.[e.accountType];o?n=o:r||(n=Ye().opencodeDefaultModel||Lot),n&&(await i(n)||Tc.log(`Model '${n}' not found in gateway catalog; proceeding anyway (gateway is authoritative, e.g. flag-gated OpenRouter models)`))}return n}function Hot({aiGateway:t,model:e,effort:r,questionsFilePath:n,connections:i}){if(!t)throw new Error("OpenCode runner requires the AI gateway");let{token:o,url:s}=t;if(!o||!s)throw new Error("No token or url provided from AI Gateway");let a=e?{[e]:{id:e,name:e,tool_call:!0,reasoning:!0,interleaved:{field:/^~?deepseek\//.test(e)?"reasoning_content":"reasoning_details"},...r?{options:{reasoningEffort:r}}:{}}}:{},c={$schema:"https://opencode.ai/config.json",provider:{[ube]:{api:"openai",name:"Netlify AI Gateway",options:{apiKey:o,baseURL:s},...Object.keys(a).length>0?{models:a}:{}}},...n||i?{mcp:{...n?TEe(n):{},...i?wEe(i):{}}}:{}};return{...vW.env,OPENCODE_CONFIG_CONTENT:JSON.stringify(c),OPENCODE_DISABLE_AUTOUPDATE:"1"}}async function bW({config:t,persistSteps:e,aiGateway:r,continueSession:n,priorAgentSessionId:i,cwd:o=vW.cwd(),abortSignal:s,onSessionId:a,forceLowEffortForCreditWrapUp:c}){let{prompt:l}=t,{model:u}=t,d=t.effort===ei,f=c?"low":d?void 0:t.effort,p="",h,m,g,_,v=0,w=0,y,T=await Got({config:t,aiGateway:r,model:u}),A=Fot(f,T);Tc.log(f?`Requesting reasoning effort '${f}' for model '${T}'${A===f?"":` (sent as '${A}')`}; ignored if unsupported`:`No reasoning effort requested for model '${T}'; running at its own default`);let R=Hl({creditWrapUpTurn:c})?await CEe():void 0,P=p3({creditWrapUpTurn:c})?await IEe():void 0,k=Gl(t,{requestFilePath:P?.filePath,creditWrapUpTurn:c}),L=Hot({aiGateway:r,model:T,effort:A,questionsFilePath:R?.filePath,connections:k}),S=[],te=[],$=0,b=Date.now(),x=await XN(o),M=["run","--format","json","--dangerously-skip-permissions","--agent","build",...T?["--model",`${ube}/${T}`]:[],...n?i?["--session",i]:["--continue"]:[]];Tc.log(`Running ${x} ${M.join(" ")}`);let Z=Ft(x,M,{all:!0,env:L,cwd:o,idleTimeout:$a,cancelSignal:s});Z.stdin?.end(l);let G=R?qot(R.filePath,V=>{y||(y={questions:V},Z.kill())}):void 0,me=P?Vot(P.filePath,V=>{y||(y={authorization:V},Z.kill())}):void 0,Ne=ll(()=>{e?.({steps:te,duration:Date.now()-b})},250),ve=(V,C)=>{let{wrapMessage:N,...U}=V,F=L0({...U,id:$});F.message&&N&&(F.message=`\`\`\`
454
454
  ${F.message}
455
455
  \`\`\``),$+=1,S.push(F),te.push(F),C||Ne.flush(),Ne(),C&&Ne.flush()},Ge=T||"default";t.answeredInteraction||ve({title:`Using ${QN} with ${Ge}`,category:H.Environment},!0);let $e=Dot.createInterface({input:Z.all});$e.on("error",V=>{Tc.error("Readline interface error",{error:V.message,stack:V.stack})});let He="",ke,ce=new Set,he=()=>{He&&(ve({message:He,category:H.AgentMessage}),ke=He,He="")};$e.on("line",V=>{let C;try{C=JSON.parse(V)}catch{Tc.log("Could not parse line",V);return}switch(C.sessionID&&C.sessionID!==p&&(p=C.sessionID,a?.(p)),C.type){case"step_start":{he();break}case"text":{let N=C.part?.text;N&&(He+=N);break}case"reasoning":{he();let N=C.part?.text;N&&ve({title:"Reasoning",message:N,category:H.Reasoning},!0);break}case"tool_use":{he();let N=C.part?.tool;if(!N)break;let U=C.part?.state?.input??{},F=C.part?.state?.status,de=C.part?.state?.output,oe=C.part?.state?.error;if(xg(N,Ppe)){F==="error"&&Tc.warn("Pause tool call rejected before it could pause the run",{tool:N,error:oe});break}if(F==="error"&&(v+=1),(F==="completed"||F==="error")&&(w+=1),N==="skill"){let we=typeof U.name=="string"?U.name:void 0;if(we){let rt=Ps(we);Ua(Tc,rt),ve({title:`Use ${rt}`,category:H.Skill,type:we},!0);break}}if(N==="todowrite"){let we=zot(U.todos);ve({title:cbe(N),category:we.length>0?EW.todowrite.category:H.Tool,...we.length>0?{tasks:we}:{}},!0);break}let Ce=typeof U.command=="string"?U.command:void 0,bt=Ce?dc(Ce):!1,Cr=typeof U.path=="string"&&U.path||typeof U.file_path=="string"&&U.file_path||typeof U.pattern=="string"&&U.pattern||void 0,_t,Rn;if(bt)_t="Generating the site",Rn=H.SiteGeneration;else if(Ce&&N==="bash")_t=`Running \`${Ce}\``,Rn=H.RunCommand;else{let we=Cr&&`\`${_T.relative(o,Cr)}\``;_t=[cbe(N),we].filter(Boolean).join(" "),Rn=EW[N]?.category||H.AgentMessage}let at,ft=["bash","read","glob","grep","list","webfetch","websearch"].includes(N);oe?at=`\`\`\`
456
456
  ${oe.trim()}
@@ -480,8 +480,8 @@ case "$1" in
480
480
  exit 1
481
481
  ;;
482
482
  esac
483
- `,_be=async()=>{let t="/tmp/netlify-git-wrapper",e=Kot.join(t,"git"),r="/usr/bin/git";try{let n=(A_.env.PATH||"").split(":").filter(i=>i!==t).join(":");r=Yot("which git",{env:{...A_.env,PATH:n}}).toString().trim()||r}catch{}try{await mbe.mkdir(t,{recursive:!0}),await mbe.writeFile(e,Jot(r),{mode:493}),A_.env.PATH?.split(":").includes(t)||(A_.env.PATH=`${t}:${A_.env.PATH}`),A_.env.NETLIFY_INTERNAL_GIT="0",gbe.info("Installed git wrapper to restrict the agent to read-only git commands")}catch(n){gbe.warn("Failed to install git wrapper",{error:n?.message||n}),K.inc("context.degraded",1,{component:"git_wrapper"})}};import a9 from"fs/promises";import Cpt from"os";import c9 from"path";import{readFile as Wk}from"fs/promises";import Rc from"fs/promises";import TRe from"os";import Cc from"path";import{rm as n9}from"fs/promises";import{resolve as Xot}from"path";var Qot=".netlify/cache/",Vf=function({cacheDir:t=Qot,cwd:e="."}={}){return Xot(e,t)};import{promises as cft}from"fs";import{basename as Yxe,dirname as Kxe,join as lft}from"path";import wdt from"process";import Adt from"events";import At from"path";import xdt from"os";async function yT(t,e,{concurrency:r=Number.POSITIVE_INFINITY,stopOnError:n=!0,signal:i}={}){return new Promise((o,s)=>{if(t[Symbol.iterator]===void 0&&t[Symbol.asyncIterator]===void 0)throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof t})`);if(typeof e!="function")throw new TypeError("Mapper function is required");if(!(Number.isSafeInteger(r)&&r>=1||r===Number.POSITIVE_INFINITY))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${r}\` (${typeof r})`);let a=[],c=[],l=new Map,u=!1,d=!1,f=!1,p=0,h=0,m=t[Symbol.iterator]===void 0?t[Symbol.asyncIterator]():t[Symbol.iterator](),g=()=>{w(i.reason)},_=()=>{i?.removeEventListener("abort",g)},v=T=>{o(T),_()},w=T=>{u=!0,d=!0,s(T),_()};i&&(i.aborted&&w(i.reason),i.addEventListener("abort",g,{once:!0}));let y=async()=>{if(d)return;let T=await m.next(),A=h;if(h++,T.done){if(f=!0,p===0&&!d){if(!n&&c.length>0){w(new AggregateError(c));return}if(d=!0,l.size===0){v(a);return}let R=[];for(let[P,k]of a.entries())l.get(P)!==ybe&&R.push(k);v(R)}return}p++,(async()=>{try{let R=await T.value;if(d)return;let P=await e(R,A);P===ybe&&l.set(A,P),a[A]=P,p--,await y()}catch(R){if(n)w(R);else{c.push(R),p--;try{await y()}catch(P){w(P)}}}})()};(async()=>{for(let T=0;T<r;T++){try{await y()}catch(A){w(A);break}if(f||u)break}})()})}var ybe=Symbol("skip");import Hf from"path";import ycr,{constants as NW}from"fs";import kW from"fs/promises";var wW=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},AW=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Sbe=t=>globalThis.DOMException===void 0?new AW(t):new DOMException(t),Ebe=t=>{let e=t.reason===void 0?Sbe("This operation was aborted."):t.reason;return e instanceof Error?e:Sbe(e)};function xW(t,e){let{milliseconds:r,fallback:n,message:i,customTimers:o={setTimeout,clearTimeout}}=e,s,a,l=new Promise((u,d)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(e.signal){let{signal:p}=e;p.aborted&&d(Ebe(p)),a=()=>{d(Ebe(p))},p.addEventListener("abort",a,{once:!0})}if(r===Number.POSITIVE_INFINITY){t.then(u,d);return}let f=new wW;s=o.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(p){d(p)}return}typeof t.cancel=="function"&&t.cancel(),i===!1?u():i instanceof Error?d(i):(f.message=i??`Promise timed out after ${r} milliseconds`,d(f))},r),(async()=>{try{u(await t)}catch(p){d(p)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{o.clearTimeout.call(void 0,s),s=void 0},l}var est=t=>{let e=t.addEventListener||t.on||t.addListener,r=t.removeEventListener||t.off||t.removeListener;if(!e||!r)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:r.bind(t)}};function tst(t,e,r){let n,i=new Promise((o,s)=>{if(r={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...r},!(r.count>=0&&(r.count===Number.POSITIVE_INFINITY||Number.isInteger(r.count))))throw new TypeError("The `count` option should be at least 0 or more");r.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=est(t),d=(...p)=>{let h=r.multiArgs?p:p[0];r.filter&&!r.filter(h)||(c.push(h),r.count===c.length&&(n(),o(c)))},f=p=>{n(),s(p)};n=()=>{for(let p of a)u(p,d);for(let p of r.rejectionEvents)u(p,f)};for(let p of a)l(p,d);for(let p of r.rejectionEvents)l(p,f);r.signal&&r.signal.addEventListener("abort",()=>{f(r.signal.reason)},{once:!0}),r.resolveImmediately&&o(c)});if(i.cancel=n,typeof r.timeout=="number"){let o=xW(i,{milliseconds:r.timeout});return o.cancel=n,o}return i}function ek(t,e,r){typeof r=="function"&&(r={filter:r}),r={...r,count:1,resolveImmediately:!1};let n=tst(t,e,r),i=n.then(o=>o[0]);return i.cancel=n.cancel,i}var qn=class extends Error{constructor(e,{cause:r}={}){super(e,{cause:r}),Object.assign(this,r),this.name="CopyFileError"}};var es=pn(Obe(),1);import{promisify as ST}from"util";var dcr=ST(es.default.stat),fst=ST(es.default.lstat),pst=ST(es.default.utimes),hst=ST(es.default.chmod),mst=ST(es.default.mkdir),fcr=es.default.closeSync.bind(es.default),Nbe=es.default.createWriteStream.bind(es.default);async function kbe(t,e){let r=es.default.createReadStream(t,e);try{await ek(r,["readable","end"])}catch(n){throw new qn(`Cannot read from \`${t}\`: ${n.message}`,{cause:n})}return r}var OW=t=>fst(t).catch(e=>{throw new qn(`lstat \`${t}\` failed: ${e.message}`,{cause:e})}),Mbe=(t,e,r)=>pst(t,e,r).catch(n=>{throw new qn(`utimes \`${t}\` failed: ${n.message}`,{cause:n})}),$be=(t,e)=>hst(t,e).catch(r=>{throw new qn(`chmod \`${t}\` failed: ${r.message}`,{cause:r})});var Dbe=(t,e)=>mst(t,{...e,recursive:!0}).catch(r=>{throw new qn(`Cannot create directory \`${t}\`: ${r.message}`,{cause:r})});var _st=(t,e,r)=>({sourcePath:Hf.resolve(t,e),destinationPath:Hf.resolve(t,r)}),yst=(t,e)=>{if(!t.isFile())throw Object.assign(new qn(`EISDIR: illegal operation on a directory '${e}'`),{errno:-21,code:"EISDIR",source:e})};async function Lbe(t,e,r={}){if(!t||!e)throw new qn("`source` and `destination` required");r.cwd&&({sourcePath:t,destinationPath:e}=_st(r.cwd,t,e)),r={overwrite:!0,...r};let n=await OW(t),{size:i}=n;yst(n,t);let o=Hf.dirname(e);if(Hf.parse(o).root===o||await Dbe(Hf.dirname(e),{mode:r.directoryMode}),typeof r.onProgress=="function"){let a=await kbe(t),c=Nbe(e,{flags:r.overwrite?"w":"wx"}),l=p=>{r.onProgress({sourcePath:Hf.resolve(t),destinationPath:Hf.resolve(e),size:i,writtenBytes:p,percent:p===i?1:p/i})},u=-1;a.on("data",()=>{let p=c.bytesWritten,h=p===i?1:p/i;(h===1||h-u>=.01)&&(u=h,l(p))});let d;a.once("error",p=>{d=new qn(`Cannot read from \`${t}\`: ${p.message}`,{cause:p})});let f=!1;try{let p=ek(c,"close");a.pipe(c),await p,l(i),f=!0}catch(p){throw new qn(`Cannot write to \`${e}\`: ${p.message}`,{cause:p})}if(d)throw d;if(f){let p=await OW(t);return Promise.all([Mbe(e,p.atime,p.mtime).catch(h=>{if(h.code!=="EPERM")throw h}),$be(e,p.mode)])}}else{let a=r.overwrite?NW.COPYFILE_FICLONE:NW.COPYFILE_FICLONE|NW.COPYFILE_EXCL;try{await kW.copyFile(t,e,a),await Promise.all([kW.utimes(e,n.atime,n.mtime).catch(c=>{if(c.code!=="EPERM")throw c}),kW.chmod(e,n.mode)])}catch(c){throw new qn(c.message,{cause:c})}}}async function MW(t,e,r){return(await yT(t,(i,o)=>Promise.all([e(i,o),i]),r)).filter(i=>!!i[0]).map(i=>i[1])}import exe from"process";import _dt from"fs";import U_ from"path";import{on as Sst,once as Est}from"events";import{PassThrough as vst}from"stream";import{finished as zbe}from"stream/promises";function UW(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)DW(i);let e=t.some(({readableObjectMode:i})=>i),r=bst(t,e),n=new $W({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return t.length===0&&qbe(n),n}var bst=(t,e)=>{if(t.length===0)return 16384;let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},$W=class extends vst{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;add(e){DW(e),!this.#e.has(e)&&(this.#e.add(e),this.#n??=Tst(this,this.#e),xst({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#t,onFinished:this.#n}),e.pipe(this,{end:!1}))}remove(e){return DW(e),this.#e.has(e)?(e.unpipe(this),!0):!1}},Tst=async(t,e)=>{ok(t,Ube);let r=new AbortController;try{await Promise.race([wst(t,r),Ast(t,e,r)])}finally{r.abort(),ok(t,-Ube)}},wst=async(t,{signal:e})=>{await zbe(t,{signal:e,cleanup:!0})},Ast=async(t,e,{signal:r})=>{for await(let[n]of Sst(t,"unpipe",{signal:r}))e.has(n)&&n.emit(Bbe)},DW=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},xst=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:o})=>{ok(t,Fbe);let s=new AbortController;try{await Promise.race([Rst(o,e),Cst({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:s}),Ist({stream:e,streams:r,ended:n,aborted:i,controller:s})])}finally{s.abort(),ok(t,-Fbe)}r.size===n.size+i.size&&(n.size===0&&i.size>0?LW(t):qbe(t))},jbe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Rst=async(t,e)=>{try{await t,LW(e)}catch(r){jbe(r)?LW(e):Vbe(e,r)}},Cst=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:o}})=>{try{await zbe(e,{signal:o,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(s){if(o.aborted||!r.has(e))return;jbe(s)?i.add(e):Vbe(t,s)}},Ist=async({stream:t,streams:e,ended:r,aborted:n,controller:{signal:i}})=>{await Est(t,Bbe,{signal:i}),e.delete(t),r.delete(t),n.delete(t)},Bbe=Symbol("unpipe"),qbe=t=>{t.writable&&t.end()},LW=t=>{(t.readable||t.writable)&&t.destroy()},Vbe=(t,e)=>{t.destroyed||(t.once("error",Pst),t.destroy(e))},Pst=()=>{},ok=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},Ube=2,Fbe=1;var F_=pn(xT(),1);import But from"fs";import qut from"fs/promises";async function wK(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await qut[t](r))[e]()}catch(n){if(n.code==="ENOENT")return!1;throw n}}function AK(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return But[t](r)[e]()}catch(n){if(n.code==="ENOENT")return!1;throw n}}var Jlr=wK.bind(void 0,"stat","isFile"),$Ae=wK.bind(void 0,"stat","isDirectory"),Xlr=wK.bind(void 0,"lstat","isSymbolicLink"),Qlr=AK.bind(void 0,"statSync","isFile"),DAe=AK.bind(void 0,"statSync","isDirectory"),eur=AK.bind(void 0,"lstatSync","isSymbolicLink");var kK=pn(xT(),1),GAe=pn(NK(),1);import udt from"process";import ddt from"fs";import fdt from"fs/promises";import L_ from"path";function D_(t){return t.startsWith("\\\\?\\")?t:t.replace(/\\/g,"/")}var CT=t=>t[0]==="!";var pdt=["**/node_modules","**/flow-typed","**/coverage","**/.git"],HAe={absolute:!0,dot:!0},WAe="**/.gitignore",hdt=(t,e)=>CT(t)?"!"+L_.posix.join(e,t.slice(1)):L_.posix.join(e,t),mdt=(t,e)=>{let r=D_(L_.relative(e,L_.dirname(t.filePath)));return t.content.split(/\r?\n/).filter(n=>n&&!n.startsWith("#")).map(n=>hdt(n,r))},gdt=(t,e)=>{if(e=D_(e),L_.isAbsolute(t)){if(D_(t).startsWith(e))return L_.relative(e,t);throw new Error(`Path ${t} is not in cwd ${e}`)}return t},YAe=(t,e)=>{let r=t.flatMap(i=>mdt(i,e)),n=(0,GAe.default)().add(r);return i=>(i=ti(i),i=gdt(i,e),i?n.ignores(D_(i)):!1)},KAe=(t={})=>({cwd:ti(t.cwd)??udt.cwd(),suppressErrors:!!t.suppressErrors,deep:typeof t.deep=="number"?t.deep:Number.POSITIVE_INFINITY,ignore:[...t.ignore??[],...pdt]}),ZAe=async(t,e)=>{let{cwd:r,suppressErrors:n,deep:i,ignore:o}=KAe(e),s=await(0,kK.default)(t,{cwd:r,suppressErrors:n,deep:i,ignore:o,...HAe}),a=await Promise.all(s.map(async c=>({filePath:c,content:await fdt.readFile(c,"utf8")})));return YAe(a,r)},JAe=(t,e)=>{let{cwd:r,suppressErrors:n,deep:i,ignore:o}=KAe(e),a=kK.default.sync(t,{cwd:r,suppressErrors:n,deep:i,ignore:o,...HAe}).map(c=>({filePath:c,content:ddt.readFileSync(c,"utf8")}));return YAe(a,r)};var ydt=t=>{if(t.some(e=>typeof e!="string"))throw new TypeError("Patterns must be a string or an array of strings")},txe=(t,e)=>{let r=CT(t)?t.slice(1):t;return U_.isAbsolute(r)?r:U_.join(e,r)},rxe=({directoryPath:t,files:e,extensions:r})=>{let n=r?.length>0?`.${r.length>1?`{${r.join(",")}}`:r[0]}`:"";return e?e.map(i=>U_.posix.join(t,`**/${U_.extname(i)?i:`${i}${n}`}`)):[U_.posix.join(t,`**${n?`/*${n}`:""}`)]},XAe=async(t,{cwd:e=exe.cwd(),files:r,extensions:n}={})=>(await Promise.all(t.map(async o=>await $Ae(txe(o,e))?rxe({directoryPath:o,files:r,extensions:n}):o))).flat(),QAe=(t,{cwd:e=exe.cwd(),files:r,extensions:n}={})=>t.flatMap(i=>DAe(txe(i,e))?rxe({directoryPath:i,files:r,extensions:n}):i),MK=t=>(t=[...new Set([t].flat())],ydt(t),t),Sdt=t=>{if(!t)return;let e;try{e=_dt.statSync(t)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},nxe=(t={})=>(t={...t,ignore:t.ignore??[],expandDirectories:t.expandDirectories??!0,cwd:ti(t.cwd)},Sdt(t.cwd),t),ixe=t=>async(e,r)=>t(MK(e),nxe(r)),Lk=t=>(e,r)=>t(MK(e),nxe(r)),oxe=t=>{let{ignoreFiles:e,gitignore:r}=t,n=e?MK(e):[];return r&&n.push(WAe),n},Edt=async t=>{let e=oxe(t);return axe(e.length>0&&await ZAe(e,t))},sxe=t=>{let e=oxe(t);return axe(e.length>0&&JAe(e,t))},axe=t=>{let e=new Set;return r=>{let n=U_.normalize(r.path??r);return e.has(n)||t&&t(n)?!1:(e.add(n),!0)}},cxe=(t,e)=>t.flat().filter(r=>e(r)),lxe=(t,e)=>{let r=[];for(;t.length>0;){let n=t.findIndex(o=>CT(o));if(n===-1){r.push({patterns:t,options:e});break}let i=t[n].slice(1);for(let o of r)o.options.ignore.push(i);n!==0&&r.push({patterns:t.slice(0,n),options:{...e,ignore:[...e.ignore,i]}}),t=t.slice(n+1)}return r},uxe=(t,e)=>({...e?{cwd:e}:{},...Array.isArray(t)?{files:t}:t}),dxe=async(t,e)=>{let r=lxe(t,e),{cwd:n,expandDirectories:i}=e;if(!i)return r;let o=uxe(i,n);return Promise.all(r.map(async s=>{let{patterns:a,options:c}=s;return[a,c.ignore]=await Promise.all([XAe(a,o),XAe(c.ignore,{cwd:n})]),{patterns:a,options:c}}))},$K=(t,e)=>{let r=lxe(t,e),{cwd:n,expandDirectories:i}=e;if(!i)return r;let o=uxe(i,n);return r.map(s=>{let{patterns:a,options:c}=s;return a=QAe(a,o),c.ignore=QAe(c.ignore,{cwd:n}),{patterns:a,options:c}})},vur=ixe(async(t,e)=>{let[r,n]=await Promise.all([dxe(t,e),Edt(e)]),i=await Promise.all(r.map(o=>(0,F_.default)(o.patterns,o.options)));return cxe(i,n)}),fxe=Lk((t,e)=>{let r=$K(t,e),n=sxe(e),i=r.map(o=>F_.default.sync(o.patterns,o.options));return cxe(i,n)}),bur=Lk((t,e)=>{let r=$K(t,e),n=sxe(e),i=r.map(s=>F_.default.stream(s.patterns,s.options));return UW(i).filter(s=>n(s))}),Zf=Lk((t,e)=>t.some(r=>F_.default.isDynamicPattern(r,e))),Tur=ixe(dxe),wur=Lk($K),{convertPathToPattern:Aur}=F_.default;var hxe=pn(sY(),1);var Au=class extends Error{constructor(e,{cause:r}={}){super(e,{cause:r}),Object.assign(this,r),this.name="CpyError"}};import Fk from"path";import pxe from"fs";var vdt=["^npm-debug\\.log$","^\\..*\\.swp$","^\\.DS_Store$","^\\.AppleDouble$","^\\.LSOverride$","^Icon\\r$","^\\._.*","^\\.Spotlight-V100(?:$|\\/)","\\.Trashes","^__MACOSX$","~$","^Thumbs\\.db$","^ehthumbs\\.db$","^[Dd]esktop\\.ini$","@eaDir$"],bdt=new RegExp(vdt.join("|"));function Tdt(t){return bdt.test(t)}function Uk(t){return!Tdt(t)}var IT=class{constructor(e,r,n){this.path=e,this.originalPath=e,this.destination=r,this.options=n,this.isDirectory=!1,!Zf(e)&&pxe.existsSync(e)&&pxe.lstatSync(e).isDirectory()&&(this.path=[e,"**"].join("/"),this.isDirectory=!0)}get name(){return Fk.basename(this.originalPath)}get normalizedPath(){let e=this.originalPath.split("/"),r=e.findIndex(i=>i?Zf(i):!1),n=e.slice(0,r).join("/");return n?Fk.isAbsolute(n)?n:Fk.join(this.options.cwd,n):this.destination}hasMagic(){return Zf(this.options.flat?this.path:this.originalPath)}getMatches(){let e=fxe(this.path,{...this.options,dot:!0,absolute:!0,onlyFiles:!0});return this.options.ignoreJunk&&(e=e.filter(r=>Uk(Fk.basename(r)))),e}};var Rdt={ignoreJunk:!0,flat:!1,cwd:wdt.cwd()},DK=class{constructor(e,r,n){this.path=e.split("/").join(At.sep),this.relativePath=r.split("/").join(At.sep),this.pattern=n,Object.freeze(this)}get name(){return At.basename(this.path)}get nameWithoutExtension(){return At.basename(this.path,At.extname(this.path))}get extension(){return At.extname(this.path).slice(1)}},Cdt=t=>t.flatMap(e=>hxe.default.braces(e,{expand:!0,nodupes:!0})),Idt=({entry:t,destination:e,options:r})=>t.pattern.hasMagic()?r.flat?At.isAbsolute(e)?At.join(e,t.name):At.join(r.cwd,e,t.name):At.join(e,At.relative(t.pattern.normalizedPath,t.path)):At.isAbsolute(e)?At.join(e,t.name):t.pattern.isDirectory&&At.relative(r.cwd,t.path).startsWith("..")?At.join(r.cwd,e,At.basename(t.pattern.originalPath),At.relative(t.pattern.originalPath,t.path)):!t.pattern.isDirectory&&t.path===t.relativePath?At.join(r.cwd,e,At.basename(t.pattern.originalPath),At.relative(t.pattern.originalPath,t.path)):!t.pattern.isDirectory&&r.flat?At.join(r.cwd,e,At.basename(t.pattern.originalPath)):At.join(r.cwd,e,At.relative(r.cwd,t.path)),Pdt=(t,e)=>{let r=At.dirname(t);if(typeof e=="string")return At.join(r,e);if(typeof e=="function"){let n=At.basename(t);return At.join(r,e(n))}return t};function LK(t,e,{concurrency:r=xdt.availableParallelism(),...n}={}){let i=new Map,o=new Adt;n={...Rdt,...n};let s=(async()=>{let a=[],c=0,l=0,u=Cdt([t??[]].flat()).map(h=>h.replaceAll("\\","/")),d=u.filter(h=>!h.startsWith("!")),f=u.filter(h=>h.startsWith("!"));if(d.length===0||!e)throw new Au("`source` and `destination` required");u=u.map(h=>new IT(h,e,{...n,ignore:f}));for(let h of u){let m=[];try{m=h.getMatches()}catch(g){throw new Au(`Cannot glob \`${h.originalPath}\`: ${g.message}`,{cause:g})}if(m.length===0&&!Zf(h.originalPath)&&!Zf(f))throw new Au(`Cannot copy \`${h.originalPath}\`: the file doesn't exist`);a=[...a,...m.map(g=>new DK(g,At.relative(n.cwd,g),h))]}n.filter!==void 0&&(a=await MW(a,n.filter,{concurrency:1024})),a.length===0&&o.emit("progress",{totalFiles:0,percent:1,completedFiles:0,completedSize:0});let p=h=>{let m=i.get(h.sourcePath)||{writtenBytes:0,percent:0};(m.writtenBytes!==h.writtenBytes||m.percent!==h.percent)&&(l-=m.writtenBytes,l+=h.writtenBytes,h.percent===1&&m.percent!==1&&c++,i.set(h.sourcePath,{writtenBytes:h.writtenBytes,percent:h.percent}),o.emit("progress",{totalFiles:a.length,percent:c/a.length,completedFiles:c,completedSize:l,sourcePath:h.sourcePath,destinationPath:h.destinationPath}))};return yT(a,async h=>{let m=Pdt(Idt({entry:h,destination:e,options:n}),n.rename);try{await Lbe(h.path,m,{...n,onProgress:p})}catch(g){throw new Au(`Cannot copy from \`${h.relativePath}\` to \`${m}\`: ${g.message}`,{cause:g})}return m},{concurrency:r})})();return s.on=(...a)=>(o.on(...a),s),s}import kxe from"process";import Xdt from"fs";import B_ from"path";import{on as Odt,once as Ndt}from"events";import{PassThrough as kdt}from"stream";import{finished as _xe}from"stream/promises";function jK(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)FK(i);let e=t.some(({readableObjectMode:i})=>i),r=Mdt(t,e),n=new UK({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return t.length===0&&Exe(n),n}var Mdt=(t,e)=>{if(t.length===0)return 16384;let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},UK=class extends kdt{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;add(e){FK(e),!this.#e.has(e)&&(this.#e.add(e),this.#n??=$dt(this,this.#e),Udt({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#t,onFinished:this.#n}),e.pipe(this,{end:!1}))}remove(e){return FK(e),this.#e.has(e)?(e.unpipe(this),!0):!1}},$dt=async(t,e)=>{zk(t,mxe);let r=new AbortController;try{await Promise.race([Ddt(t,r),Ldt(t,e,r)])}finally{r.abort(),zk(t,-mxe)}},Ddt=async(t,{signal:e})=>{await _xe(t,{signal:e,cleanup:!0})},Ldt=async(t,e,{signal:r})=>{for await(let[n]of Odt(t,"unpipe",{signal:r}))e.has(n)&&n.emit(Sxe)},FK=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Udt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:o})=>{zk(t,gxe);let s=new AbortController;try{await Promise.race([Fdt(o,e),zdt({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:s}),jdt({stream:e,streams:r,ended:n,aborted:i,controller:s})])}finally{s.abort(),zk(t,-gxe)}r.size===n.size+i.size&&(n.size===0&&i.size>0?zK(t):Exe(t))},yxe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Fdt=async(t,e)=>{try{await t,zK(e)}catch(r){yxe(r)?zK(e):vxe(e,r)}},zdt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:o}})=>{try{await _xe(e,{signal:o,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(s){if(o.aborted||!r.has(e))return;yxe(s)?i.add(e):vxe(t,s)}},jdt=async({stream:t,streams:e,ended:r,aborted:n,controller:{signal:i}})=>{await Ndt(t,Sxe,{signal:i}),e.delete(t),r.delete(t),n.delete(t)},Sxe=Symbol("unpipe"),Exe=t=>{t.writable&&t.end()},zK=t=>{(t.readable||t.writable)&&t.destroy()},vxe=(t,e)=>{t.destroyed||(t.once("error",Bdt),t.destroy(e))},Bdt=()=>{},zk=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},mxe=2,gxe=1;var q_=pn(xT(),1);import qdt from"fs";import Vdt from"fs/promises";async function BK(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await Vdt[t](r))[e]()}catch(n){if(n.code==="ENOENT")return!1;throw n}}function qK(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return qdt[t](r)[e]()}catch(n){if(n.code==="ENOENT")return!1;throw n}}var Jur=BK.bind(void 0,"stat","isFile"),bxe=BK.bind(void 0,"stat","isDirectory"),Xur=BK.bind(void 0,"lstat","isSymbolicLink"),Qur=qK.bind(void 0,"statSync","isFile"),Txe=qK.bind(void 0,"statSync","isDirectory"),edr=qK.bind(void 0,"lstatSync","isSymbolicLink");var VK=pn(xT(),1),wxe=pn(NK(),1);import Gdt from"process";import Hdt from"fs";import Wdt from"fs/promises";import j_ from"path";function z_(t){return t.startsWith("\\\\?\\")?t:t.replace(/\\/g,"/")}var PT=t=>t[0]==="!";var Ydt=["**/node_modules","**/flow-typed","**/coverage","**/.git"],Axe={absolute:!0,dot:!0},xxe="**/.gitignore",Kdt=(t,e)=>PT(t)?"!"+j_.posix.join(e,t.slice(1)):j_.posix.join(e,t),Zdt=(t,e)=>{let r=z_(j_.relative(e,j_.dirname(t.filePath)));return t.content.split(/\r?\n/).filter(n=>n&&!n.startsWith("#")).map(n=>Kdt(n,r))},Jdt=(t,e)=>{if(e=z_(e),j_.isAbsolute(t)){if(z_(t).startsWith(e))return j_.relative(e,t);throw new Error(`Path ${t} is not in cwd ${e}`)}return t},Rxe=(t,e)=>{let r=t.flatMap(i=>Zdt(i,e)),n=(0,wxe.default)().add(r);return i=>(i=ti(i),i=Jdt(i,e),i?n.ignores(z_(i)):!1)},Cxe=(t={})=>({cwd:ti(t.cwd)??Gdt.cwd(),suppressErrors:!!t.suppressErrors,deep:typeof t.deep=="number"?t.deep:Number.POSITIVE_INFINITY,ignore:[...t.ignore??[],...Ydt]}),Ixe=async(t,e)=>{let{cwd:r,suppressErrors:n,deep:i,ignore:o}=Cxe(e),s=await(0,VK.default)(t,{cwd:r,suppressErrors:n,deep:i,ignore:o,...Axe}),a=await Promise.all(s.map(async c=>({filePath:c,content:await Wdt.readFile(c,"utf8")})));return Rxe(a,r)},Pxe=(t,e)=>{let{cwd:r,suppressErrors:n,deep:i,ignore:o}=Cxe(e),a=VK.default.sync(t,{cwd:r,suppressErrors:n,deep:i,ignore:o,...Axe}).map(c=>({filePath:c,content:Hdt.readFileSync(c,"utf8")}));return Rxe(a,r)};var Qdt=t=>{if(t.some(e=>typeof e!="string"))throw new TypeError("Patterns must be a string or an array of strings")},Mxe=(t,e)=>{let r=PT(t)?t.slice(1):t;return B_.isAbsolute(r)?r:B_.join(e,r)},$xe=({directoryPath:t,files:e,extensions:r})=>{let n=r?.length>0?`.${r.length>1?`{${r.join(",")}}`:r[0]}`:"";return e?e.map(i=>B_.posix.join(t,`**/${B_.extname(i)?i:`${i}${n}`}`)):[B_.posix.join(t,`**${n?`/*${n}`:""}`)]},Oxe=async(t,{cwd:e=kxe.cwd(),files:r,extensions:n}={})=>(await Promise.all(t.map(async o=>await bxe(Mxe(o,e))?$xe({directoryPath:o,files:r,extensions:n}):o))).flat(),Nxe=(t,{cwd:e=kxe.cwd(),files:r,extensions:n}={})=>t.flatMap(i=>Txe(Mxe(i,e))?$xe({directoryPath:i,files:r,extensions:n}):i),GK=t=>(t=[...new Set([t].flat())],Qdt(t),t),eft=t=>{if(!t)return;let e;try{e=Xdt.statSync(t)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},Dxe=(t={})=>(t={...t,ignore:t.ignore??[],expandDirectories:t.expandDirectories??!0,cwd:ti(t.cwd)},eft(t.cwd),t),Lxe=t=>async(e,r)=>t(GK(e),Dxe(r)),jk=t=>(e,r)=>t(GK(e),Dxe(r)),Uxe=t=>{let{ignoreFiles:e,gitignore:r}=t,n=e?GK(e):[];return r&&n.push(xxe),n},tft=async t=>{let e=Uxe(t);return zxe(e.length>0&&await Ixe(e,t))},Fxe=t=>{let e=Uxe(t);return zxe(e.length>0&&Pxe(e,t))},zxe=t=>{let e=new Set;return r=>{let n=B_.normalize(r.path??r);return e.has(n)||t&&t(n)?!1:(e.add(n),!0)}},jxe=(t,e)=>t.flat().filter(r=>e(r)),Bxe=(t,e)=>{let r=[];for(;t.length>0;){let n=t.findIndex(o=>PT(o));if(n===-1){r.push({patterns:t,options:e});break}let i=t[n].slice(1);for(let o of r)o.options.ignore.push(i);n!==0&&r.push({patterns:t.slice(0,n),options:{...e,ignore:[...e.ignore,i]}}),t=t.slice(n+1)}return r},qxe=(t,e)=>({...e?{cwd:e}:{},...Array.isArray(t)?{files:t}:t}),Vxe=async(t,e)=>{let r=Bxe(t,e),{cwd:n,expandDirectories:i}=e;if(!i)return r;let o=qxe(i,n);return Promise.all(r.map(async s=>{let{patterns:a,options:c}=s;return[a,c.ignore]=await Promise.all([Oxe(a,o),Oxe(c.ignore,{cwd:n})]),{patterns:a,options:c}}))},HK=(t,e)=>{let r=Bxe(t,e),{cwd:n,expandDirectories:i}=e;if(!i)return r;let o=qxe(i,n);return r.map(s=>{let{patterns:a,options:c}=s;return a=Nxe(a,o),c.ignore=Nxe(c.ignore,{cwd:n}),{patterns:a,options:c}})},Gxe=Lxe(async(t,e)=>{let[r,n]=await Promise.all([Vxe(t,e),tft(e)]),i=await Promise.all(r.map(o=>(0,q_.default)(o.patterns,o.options)));return jxe(i,n)}),Edr=jk((t,e)=>{let r=HK(t,e),n=Fxe(e),i=r.map(o=>q_.default.sync(o.patterns,o.options));return jxe(i,n)}),vdr=jk((t,e)=>{let r=HK(t,e),n=Fxe(e),i=r.map(s=>q_.default.stream(s.patterns,s.options));return jK(i).filter(s=>n(s))}),bdr=jk((t,e)=>t.some(r=>q_.default.isDynamicPattern(r,e))),Tdr=Lxe(Vxe),wdr=jk(HK),{convertPathToPattern:Adr}=q_.default;import nft from"process";import OT from"path";import kdr,{promises as Bk}from"fs";import Cdr,{promises as rft}from"fs";async function Hxe(t){try{return await rft.access(t),!0}catch{return!1}}var ift=(t,e,r)=>(e=OT.resolve(t,e),r=OT.resolve(t,r),{sourcePath:e,destinationPath:r}),oft=(t,e,r="Path")=>{if(!t||!e)throw new TypeError(`\`source${r}\` and \`destination${r}\` required`)},sft=(t,e)=>{if(OT.dirname(t)!==OT.dirname(e))throw new Error("`source` and `destination` must be in the same directory")},aft=async(t,e,{overwrite:r=!0,cwd:n=nft.cwd(),directoryMode:i,validateDirectory:o=!1}={})=>{if(n&&({sourcePath:t,destinationPath:e}=ift(n,t,e)),o&&sft(t,e),!r&&await Hxe(e))throw new Error(`The destination file exists: ${e}`);await Bk.mkdir(OT.dirname(e),{recursive:!0,mode:i});try{await Bk.rename(t,e)}catch(s){if(s.code==="EXDEV")await Bk.copyFile(t,e),await Bk.unlink(t);else throw s}};async function Wxe(t,e,r){return oft(t,e),aft(t,e,r)}var WK=async function(t,e,r=!1){if(r)return Wxe(t,e,{overwrite:!1});let{srcGlob:n,dest:i,...o}=await Zxe(t,Kxe(e));if(n&&i)return LK(n,i,{...o,overwrite:!1})},NT=async function(t){let{srcGlob:e,isDir:r,dest:n,...i}=await Zxe(t,"");return e!==void 0&&!await uft(e,r,i)},uft=async function(t,e,r){return e?(await Gxe(t,r)).filter(o=>Uk(Yxe(o))).length===0:!1},Zxe=async function(t,e){let r=await dft(t);if(r===void 0)return{srcGlob:void 0,isDir:!1,cwd:""};let n=r.isDirectory(),i=Yxe(t),o=Kxe(t),s={srcGlob:i,dest:e,isDir:n,cwd:o,dot:!0};return n?{...s,srcGlob:`${i}/**`,dest:lft(e,i)}:s},dft=async t=>{try{return await cft.stat(t)}catch{return}};import{join as spt}from"path";import{stat as fft,lstat as Jxe,readdir as pft,realpath as hft}from"fs/promises";import{Readable as mft}from"stream";import{resolve as Xxe,relative as gft,join as _ft,sep as yft}from"path";var Di={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},YK={root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:Di.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(YK);var rRe="READDIRP_RECURSIVE_ERROR",Sft=new Set(["ENOENT","EPERM","EACCES","ELOOP",rRe]),Qxe=[Di.DIR_TYPE,Di.EVERYTHING_TYPE,Di.FILE_DIR_TYPE,Di.FILE_TYPE],Eft=new Set([Di.DIR_TYPE,Di.EVERYTHING_TYPE,Di.FILE_DIR_TYPE]),vft=new Set([Di.EVERYTHING_TYPE,Di.FILE_DIR_TYPE,Di.FILE_TYPE]),bft=t=>Sft.has(t.code),Tft=process.platform==="win32",eRe=t=>!0,tRe=t=>{if(t===void 0)return eRe;if(typeof t=="function")return t;if(typeof t=="string"){let e=t.trim();return r=>r.basename===e}if(Array.isArray(t)){let e=t.map(r=>r.trim());return r=>e.some(n=>r.basename===n)}return eRe},KK=class extends mft{constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let r={...YK,...e},{root:n,type:i}=r;this._fileFilter=tRe(r.fileFilter),this._directoryFilter=tRe(r.directoryFilter);let o=r.lstat?Jxe:fft;Tft?this._stat=s=>o(s,{bigint:!0}):this._stat=o,this._maxDepth=r.depth??YK.depth,this._wantsDir=i?Eft.has(i):!1,this._wantsFile=i?vft.has(i):!1,this._wantsEverything=i===Di.EVERYTHING_TYPE,this._root=Xxe(n),this._isDirent=!r.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(e){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&e>0;){let r=this.parent,n=r&&r.files;if(n&&n.length>0){let{path:i,depth:o}=r,s=n.splice(0,e).map(c=>this._formatEntry(c,i)),a=await Promise.all(s);for(let c of a){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(o<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,o+1)),this._wantsDir&&(this.push(c),e--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),e--)}}else{let i=this.parents.pop();if(!i){this.push(null);break}if(this.parent=await i,this.destroyed)return}}}catch(r){this.destroy(r)}finally{this.reading=!1}}}async _exploreDir(e,r){let n;try{n=await pft(e,this._rdOptions)}catch(i){this._onError(i)}return{files:n,depth:r,path:e}}async _formatEntry(e,r){let n,i=this._isDirent?e.name:e;try{let o=Xxe(_ft(r,i));n={path:gft(this._root,o),fullPath:o,basename:i},n[this._statsProp]=this._isDirent?e:await this._stat(o)}catch(o){this._onError(o);return}return n}_onError(e){bft(e)&&!this.destroyed?this.emit("warn",e):this.destroy(e)}async _getEntryType(e){if(!e&&this._statsProp in e)return"";let r=e[this._statsProp];if(r.isFile())return"file";if(r.isDirectory())return"directory";if(r&&r.isSymbolicLink()){let n=e.fullPath;try{let i=await hft(n),o=await Jxe(i);if(o.isFile())return"file";if(o.isDirectory()){let s=i.length;if(n.startsWith(i)&&n.substr(s,1)===yft){let a=new Error(`Circular symlink detected: "${n}" points to "${i}"`);return a.code=rRe,this._onError(a)}return"directory"}}catch(i){return this._onError(i),""}}}_includeAsFile(e){let r=e&&e[this._statsProp];return r&&this._wantsEverything&&!r.isDirectory()}};function wft(t,e={}){let r=e.entryType||e.type;if(r==="both"&&(r=Di.FILE_DIR_TYPE),r&&(e.type=r),t){if(typeof t!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(r&&!Qxe.includes(r))throw new Error(`readdirp: Invalid type passed. Use one of ${Qxe.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return e.root=t,new KK(e)}function nRe(t,e={}){return new Promise((r,n)=>{let i=[];wft(t,e).on("data",o=>i.push(o)).on("end",()=>r(i)).on("error",o=>n(o))})}import{mkdir as Lft,readFile as uRe,rm as Uft,writeFile as Fft}from"fs/promises";import{existsSync as dRe}from"fs";import{dirname as zft}from"path";var iRe=t=>{if(!(!Number.isInteger(t)||t<1))return Date.now()+t*1e3},oRe=t=>t!==void 0&&Date.now()>t;import{createHash as kft}from"crypto";import{createReadStream as Mft}from"fs";import Rft from"process";import Cft from"path";import rfr,{promises as sRe}from"fs";import{fileURLToPath as Ift}from"url";var ZK=class{value;next;constructor(e){this.value=e}},kT=class{#e;#r;#t;constructor(){this.clear()}enqueue(e){let r=new ZK(e);this.#e?(this.#r.next=r,this.#r=r):(this.#e=r,this.#r=r),this.#t++}dequeue(){let e=this.#e;if(e)return this.#e=this.#e.next,this.#t--,this.#e||(this.#r=void 0),e.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#r=void 0,this.#t=0}get size(){return this.#t}*[Symbol.iterator](){let e=this.#e;for(;e;)yield e.value,e=e.next}*drain(){for(;this.#e;)yield this.dequeue()}};function qk(t){if(!((Number.isInteger(t)||t===Number.POSITIVE_INFINITY)&&t>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=new kT,r=0,n=()=>{r--,e.size>0&&e.dequeue()()},i=async(a,c,l)=>{r++;let u=(async()=>a(...l))();c(u);try{await u}catch{}n()},o=(a,c,l)=>{e.enqueue(i.bind(void 0,a,c,l)),(async()=>(await Promise.resolve(),r<t&&e.size>0&&e.dequeue()()))()},s=(a,...c)=>new Promise(l=>{o(a,l,c)});return Object.defineProperties(s,{activeCount:{get:()=>r},pendingCount:{get:()=>e.size},clearQueue:{value:()=>{e.clear()}}}),s}var Vk=class extends Error{constructor(e){super(),this.value=e}},Aft=async(t,e)=>e(await t),xft=async t=>{let e=await Promise.all(t);if(e[1]===!0)throw new Vk(e[0]);return!1};async function JK(t,e,{concurrency:r=Number.POSITIVE_INFINITY,preserveOrder:n=!0}={}){let i=qk(r),o=[...t].map(a=>[a,i(Aft,a,e)]),s=qk(n?1:Number.POSITIVE_INFINITY);try{await Promise.all(o.map(a=>s(xft,a)))}catch(a){if(a instanceof Vk)return a.value;throw a}}var aRe={directory:"isDirectory",file:"isFile"};function Pft(t){if(!Object.hasOwnProperty.call(aRe,t))throw new Error(`Invalid type specified: ${t}`)}var Oft=(t,e)=>e[aRe[t]](),Nft=t=>t instanceof URL?Ift(t):t;async function cRe(t,{cwd:e=Rft.cwd(),type:r="file",allowSymlinks:n=!0,concurrency:i,preserveOrder:o}={}){Pft(r),e=Nft(e);let s=n?sRe.stat:sRe.lstat;return JK(t,async a=>{try{let c=await s(Cft.resolve(e,a));return Oft(r,c)}catch{return!1}},{concurrency:i,preserveOrder:o})}var $ft="sha1",lRe=async function(t,e){if(e||t.length===0)return;let r=await cRe(t);return r===void 0?void 0:await Dft(r)},Dft=async function(t){let e=Mft(t,"utf8"),r=kft($ft,{encoding:"hex"});return e.pipe(r),await Dh(r)};var fRe=async function({cachePath:t,move:e,ttl:r,digests:n}){let i=Gk(t),o=iRe(r),s=await lRe(n,e),c=`${JSON.stringify({expires:o,hash:s},null,2)}
484
- `,l=await jft({hash:s,manifestPath:i,manifestString:c});return{manifestInfo:{manifestPath:i,manifestString:c},identical:l}},jft=async function({hash:t,manifestPath:e,manifestString:r}){return t===void 0||!dRe(e)?!1:await uRe(e,"utf8")===r},pRe=async function({manifestPath:t,manifestString:e}){await Lft(zft(t),{recursive:!0}),await Fft(t,e)},hRe=async function(t){let e=Gk(t);await Uft(e,{force:!0,recursive:!0,maxRetries:3})},Gk=function(t){return`${t}${gRe}`},mRe=function(t){return t.endsWith(gRe)},gRe=".netlify.cache.json",XK=async function(t){let e=Gk(t);if(!dRe(e))return!1;let{expires:r}=await Bft(t);return oRe(r)},Bft=async function(t){let e=Gk(t),r=await uRe(e,"utf-8");return JSON.parse(r)};import{homedir as Wft}from"os";import{resolve as _Re,isAbsolute as Yft,join as Kft,sep as e9}from"path";import{normalize as qft}from"path";import{existsSync as Vft}from"fs";import Gft from"process";var QK=function(t){try{let e=Hft(t);return Vft(e)?Promise.resolve(e):Promise.resolve("")}catch{return Promise.resolve("")}},Hft=function(t=Gft.cwd()){return qft(t)};var MT=async function({path:t,cacheDir:e,cwdOpt:r}){let n=await Zft(t,r),i=await ept({srcPath:n,cacheDir:e,cwdOpt:r});return{srcPath:n,cachePath:i}},Zft=async function(t,e){let r=await QK(e),n=Jft(t,r);return Xft(n,r),n},Jft=function(t,e){if(Yft(t))return _Re(t);if(e!=="")return _Re(e,t);throw new Error(`Current directory does not exist: ${e}`)},Xft=function(t,e){if(e!==""&&Qft(t,e))throw new Error(`Cannot cache ${t} because it is the current directory (${e}) or a parent directory`)},Qft=function(t,e){return`${e}${e9}`.startsWith(`${t}${e9}`)},ept=async function({srcPath:t,cacheDir:e,cwdOpt:r}){let n=Vf({cacheDir:e,cwd:r}),{name:i,relPath:o}=await tpt(t,r);return Kft(n,i,o)},tpt=async function(t,e){let r=await t9(e),n=rpt(t);return r.map(({name:i,base:o})=>ipt(i,o,n)).find(Boolean)},rpt=function(t){return t.replace(npt,"\\")},npt=/^[a-zA-Z]:\\/,ipt=function(t,e,r){if(r===e||!r.startsWith(e))return;let n=r.replace(e,"");return{name:t,relPath:n}},t9=async function(t){return[...await opt(t),{name:"home",base:Wft()},{name:"root",base:e9}]},opt=async function(t){let e=await QK(t);return e===""?[]:[{name:"cwd",base:e}]};var apt=1,r9=async function({cacheDir:t,cwd:e,depth:r=apt}={}){let n=await t9(e),i=Vf({cacheDir:t,cwd:e});return(await Promise.all(n.map(({name:a,base:c})=>cpt({name:a,base:c,cacheDir:i,depth:r})))).flat()},cpt=async function({name:t,base:e,cacheDir:r,depth:n}){return(await nRe(`${r}/${t}`,{fileFilter:lpt,depth:n,type:"files_directories"})).map(({path:s})=>spt(e,s))},lpt=function({basename:t}){return!mRe(t)};var upt=async function(t,{move:e=yRe,ttl:r=hpt,digests:n=[],cacheDir:i,cwd:o}={}){let{srcPath:s,cachePath:a}=await MT({path:t,cacheDir:i,cwdOpt:o});if(!await NT(s))return!1;let{manifestInfo:c,identical:l}=await fRe({cachePath:a,move:e,ttl:r,digests:n});return l||(await n9(a,{force:!0,recursive:!0,maxRetries:3}),await WK(s,a,e),await pRe(c)),!0},dpt=async function(t,{move:e=yRe,cacheDir:r,cwd:n}={}){let{srcPath:i,cachePath:o}=await MT({path:t,cacheDir:r,cwdOpt:n});return!await NT(o)||await XK(o)?!1:(await n9(i,{force:!0,recursive:!0,maxRetries:3}),await WK(o,i,e),!0)},fpt=async function(t,{cacheDir:e,cwd:r}={}){let{cachePath:n}=await MT({path:t,cacheDir:e,cwdOpt:r});return await NT(n)?(await n9(n,{force:!0,recursive:!0,maxRetries:3}),await hRe(n),!0):!1},ppt=async function(t,{cacheDir:e,cwd:r}={}){let{cachePath:n}=await MT({path:t,cacheDir:e,cwdOpt:r});return await NT(n)&&!await XK(n)},yRe=!1,hpt=void 0,Hk=async function(t,e,...r){return Array.isArray(e)?(await Promise.all(e.map(i=>t(i,...r)))).some(Boolean):t(e,...r)},mpt=Hk.bind(null,upt),gpt=Hk.bind(null,dpt),_pt=Hk.bind(null,fpt),ypt=Hk.bind(null,ppt),SRe=function(t){return{save:(e,r)=>mpt(e,{...t,...r}),restore:(e,r)=>gpt(e,{...t,...r}),remove:(e,r)=>_pt(e,{...t,...r}),has:(e,r)=>ypt(e,{...t,...r}),list:e=>r9({...t,...e}),getCacheDir:e=>Vf({...t,...e})}};var Spt=ie("opencode_session"),Ept=async t=>{try{let e=await XN(t),{stdout:r}=await Ft(e,["session","list","--format","json"],{cwd:t,env:{...process.env,OPENCODE_DISABLE_AUTOUPDATE:"1"}}),n=String(r??"").trim();if(!n)return[];let i=JSON.parse(n);return Array.isArray(i)?i:[]}catch(e){return Spt.warn("Could not list opencode sessions",{error:e?.message}),[]}},i9=new Map,ERe=t=>{let e=i9.get(t);if(e)return e;let r=Ept(t).finally(()=>i9.delete(t));return i9.set(t,r),r},vRe=async t=>(await ERe(t)).length>0,bRe=async(t,e)=>e?(await ERe(t)).some(r=>r.id===e):!1;var qr=ie("native_session"),o9=async(t,e)=>(await Promise.all(e.map(async n=>{try{return await Rc.stat(Cc.join(t,n)),n}catch{return null}}))).filter(n=>n!==null),$T=async({runnerId:t,sessionId:e,archive:r,nativeSessionId:n})=>{if(!r)return qr.log("No native session archive descriptor for this runner, skipping"),null;let{baseDir:i,include:o}=r,s=!1;try{s=(await Rc.stat(i)).isDirectory()}catch{}if(!s)return qr.log(`Native session base dir ${i} not found, skipping`),null;let a=await o9(i,o);if(a.length===0)return qr.log(`No native session history found under ${i}, skipping`),null;let c=Cc.join(TRe.tmpdir(),`native-session-${e}.zip`);try{await Ft("zip",["-r","-q","-X",c,...a],{cwd:i});let l=await Rc.readFile(c);qr.log(`Zipped native session (${l.length} bytes) from ${a.join(", ")}`,{nativeSessionId:n});let{upload_url:u,s3_key:d}=await Gse(t,e);return await Qse(u,l,{contentType:"application/zip"}),qr.log("Successfully uploaded native session to S3"),d}catch(l){return qr.error("Failed to archive/upload native session, continuing without it:",l),null}finally{await Rc.rm(c,{force:!0}).catch(()=>{})}},wRe=async(t,e,r=process.cwd())=>{if(e==="opencode")return vRe(r);if(!t)return!1;let{baseDir:n,include:i}=t,o=await o9(n,i);for(let s of o)if((await Rc.readdir(Cc.join(n,s)).catch(()=>[])).length>0)return!0;return!1},vpt=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),ARe=async(t,e)=>{let r=await Rc.readdir(t,{withFileTypes:!0}).catch(()=>[]);for(let n of r)if(n.isDirectory()){if(await ARe(Cc.join(t,n.name),e))return!0}else if(e.test(n.name))return!0;return!1},xRe=async(t,e,r,n=process.cwd())=>{if(r==="opencode")return bRe(n,e);if(!t||!e)return!1;let i=new RegExp(`(^|[^a-zA-Z0-9])${vpt(e)}([^a-zA-Z0-9]|$)`),{baseDir:o,include:s}=t,a=await o9(o,s);for(let c of a)if(await ARe(Cc.join(o,c),i))return!0;return!1},RRe=async({runnerId:t,sessionId:e,archive:r})=>{if(!r)return qr.log("No native session archive descriptor for this runner, skipping restore"),!1;let{baseDir:n}=r,i=Cc.join(TRe.tmpdir(),`native-session-restore-${e}.zip`);try{let o=await Hse(t,e);if(!o?.download_url)return qr.log("No native session available to restore, skipping"),!1;let s=await Xse(o.download_url);return await Rc.writeFile(i,s),qr.log(`Downloaded native session (${s.length} bytes) to ${i}`),await Rc.mkdir(n,{recursive:!0}),await Ft("unzip",["-o","-q",i,"-d",n]),qr.log(`Restored native session into ${n}`),!0}catch(o){return qr.error("Failed to fetch/restore native session, continuing without it:",o),!1}finally{await Rc.rm(i,{force:!0}).catch(()=>{})}},bpt="native-sessions",CRe=(t,e)=>SRe({cacheDir:Cc.join(e.dir,bpt),cwd:t}),IRe=async({archive:t,cache:e})=>{if(!e?.dir||!t)return!1;let{baseDir:r,include:n}=t;try{return await CRe(r,e).restore(n.map(o=>Cc.join(r,o)),{})?(qr.log(`Restored native session from buildbot cache into ${r}`),!0):(qr.log("No native session in buildbot cache, skipping restore"),!1)}catch(i){return qr.error("Failed to restore native session from buildbot cache, continuing without it:",i),!1}},DT=async({archive:t,cache:e,nativeSessionId:r})=>{if(!e?.dir||!t)return qr.log("No buildbot cache configured for the native session, skipping cache seed",{nativeSessionId:r}),!1;let{baseDir:n,include:i}=t;try{return await CRe(n,e).save(i.map(s=>Cc.join(n,s)),{})?(qr.log(`Saved native session to buildbot cache under ${e.dir}`,{nativeSessionId:r}),!0):(qr.log("No native session history to save to buildbot cache, skipping"),!1)}catch(o){return qr.error("Failed to save native session to buildbot cache, continuing:",o),!1}};var Li=ie("cleanup_stage"),ORe=async t=>await Ut(pt(),"cleanup-stage",async()=>Tpt(t)),PRe=1024*1024*12,LT=async({config:t,diff:e,diffBinary:r,resultDiff:n,resultDiffBinary:i})=>{let o={diff_produced:!0};try{Li.log("Getting pre-signed URLs for diff upload");let s=await Vse(t.id,t.sessionId),a=[],c=r||e;c&&a.push(fz(s.result.upload_url,c.path,{size:c.size,base64:!!r}).then(()=>{o.result_diff_s3_key=s.result.s3_key,Li.log("Successfully uploaded result_diff to S3")}));let l=i||n;l&&a.push(fz(s.cumulative.upload_url,l.path,{size:l.size,base64:!!i}).then(()=>{o.cumulative_diff_s3_key=s.cumulative.s3_key,Li.log("Successfully uploaded cumulative_diff to S3")})),Li.log(`Uploading ${a.length} diff(s) to S3 in parallel`),await Promise.all(a)}catch(s){Li.error("S3 upload failed, falling back to inline diffs:",s);let a=(e?.size??0)+aE(r?.size??0)+(n?.size??0)+aE(i?.size??0);if(a>PRe){let c=`Diffs of ${a} bytes exceed the maximum combined inline size of ${PRe} bytes.`;throw Li.error(c),new Error(c)}o.result_diff=e?await Wk(e.path,"utf8"):void 0,o.result_diff_binary=r?(await Wk(r.path)).toString("base64"):void 0,(n||i)&&(o.cumulative_diff=n?await Wk(n.path,"utf8"):void 0,o.cumulative_diff_binary=i?(await Wk(i.path)).toString("base64"):void 0)}if(n||i)try{Li.log("Updating agent runner with cumulative diff"),await Ut(pt(),"update-runner",async()=>{await N0(t.id,o.cumulative_diff_s3_key?{result_diff_s3_key:o.cumulative_diff_s3_key}:{result_diff:o.cumulative_diff,result_diff_binary:o.cumulative_diff_binary})})}catch(s){Li.warn("Failed to record cumulative diff on the runner (session fields still set):",s)}return o},Tpt=async t=>{let{config:e,finalAgentConfig:r,creditWrapUp:n}=t,i=t.result||"Done";Use(e,i,r,n);let o=await Apt(t),s=await s9(t);await xpt(t);let a=wpt({...t,result:i},{diffFields:o,nativeSessionS3Key:s});return await Rpt(e,a),{sessionUpdate:a}},wpt=({result:t,duration:e,previewInfo:r,isProdDeploy:n,hasNetlifyForm:i,hasNetlifyIdentity:o,nativeSessionId:s,finalAgentConfig:a,creditWrapUp:c},{diffFields:l,nativeSessionS3Key:u})=>{let d={result:t,duration:e,...l};return(a||c)&&(d.metadata={...a?{final_agent_config:a}:{},...c?{credit_wrap_up:!0}:{}}),r&&r.deployId&&(d.deploy_id=r.deployId),r&&r.sourceZipFilename&&(d.result_zip_file_name=r.sourceZipFilename),n&&r&&r.deployId&&(d.is_published=!0),s&&(d.native_session_id=s),i&&(d.has_netlify_form=!0),o&&(d.has_netlify_identity=!0),u&&(d.native_session_s3_key=u),d},Apt=async({config:t,diff:e,diffBinary:r,resultDiff:n,resultDiffBinary:i})=>{if(t.mode!=="ask"&&(e||r||n||i)){let s=await LT({config:t,diff:e,diffBinary:r,resultDiff:n,resultDiffBinary:i});return t.answeredInteraction?{...s,result_diff:s.result_diff??null,result_diff_binary:s.result_diff_binary??null,result_diff_s3_key:s.result_diff_s3_key??null}:s}return Li.log("No diffs to upload"),t.answeredInteraction&&t.mode!=="ask"?{diff_produced:!1,result_diff:null,result_diff_binary:null,result_diff_s3_key:null}:{}},s9=async({config:t,nativeSessionArchive:e,nativeSessionId:r})=>Ut(pt(),"upload-native-session",()=>$T({runnerId:t.id,sessionId:t.sessionId,archive:e,nativeSessionId:r})),xpt=async({config:t,nativeSessionArchive:e,nativeSessionId:r})=>{Ye().warmNativeResumeEnabled&&await Ut(pt(),"save-native-session-cache",()=>DT({archive:e,cache:t.cache,nativeSessionId:r}))},Rpt=async(t,e)=>{Li.log("Updated agent runner with result"),await M0(async()=>await Ut(pt(),"update-runner-session",()=>mn(t.id,t.sessionId,e)),{maxRetries:3,baseDelay:1e3,onRetry:(r,n)=>{Li.error(`Error updating agent runner session (attempt ${r}):`,n),Li.log("Retrying...")}}),Li.log("Finished updating agent runner with result")};var NRe=ie("pending_session_diff"),kRe=async({config:t,cwd:e})=>{if(!(await Ah(t.id,t.sessionId)).has_result_diff)return;let n=await zse(t.id,t.sessionId),i=n.startsWith("diff --git ")?n:Buffer.from(n,"base64").toString("utf8");if(!i.startsWith("diff --git "))throw new Error("Saved session diff is empty or invalid");await Ipt(i,e),NRe.info("Restored pending session diff",{sessionId:t.sessionId})},Ipt=async(t,e=process.cwd())=>{await nr(["apply","--whitespace=nowarn","-"],{cwd:e,input:t,stdio:["pipe","ignore","pipe"]})},MRe=async({config:t,cwd:e})=>{if(t.mode!=="ask")try{let r=await Ppt({config:{runSha:t.runSha,sessionId:t.sessionId},cwd:e}),n=r.hasChanges?await LT({config:t,diff:r.diff,diffBinary:r.diffBinary}):void 0;return{diff_produced:r.hasChanges,result_diff:n?.result_diff_binary?Buffer.from(n.result_diff_binary,"base64").toString("utf8"):n?.result_diff??null,result_diff_binary:null,result_diff_s3_key:n?.result_diff_s3_key??null}}catch(r){NRe.warn("Failed to preserve pending session diff",{sessionId:t.sessionId,error:r});return}},Ppt=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{let{hasChanges:n,status:i}=await Qj(r);if(!n)return{hasChanges:!1};let o=await OE(i,r),s=e?[]:eB(i).filter(u=>u.stage&&!u.change).map(u=>`:(literal)${u.filePath}`),a=await a9.mkdtemp(c9.join(Cpt.tmpdir(),KC(t.sessionId))),c=c9.join(a,"index"),l={GIT_INDEX_FILE:c};try{await nr(["read-tree","HEAD"],{cwd:r,env:l}),await nr(["add",".",...o],{cwd:r,env:l}),s.length>0&&await nr(["reset","--pathspec-from-file=-","--pathspec-file-nul","HEAD"],{cwd:r,env:l,input:s.join("\0")});let u=async({from:_,fileName:v,binary:w})=>{let y=c9.join(a,v);await nr([...w?["diff",_,"--cached","--binary"]:["diff",_,"--cached"],`--output=${y}`],{stdio:["ignore","ignore","pipe"],cwd:r,env:l});let{size:A}=await a9.stat(y);return{path:y,size:A}},d=await u({from:t.runSha,fileName:"session.patch"});if(!(d.size>0))return{hasChanges:!1,ignored:o};let p=await u({from:t.runSha,fileName:"session-binary.patch",binary:!0}),h,m;if(t.sha){h=await u({from:t.sha,fileName:"cumulative.patch"});let _=await u({from:t.sha,fileName:"cumulative-binary.patch",binary:!0});await IE(h,_)||(m=_)}K.distribution("diff.size",p.size);let g={hasChanges:!0,diff:d,resultDiff:h,ignored:o};return await IE(d,p)||(g.diffBinary=p),m&&(g.resultDiffBinary=m),g}finally{await a9.rm(c,{force:!0})}};var Jf=ie("init_stage"),kpt=async(t,e)=>{let r=Npt.join(e,Zr,Mo,t);try{return(await Opt.readdir(r,{withFileTypes:!0})).filter(i=>i.isFile()&&!i.name.endsWith(".part")).length}catch{return 0}},Mpt=async(t,e)=>{try{let r=await Ofe(e);K.inc("repo.empty",1,{empty:r,has_repo:t.hasRepo}),r&&Jf.warn("Repository has no committed files",{mode:t.mode})}catch(r){Jf.warn("Failed to check whether the repository is empty",{error:r?.message||r})}},$pt=async(t,e)=>{if(!(!Ye().fetchAssetsEnabled||!t.assetMap))try{await iae({assetMap:t.assetMap,cwd:e})}catch(r){let n=cl(r)?r.kind:"unknown";throw n==="unknown"&&Jf.error("Failed to fetch session assets",{error:r?.message||r}),K.inc("assets.fetch_failed",1,{kind:n}),new Error("Failed to download the attachments uploaded for this session. Please try again.")}},$Re=async({config:t,apiThrottle:e,apiToken:r,cwd:n,runnerVersion:i,isHotFollowUp:o=!1})=>await Ut(pt(),"init-stage",async s=>{let a=performance.now();s?.setAttributes({"init.runner":t.runner,"init.id":t.id,"init.sessionId":t.sessionId,"init.hasRepo":t.hasRepo,"init.useGateway":t.useGateway,"init.runnerVersion":i||"unknown"});let c=w_[t.runner];if(!c)throw s?.setAttributes({"init.error":"unsupported_runner"}),new Error(`${t.runner} is not supported`);if(t.runner==="opencode"&&!Ye().opencodeEnabled)throw s?.setAttributes({"init.error":"opencode_disabled"}),new Error("opencode runner is not enabled on this environment");let l=Dpt({apiToken:r,config:t});if(Dse(l),t.siteId)try{t.site=await Fse(t.siteId)}catch(_){Jf.error("Failed to get the site information",{error:_})}let u=t.useGateway?await tae({config:t}):void 0;s?.setAttributes({"init.aiGateway.created":!!u}),t.answeredInteraction||await mn(t.id,t.sessionId,{steps:[{title:"Environment ready",category:H.Environment,type:"ready"}]});let d=5*1024,f=1e4,p=D0(async({steps:_=[],duration:v})=>{let w=_.map(y=>{let T=y.title?_z(Qn(y.title),d):void 0,A=y.category===H.AgentMessage||y.category===H.SubagentPrompt,R=y.message?Qn(y.message):void 0,P=R&&!A?_z(R,f):R,k=y.category===H.SubagentPrompt,L=P&&!k?_N(P):P;return L!==P&&Jf.info("Sanitized internal error from step message",{original:P}),{...y,title:T,message:L}});_.length=0;try{return await mn(t.id,t.sessionId,{steps:w,duration:v})}catch(y){Jf.error("persistSteps failed",{error:y?.message||y})}},e);if(!(o&&t.answeredInteraction)){Jf.info("Adding build files to stage");let _=await OE();await Jj(_)}V_.env.NETLIFY_LOCAL_MODE||await _be(),t.mode!=="create"&&await Mpt(t,n??V_.cwd());let h;t.hasRepo?t.sha?(h=t.sha,s?.setAttributes({"init.sha.source":"provided"})):(h=await PE(),t.mode!=="redeploy"&&await N0(t.id,{sha:h}),s?.setAttributes({"init.sha.source":"current_commit"})):(h=await Nfe(),s?.setAttributes({"init.sha.source":"first_commit","init.source":"zip"})),t.runSha=await PE(),t.answeredInteraction&&!o&&t.mode!=="ask"&&await kRe({config:t,cwd:n}),await $pt(t,n);let m=await kpt(t.sessionId,n??V_.cwd());K.inc("assets.session",1,{has_assets:m>0}),m>0&&K.distribution("assets.session.count",m);let g=performance.now()-a;return s?.setAttributes({"init.sha":h||"unknown","init.duration.ms":g,"init.status":"success","init.assetCount":m}),{aiGateway:u,context:l,persistSteps:p,runner:c,sha:h}}),Dpt=({apiToken:t,config:e})=>({constants:{NETLIFY_API_HOST:V_.env.NETLIFY_API_HOST||"api.netlify.com",NETLIFY_API_TOKEN:t||V_.env.NETLIFY_API_TOKEN,SITE_ID:e.siteId,FUNCTIONS_DIST:V_.env.FUNCTIONS_DIST||"netlify/functions"}});Ee();import Ypt from"crypto";import yr from"fs/promises";import Yk from"os";import vt from"path";import sa from"process";import{fileURLToPath as Kpt}from"url";var Lpt=ie("agent_connections"),Upt=async t=>{let e=mEe();if(e)return e;if(!t?.id||!t?.sessionId)return[];let{connections:r}=await qse(t.id,t.sessionId);return r??[]},DRe=async t=>{if(!Ye().connectionsEnabled)return null;let e=[];try{let r=await Upt(t);if(r.length===0)return null;e=await _Ee(r);let{owner:n}=yEe(e),i={};for(let[s,a]of n)(i[a.service]??=[]).push(s);let o=Object.keys(i);return o.length===0?null:{available:o,tools:i}}catch(r){return Lpt.warn("Could not fetch agent connections; continuing without them",{message:r?.message}),K.inc("agent_connections.fetch_failed",1),null}finally{await gEe(e)}};import Fpt from"path";var LRe="- Any question you ask the user MUST go through `mcp__netlify_interactions__ask`. Before asking, read the `asking-questions` skill and follow its instructions. This applies to clarification, missing information, choices, confirmation, and approval.\n - NEVER ask the user a question in any other way. Other outputs do not create an interaction or pause the session for an answer. Do not use another question tool.\n - Bundle the questions you need into one call, then stop. If you need the user's answer to complete the task, call the tool before returning a final response.";var URe={ask:'"Ask mode", which can explore and answer questions but not edit or deploy',build:'"Build mode", which can edit files and deploy'},zpt=t=>t==="ask"?"build":"ask",l9=t=>`This run is in ${URe[t]}; the other mode is ${URe[zpt(t)]}. Use these exact names when you refer to the modes, e.g. "switch to Build mode" \u2014 never "write mode", "execution mode", "read-only mode" or any other wording.`,jpt=`<responses>
483
+ `,_be=async()=>{let t="/tmp/netlify-git-wrapper",e=Kot.join(t,"git"),r="/usr/bin/git";try{let n=(A_.env.PATH||"").split(":").filter(i=>i!==t).join(":");r=Yot("which git",{env:{...A_.env,PATH:n}}).toString().trim()||r}catch{}try{await mbe.mkdir(t,{recursive:!0}),await mbe.writeFile(e,Jot(r),{mode:493}),A_.env.PATH?.split(":").includes(t)||(A_.env.PATH=`${t}:${A_.env.PATH}`),A_.env.NETLIFY_INTERNAL_GIT="0",gbe.info("Installed git wrapper to restrict the agent to read-only git commands")}catch(n){gbe.warn("Failed to install git wrapper",{error:n?.message||n}),Y.inc("context.degraded",1,{component:"git_wrapper"})}};import a9 from"fs/promises";import Cpt from"os";import c9 from"path";import{readFile as Wk}from"fs/promises";import Rc from"fs/promises";import TRe from"os";import Cc from"path";import{rm as n9}from"fs/promises";import{resolve as Xot}from"path";var Qot=".netlify/cache/",Vf=function({cacheDir:t=Qot,cwd:e="."}={}){return Xot(e,t)};import{promises as cft}from"fs";import{basename as Yxe,dirname as Kxe,join as lft}from"path";import wdt from"process";import Adt from"events";import At from"path";import xdt from"os";async function yT(t,e,{concurrency:r=Number.POSITIVE_INFINITY,stopOnError:n=!0,signal:i}={}){return new Promise((o,s)=>{if(t[Symbol.iterator]===void 0&&t[Symbol.asyncIterator]===void 0)throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof t})`);if(typeof e!="function")throw new TypeError("Mapper function is required");if(!(Number.isSafeInteger(r)&&r>=1||r===Number.POSITIVE_INFINITY))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${r}\` (${typeof r})`);let a=[],c=[],l=new Map,u=!1,d=!1,f=!1,p=0,h=0,m=t[Symbol.iterator]===void 0?t[Symbol.asyncIterator]():t[Symbol.iterator](),g=()=>{w(i.reason)},_=()=>{i?.removeEventListener("abort",g)},v=T=>{o(T),_()},w=T=>{u=!0,d=!0,s(T),_()};i&&(i.aborted&&w(i.reason),i.addEventListener("abort",g,{once:!0}));let y=async()=>{if(d)return;let T=await m.next(),A=h;if(h++,T.done){if(f=!0,p===0&&!d){if(!n&&c.length>0){w(new AggregateError(c));return}if(d=!0,l.size===0){v(a);return}let R=[];for(let[P,k]of a.entries())l.get(P)!==ybe&&R.push(k);v(R)}return}p++,(async()=>{try{let R=await T.value;if(d)return;let P=await e(R,A);P===ybe&&l.set(A,P),a[A]=P,p--,await y()}catch(R){if(n)w(R);else{c.push(R),p--;try{await y()}catch(P){w(P)}}}})()};(async()=>{for(let T=0;T<r;T++){try{await y()}catch(A){w(A);break}if(f||u)break}})()})}var ybe=Symbol("skip");import Hf from"path";import ycr,{constants as NW}from"fs";import kW from"fs/promises";var wW=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},AW=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Sbe=t=>globalThis.DOMException===void 0?new AW(t):new DOMException(t),Ebe=t=>{let e=t.reason===void 0?Sbe("This operation was aborted."):t.reason;return e instanceof Error?e:Sbe(e)};function xW(t,e){let{milliseconds:r,fallback:n,message:i,customTimers:o={setTimeout,clearTimeout}}=e,s,a,l=new Promise((u,d)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(e.signal){let{signal:p}=e;p.aborted&&d(Ebe(p)),a=()=>{d(Ebe(p))},p.addEventListener("abort",a,{once:!0})}if(r===Number.POSITIVE_INFINITY){t.then(u,d);return}let f=new wW;s=o.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(p){d(p)}return}typeof t.cancel=="function"&&t.cancel(),i===!1?u():i instanceof Error?d(i):(f.message=i??`Promise timed out after ${r} milliseconds`,d(f))},r),(async()=>{try{u(await t)}catch(p){d(p)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{o.clearTimeout.call(void 0,s),s=void 0},l}var est=t=>{let e=t.addEventListener||t.on||t.addListener,r=t.removeEventListener||t.off||t.removeListener;if(!e||!r)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:r.bind(t)}};function tst(t,e,r){let n,i=new Promise((o,s)=>{if(r={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...r},!(r.count>=0&&(r.count===Number.POSITIVE_INFINITY||Number.isInteger(r.count))))throw new TypeError("The `count` option should be at least 0 or more");r.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=est(t),d=(...p)=>{let h=r.multiArgs?p:p[0];r.filter&&!r.filter(h)||(c.push(h),r.count===c.length&&(n(),o(c)))},f=p=>{n(),s(p)};n=()=>{for(let p of a)u(p,d);for(let p of r.rejectionEvents)u(p,f)};for(let p of a)l(p,d);for(let p of r.rejectionEvents)l(p,f);r.signal&&r.signal.addEventListener("abort",()=>{f(r.signal.reason)},{once:!0}),r.resolveImmediately&&o(c)});if(i.cancel=n,typeof r.timeout=="number"){let o=xW(i,{milliseconds:r.timeout});return o.cancel=n,o}return i}function ek(t,e,r){typeof r=="function"&&(r={filter:r}),r={...r,count:1,resolveImmediately:!1};let n=tst(t,e,r),i=n.then(o=>o[0]);return i.cancel=n.cancel,i}var qn=class extends Error{constructor(e,{cause:r}={}){super(e,{cause:r}),Object.assign(this,r),this.name="CopyFileError"}};var es=pn(Obe(),1);import{promisify as ST}from"util";var dcr=ST(es.default.stat),fst=ST(es.default.lstat),pst=ST(es.default.utimes),hst=ST(es.default.chmod),mst=ST(es.default.mkdir),fcr=es.default.closeSync.bind(es.default),Nbe=es.default.createWriteStream.bind(es.default);async function kbe(t,e){let r=es.default.createReadStream(t,e);try{await ek(r,["readable","end"])}catch(n){throw new qn(`Cannot read from \`${t}\`: ${n.message}`,{cause:n})}return r}var OW=t=>fst(t).catch(e=>{throw new qn(`lstat \`${t}\` failed: ${e.message}`,{cause:e})}),Mbe=(t,e,r)=>pst(t,e,r).catch(n=>{throw new qn(`utimes \`${t}\` failed: ${n.message}`,{cause:n})}),$be=(t,e)=>hst(t,e).catch(r=>{throw new qn(`chmod \`${t}\` failed: ${r.message}`,{cause:r})});var Dbe=(t,e)=>mst(t,{...e,recursive:!0}).catch(r=>{throw new qn(`Cannot create directory \`${t}\`: ${r.message}`,{cause:r})});var _st=(t,e,r)=>({sourcePath:Hf.resolve(t,e),destinationPath:Hf.resolve(t,r)}),yst=(t,e)=>{if(!t.isFile())throw Object.assign(new qn(`EISDIR: illegal operation on a directory '${e}'`),{errno:-21,code:"EISDIR",source:e})};async function Lbe(t,e,r={}){if(!t||!e)throw new qn("`source` and `destination` required");r.cwd&&({sourcePath:t,destinationPath:e}=_st(r.cwd,t,e)),r={overwrite:!0,...r};let n=await OW(t),{size:i}=n;yst(n,t);let o=Hf.dirname(e);if(Hf.parse(o).root===o||await Dbe(Hf.dirname(e),{mode:r.directoryMode}),typeof r.onProgress=="function"){let a=await kbe(t),c=Nbe(e,{flags:r.overwrite?"w":"wx"}),l=p=>{r.onProgress({sourcePath:Hf.resolve(t),destinationPath:Hf.resolve(e),size:i,writtenBytes:p,percent:p===i?1:p/i})},u=-1;a.on("data",()=>{let p=c.bytesWritten,h=p===i?1:p/i;(h===1||h-u>=.01)&&(u=h,l(p))});let d;a.once("error",p=>{d=new qn(`Cannot read from \`${t}\`: ${p.message}`,{cause:p})});let f=!1;try{let p=ek(c,"close");a.pipe(c),await p,l(i),f=!0}catch(p){throw new qn(`Cannot write to \`${e}\`: ${p.message}`,{cause:p})}if(d)throw d;if(f){let p=await OW(t);return Promise.all([Mbe(e,p.atime,p.mtime).catch(h=>{if(h.code!=="EPERM")throw h}),$be(e,p.mode)])}}else{let a=r.overwrite?NW.COPYFILE_FICLONE:NW.COPYFILE_FICLONE|NW.COPYFILE_EXCL;try{await kW.copyFile(t,e,a),await Promise.all([kW.utimes(e,n.atime,n.mtime).catch(c=>{if(c.code!=="EPERM")throw c}),kW.chmod(e,n.mode)])}catch(c){throw new qn(c.message,{cause:c})}}}async function MW(t,e,r){return(await yT(t,(i,o)=>Promise.all([e(i,o),i]),r)).filter(i=>!!i[0]).map(i=>i[1])}import exe from"process";import _dt from"fs";import U_ from"path";import{on as Sst,once as Est}from"events";import{PassThrough as vst}from"stream";import{finished as zbe}from"stream/promises";function UW(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)DW(i);let e=t.some(({readableObjectMode:i})=>i),r=bst(t,e),n=new $W({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return t.length===0&&qbe(n),n}var bst=(t,e)=>{if(t.length===0)return 16384;let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},$W=class extends vst{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;add(e){DW(e),!this.#e.has(e)&&(this.#e.add(e),this.#n??=Tst(this,this.#e),xst({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#t,onFinished:this.#n}),e.pipe(this,{end:!1}))}remove(e){return DW(e),this.#e.has(e)?(e.unpipe(this),!0):!1}},Tst=async(t,e)=>{ok(t,Ube);let r=new AbortController;try{await Promise.race([wst(t,r),Ast(t,e,r)])}finally{r.abort(),ok(t,-Ube)}},wst=async(t,{signal:e})=>{await zbe(t,{signal:e,cleanup:!0})},Ast=async(t,e,{signal:r})=>{for await(let[n]of Sst(t,"unpipe",{signal:r}))e.has(n)&&n.emit(Bbe)},DW=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},xst=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:o})=>{ok(t,Fbe);let s=new AbortController;try{await Promise.race([Rst(o,e),Cst({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:s}),Ist({stream:e,streams:r,ended:n,aborted:i,controller:s})])}finally{s.abort(),ok(t,-Fbe)}r.size===n.size+i.size&&(n.size===0&&i.size>0?LW(t):qbe(t))},jbe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Rst=async(t,e)=>{try{await t,LW(e)}catch(r){jbe(r)?LW(e):Vbe(e,r)}},Cst=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:o}})=>{try{await zbe(e,{signal:o,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(s){if(o.aborted||!r.has(e))return;jbe(s)?i.add(e):Vbe(t,s)}},Ist=async({stream:t,streams:e,ended:r,aborted:n,controller:{signal:i}})=>{await Est(t,Bbe,{signal:i}),e.delete(t),r.delete(t),n.delete(t)},Bbe=Symbol("unpipe"),qbe=t=>{t.writable&&t.end()},LW=t=>{(t.readable||t.writable)&&t.destroy()},Vbe=(t,e)=>{t.destroyed||(t.once("error",Pst),t.destroy(e))},Pst=()=>{},ok=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},Ube=2,Fbe=1;var F_=pn(xT(),1);import But from"fs";import qut from"fs/promises";async function wK(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await qut[t](r))[e]()}catch(n){if(n.code==="ENOENT")return!1;throw n}}function AK(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return But[t](r)[e]()}catch(n){if(n.code==="ENOENT")return!1;throw n}}var Jlr=wK.bind(void 0,"stat","isFile"),$Ae=wK.bind(void 0,"stat","isDirectory"),Xlr=wK.bind(void 0,"lstat","isSymbolicLink"),Qlr=AK.bind(void 0,"statSync","isFile"),DAe=AK.bind(void 0,"statSync","isDirectory"),eur=AK.bind(void 0,"lstatSync","isSymbolicLink");var kK=pn(xT(),1),GAe=pn(NK(),1);import udt from"process";import ddt from"fs";import fdt from"fs/promises";import L_ from"path";function D_(t){return t.startsWith("\\\\?\\")?t:t.replace(/\\/g,"/")}var CT=t=>t[0]==="!";var pdt=["**/node_modules","**/flow-typed","**/coverage","**/.git"],HAe={absolute:!0,dot:!0},WAe="**/.gitignore",hdt=(t,e)=>CT(t)?"!"+L_.posix.join(e,t.slice(1)):L_.posix.join(e,t),mdt=(t,e)=>{let r=D_(L_.relative(e,L_.dirname(t.filePath)));return t.content.split(/\r?\n/).filter(n=>n&&!n.startsWith("#")).map(n=>hdt(n,r))},gdt=(t,e)=>{if(e=D_(e),L_.isAbsolute(t)){if(D_(t).startsWith(e))return L_.relative(e,t);throw new Error(`Path ${t} is not in cwd ${e}`)}return t},YAe=(t,e)=>{let r=t.flatMap(i=>mdt(i,e)),n=(0,GAe.default)().add(r);return i=>(i=ti(i),i=gdt(i,e),i?n.ignores(D_(i)):!1)},KAe=(t={})=>({cwd:ti(t.cwd)??udt.cwd(),suppressErrors:!!t.suppressErrors,deep:typeof t.deep=="number"?t.deep:Number.POSITIVE_INFINITY,ignore:[...t.ignore??[],...pdt]}),ZAe=async(t,e)=>{let{cwd:r,suppressErrors:n,deep:i,ignore:o}=KAe(e),s=await(0,kK.default)(t,{cwd:r,suppressErrors:n,deep:i,ignore:o,...HAe}),a=await Promise.all(s.map(async c=>({filePath:c,content:await fdt.readFile(c,"utf8")})));return YAe(a,r)},JAe=(t,e)=>{let{cwd:r,suppressErrors:n,deep:i,ignore:o}=KAe(e),a=kK.default.sync(t,{cwd:r,suppressErrors:n,deep:i,ignore:o,...HAe}).map(c=>({filePath:c,content:ddt.readFileSync(c,"utf8")}));return YAe(a,r)};var ydt=t=>{if(t.some(e=>typeof e!="string"))throw new TypeError("Patterns must be a string or an array of strings")},txe=(t,e)=>{let r=CT(t)?t.slice(1):t;return U_.isAbsolute(r)?r:U_.join(e,r)},rxe=({directoryPath:t,files:e,extensions:r})=>{let n=r?.length>0?`.${r.length>1?`{${r.join(",")}}`:r[0]}`:"";return e?e.map(i=>U_.posix.join(t,`**/${U_.extname(i)?i:`${i}${n}`}`)):[U_.posix.join(t,`**${n?`/*${n}`:""}`)]},XAe=async(t,{cwd:e=exe.cwd(),files:r,extensions:n}={})=>(await Promise.all(t.map(async o=>await $Ae(txe(o,e))?rxe({directoryPath:o,files:r,extensions:n}):o))).flat(),QAe=(t,{cwd:e=exe.cwd(),files:r,extensions:n}={})=>t.flatMap(i=>DAe(txe(i,e))?rxe({directoryPath:i,files:r,extensions:n}):i),MK=t=>(t=[...new Set([t].flat())],ydt(t),t),Sdt=t=>{if(!t)return;let e;try{e=_dt.statSync(t)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},nxe=(t={})=>(t={...t,ignore:t.ignore??[],expandDirectories:t.expandDirectories??!0,cwd:ti(t.cwd)},Sdt(t.cwd),t),ixe=t=>async(e,r)=>t(MK(e),nxe(r)),Lk=t=>(e,r)=>t(MK(e),nxe(r)),oxe=t=>{let{ignoreFiles:e,gitignore:r}=t,n=e?MK(e):[];return r&&n.push(WAe),n},Edt=async t=>{let e=oxe(t);return axe(e.length>0&&await ZAe(e,t))},sxe=t=>{let e=oxe(t);return axe(e.length>0&&JAe(e,t))},axe=t=>{let e=new Set;return r=>{let n=U_.normalize(r.path??r);return e.has(n)||t&&t(n)?!1:(e.add(n),!0)}},cxe=(t,e)=>t.flat().filter(r=>e(r)),lxe=(t,e)=>{let r=[];for(;t.length>0;){let n=t.findIndex(o=>CT(o));if(n===-1){r.push({patterns:t,options:e});break}let i=t[n].slice(1);for(let o of r)o.options.ignore.push(i);n!==0&&r.push({patterns:t.slice(0,n),options:{...e,ignore:[...e.ignore,i]}}),t=t.slice(n+1)}return r},uxe=(t,e)=>({...e?{cwd:e}:{},...Array.isArray(t)?{files:t}:t}),dxe=async(t,e)=>{let r=lxe(t,e),{cwd:n,expandDirectories:i}=e;if(!i)return r;let o=uxe(i,n);return Promise.all(r.map(async s=>{let{patterns:a,options:c}=s;return[a,c.ignore]=await Promise.all([XAe(a,o),XAe(c.ignore,{cwd:n})]),{patterns:a,options:c}}))},$K=(t,e)=>{let r=lxe(t,e),{cwd:n,expandDirectories:i}=e;if(!i)return r;let o=uxe(i,n);return r.map(s=>{let{patterns:a,options:c}=s;return a=QAe(a,o),c.ignore=QAe(c.ignore,{cwd:n}),{patterns:a,options:c}})},vur=ixe(async(t,e)=>{let[r,n]=await Promise.all([dxe(t,e),Edt(e)]),i=await Promise.all(r.map(o=>(0,F_.default)(o.patterns,o.options)));return cxe(i,n)}),fxe=Lk((t,e)=>{let r=$K(t,e),n=sxe(e),i=r.map(o=>F_.default.sync(o.patterns,o.options));return cxe(i,n)}),bur=Lk((t,e)=>{let r=$K(t,e),n=sxe(e),i=r.map(s=>F_.default.stream(s.patterns,s.options));return UW(i).filter(s=>n(s))}),Zf=Lk((t,e)=>t.some(r=>F_.default.isDynamicPattern(r,e))),Tur=ixe(dxe),wur=Lk($K),{convertPathToPattern:Aur}=F_.default;var hxe=pn(sY(),1);var Au=class extends Error{constructor(e,{cause:r}={}){super(e,{cause:r}),Object.assign(this,r),this.name="CpyError"}};import Fk from"path";import pxe from"fs";var vdt=["^npm-debug\\.log$","^\\..*\\.swp$","^\\.DS_Store$","^\\.AppleDouble$","^\\.LSOverride$","^Icon\\r$","^\\._.*","^\\.Spotlight-V100(?:$|\\/)","\\.Trashes","^__MACOSX$","~$","^Thumbs\\.db$","^ehthumbs\\.db$","^[Dd]esktop\\.ini$","@eaDir$"],bdt=new RegExp(vdt.join("|"));function Tdt(t){return bdt.test(t)}function Uk(t){return!Tdt(t)}var IT=class{constructor(e,r,n){this.path=e,this.originalPath=e,this.destination=r,this.options=n,this.isDirectory=!1,!Zf(e)&&pxe.existsSync(e)&&pxe.lstatSync(e).isDirectory()&&(this.path=[e,"**"].join("/"),this.isDirectory=!0)}get name(){return Fk.basename(this.originalPath)}get normalizedPath(){let e=this.originalPath.split("/"),r=e.findIndex(i=>i?Zf(i):!1),n=e.slice(0,r).join("/");return n?Fk.isAbsolute(n)?n:Fk.join(this.options.cwd,n):this.destination}hasMagic(){return Zf(this.options.flat?this.path:this.originalPath)}getMatches(){let e=fxe(this.path,{...this.options,dot:!0,absolute:!0,onlyFiles:!0});return this.options.ignoreJunk&&(e=e.filter(r=>Uk(Fk.basename(r)))),e}};var Rdt={ignoreJunk:!0,flat:!1,cwd:wdt.cwd()},DK=class{constructor(e,r,n){this.path=e.split("/").join(At.sep),this.relativePath=r.split("/").join(At.sep),this.pattern=n,Object.freeze(this)}get name(){return At.basename(this.path)}get nameWithoutExtension(){return At.basename(this.path,At.extname(this.path))}get extension(){return At.extname(this.path).slice(1)}},Cdt=t=>t.flatMap(e=>hxe.default.braces(e,{expand:!0,nodupes:!0})),Idt=({entry:t,destination:e,options:r})=>t.pattern.hasMagic()?r.flat?At.isAbsolute(e)?At.join(e,t.name):At.join(r.cwd,e,t.name):At.join(e,At.relative(t.pattern.normalizedPath,t.path)):At.isAbsolute(e)?At.join(e,t.name):t.pattern.isDirectory&&At.relative(r.cwd,t.path).startsWith("..")?At.join(r.cwd,e,At.basename(t.pattern.originalPath),At.relative(t.pattern.originalPath,t.path)):!t.pattern.isDirectory&&t.path===t.relativePath?At.join(r.cwd,e,At.basename(t.pattern.originalPath),At.relative(t.pattern.originalPath,t.path)):!t.pattern.isDirectory&&r.flat?At.join(r.cwd,e,At.basename(t.pattern.originalPath)):At.join(r.cwd,e,At.relative(r.cwd,t.path)),Pdt=(t,e)=>{let r=At.dirname(t);if(typeof e=="string")return At.join(r,e);if(typeof e=="function"){let n=At.basename(t);return At.join(r,e(n))}return t};function LK(t,e,{concurrency:r=xdt.availableParallelism(),...n}={}){let i=new Map,o=new Adt;n={...Rdt,...n};let s=(async()=>{let a=[],c=0,l=0,u=Cdt([t??[]].flat()).map(h=>h.replaceAll("\\","/")),d=u.filter(h=>!h.startsWith("!")),f=u.filter(h=>h.startsWith("!"));if(d.length===0||!e)throw new Au("`source` and `destination` required");u=u.map(h=>new IT(h,e,{...n,ignore:f}));for(let h of u){let m=[];try{m=h.getMatches()}catch(g){throw new Au(`Cannot glob \`${h.originalPath}\`: ${g.message}`,{cause:g})}if(m.length===0&&!Zf(h.originalPath)&&!Zf(f))throw new Au(`Cannot copy \`${h.originalPath}\`: the file doesn't exist`);a=[...a,...m.map(g=>new DK(g,At.relative(n.cwd,g),h))]}n.filter!==void 0&&(a=await MW(a,n.filter,{concurrency:1024})),a.length===0&&o.emit("progress",{totalFiles:0,percent:1,completedFiles:0,completedSize:0});let p=h=>{let m=i.get(h.sourcePath)||{writtenBytes:0,percent:0};(m.writtenBytes!==h.writtenBytes||m.percent!==h.percent)&&(l-=m.writtenBytes,l+=h.writtenBytes,h.percent===1&&m.percent!==1&&c++,i.set(h.sourcePath,{writtenBytes:h.writtenBytes,percent:h.percent}),o.emit("progress",{totalFiles:a.length,percent:c/a.length,completedFiles:c,completedSize:l,sourcePath:h.sourcePath,destinationPath:h.destinationPath}))};return yT(a,async h=>{let m=Pdt(Idt({entry:h,destination:e,options:n}),n.rename);try{await Lbe(h.path,m,{...n,onProgress:p})}catch(g){throw new Au(`Cannot copy from \`${h.relativePath}\` to \`${m}\`: ${g.message}`,{cause:g})}return m},{concurrency:r})})();return s.on=(...a)=>(o.on(...a),s),s}import kxe from"process";import Xdt from"fs";import B_ from"path";import{on as Odt,once as Ndt}from"events";import{PassThrough as kdt}from"stream";import{finished as _xe}from"stream/promises";function jK(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)FK(i);let e=t.some(({readableObjectMode:i})=>i),r=Mdt(t,e),n=new UK({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return t.length===0&&Exe(n),n}var Mdt=(t,e)=>{if(t.length===0)return 16384;let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},UK=class extends kdt{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;add(e){FK(e),!this.#e.has(e)&&(this.#e.add(e),this.#n??=$dt(this,this.#e),Udt({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#t,onFinished:this.#n}),e.pipe(this,{end:!1}))}remove(e){return FK(e),this.#e.has(e)?(e.unpipe(this),!0):!1}},$dt=async(t,e)=>{zk(t,mxe);let r=new AbortController;try{await Promise.race([Ddt(t,r),Ldt(t,e,r)])}finally{r.abort(),zk(t,-mxe)}},Ddt=async(t,{signal:e})=>{await _xe(t,{signal:e,cleanup:!0})},Ldt=async(t,e,{signal:r})=>{for await(let[n]of Odt(t,"unpipe",{signal:r}))e.has(n)&&n.emit(Sxe)},FK=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Udt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:o})=>{zk(t,gxe);let s=new AbortController;try{await Promise.race([Fdt(o,e),zdt({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:s}),jdt({stream:e,streams:r,ended:n,aborted:i,controller:s})])}finally{s.abort(),zk(t,-gxe)}r.size===n.size+i.size&&(n.size===0&&i.size>0?zK(t):Exe(t))},yxe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Fdt=async(t,e)=>{try{await t,zK(e)}catch(r){yxe(r)?zK(e):vxe(e,r)}},zdt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:o}})=>{try{await _xe(e,{signal:o,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(s){if(o.aborted||!r.has(e))return;yxe(s)?i.add(e):vxe(t,s)}},jdt=async({stream:t,streams:e,ended:r,aborted:n,controller:{signal:i}})=>{await Ndt(t,Sxe,{signal:i}),e.delete(t),r.delete(t),n.delete(t)},Sxe=Symbol("unpipe"),Exe=t=>{t.writable&&t.end()},zK=t=>{(t.readable||t.writable)&&t.destroy()},vxe=(t,e)=>{t.destroyed||(t.once("error",Bdt),t.destroy(e))},Bdt=()=>{},zk=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},mxe=2,gxe=1;var q_=pn(xT(),1);import qdt from"fs";import Vdt from"fs/promises";async function BK(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await Vdt[t](r))[e]()}catch(n){if(n.code==="ENOENT")return!1;throw n}}function qK(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return qdt[t](r)[e]()}catch(n){if(n.code==="ENOENT")return!1;throw n}}var Jur=BK.bind(void 0,"stat","isFile"),bxe=BK.bind(void 0,"stat","isDirectory"),Xur=BK.bind(void 0,"lstat","isSymbolicLink"),Qur=qK.bind(void 0,"statSync","isFile"),Txe=qK.bind(void 0,"statSync","isDirectory"),edr=qK.bind(void 0,"lstatSync","isSymbolicLink");var VK=pn(xT(),1),wxe=pn(NK(),1);import Gdt from"process";import Hdt from"fs";import Wdt from"fs/promises";import j_ from"path";function z_(t){return t.startsWith("\\\\?\\")?t:t.replace(/\\/g,"/")}var PT=t=>t[0]==="!";var Ydt=["**/node_modules","**/flow-typed","**/coverage","**/.git"],Axe={absolute:!0,dot:!0},xxe="**/.gitignore",Kdt=(t,e)=>PT(t)?"!"+j_.posix.join(e,t.slice(1)):j_.posix.join(e,t),Zdt=(t,e)=>{let r=z_(j_.relative(e,j_.dirname(t.filePath)));return t.content.split(/\r?\n/).filter(n=>n&&!n.startsWith("#")).map(n=>Kdt(n,r))},Jdt=(t,e)=>{if(e=z_(e),j_.isAbsolute(t)){if(z_(t).startsWith(e))return j_.relative(e,t);throw new Error(`Path ${t} is not in cwd ${e}`)}return t},Rxe=(t,e)=>{let r=t.flatMap(i=>Zdt(i,e)),n=(0,wxe.default)().add(r);return i=>(i=ti(i),i=Jdt(i,e),i?n.ignores(z_(i)):!1)},Cxe=(t={})=>({cwd:ti(t.cwd)??Gdt.cwd(),suppressErrors:!!t.suppressErrors,deep:typeof t.deep=="number"?t.deep:Number.POSITIVE_INFINITY,ignore:[...t.ignore??[],...Ydt]}),Ixe=async(t,e)=>{let{cwd:r,suppressErrors:n,deep:i,ignore:o}=Cxe(e),s=await(0,VK.default)(t,{cwd:r,suppressErrors:n,deep:i,ignore:o,...Axe}),a=await Promise.all(s.map(async c=>({filePath:c,content:await Wdt.readFile(c,"utf8")})));return Rxe(a,r)},Pxe=(t,e)=>{let{cwd:r,suppressErrors:n,deep:i,ignore:o}=Cxe(e),a=VK.default.sync(t,{cwd:r,suppressErrors:n,deep:i,ignore:o,...Axe}).map(c=>({filePath:c,content:Hdt.readFileSync(c,"utf8")}));return Rxe(a,r)};var Qdt=t=>{if(t.some(e=>typeof e!="string"))throw new TypeError("Patterns must be a string or an array of strings")},Mxe=(t,e)=>{let r=PT(t)?t.slice(1):t;return B_.isAbsolute(r)?r:B_.join(e,r)},$xe=({directoryPath:t,files:e,extensions:r})=>{let n=r?.length>0?`.${r.length>1?`{${r.join(",")}}`:r[0]}`:"";return e?e.map(i=>B_.posix.join(t,`**/${B_.extname(i)?i:`${i}${n}`}`)):[B_.posix.join(t,`**${n?`/*${n}`:""}`)]},Oxe=async(t,{cwd:e=kxe.cwd(),files:r,extensions:n}={})=>(await Promise.all(t.map(async o=>await bxe(Mxe(o,e))?$xe({directoryPath:o,files:r,extensions:n}):o))).flat(),Nxe=(t,{cwd:e=kxe.cwd(),files:r,extensions:n}={})=>t.flatMap(i=>Txe(Mxe(i,e))?$xe({directoryPath:i,files:r,extensions:n}):i),GK=t=>(t=[...new Set([t].flat())],Qdt(t),t),eft=t=>{if(!t)return;let e;try{e=Xdt.statSync(t)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},Dxe=(t={})=>(t={...t,ignore:t.ignore??[],expandDirectories:t.expandDirectories??!0,cwd:ti(t.cwd)},eft(t.cwd),t),Lxe=t=>async(e,r)=>t(GK(e),Dxe(r)),jk=t=>(e,r)=>t(GK(e),Dxe(r)),Uxe=t=>{let{ignoreFiles:e,gitignore:r}=t,n=e?GK(e):[];return r&&n.push(xxe),n},tft=async t=>{let e=Uxe(t);return zxe(e.length>0&&await Ixe(e,t))},Fxe=t=>{let e=Uxe(t);return zxe(e.length>0&&Pxe(e,t))},zxe=t=>{let e=new Set;return r=>{let n=B_.normalize(r.path??r);return e.has(n)||t&&t(n)?!1:(e.add(n),!0)}},jxe=(t,e)=>t.flat().filter(r=>e(r)),Bxe=(t,e)=>{let r=[];for(;t.length>0;){let n=t.findIndex(o=>PT(o));if(n===-1){r.push({patterns:t,options:e});break}let i=t[n].slice(1);for(let o of r)o.options.ignore.push(i);n!==0&&r.push({patterns:t.slice(0,n),options:{...e,ignore:[...e.ignore,i]}}),t=t.slice(n+1)}return r},qxe=(t,e)=>({...e?{cwd:e}:{},...Array.isArray(t)?{files:t}:t}),Vxe=async(t,e)=>{let r=Bxe(t,e),{cwd:n,expandDirectories:i}=e;if(!i)return r;let o=qxe(i,n);return Promise.all(r.map(async s=>{let{patterns:a,options:c}=s;return[a,c.ignore]=await Promise.all([Oxe(a,o),Oxe(c.ignore,{cwd:n})]),{patterns:a,options:c}}))},HK=(t,e)=>{let r=Bxe(t,e),{cwd:n,expandDirectories:i}=e;if(!i)return r;let o=qxe(i,n);return r.map(s=>{let{patterns:a,options:c}=s;return a=Nxe(a,o),c.ignore=Nxe(c.ignore,{cwd:n}),{patterns:a,options:c}})},Gxe=Lxe(async(t,e)=>{let[r,n]=await Promise.all([Vxe(t,e),tft(e)]),i=await Promise.all(r.map(o=>(0,q_.default)(o.patterns,o.options)));return jxe(i,n)}),Edr=jk((t,e)=>{let r=HK(t,e),n=Fxe(e),i=r.map(o=>q_.default.sync(o.patterns,o.options));return jxe(i,n)}),vdr=jk((t,e)=>{let r=HK(t,e),n=Fxe(e),i=r.map(s=>q_.default.stream(s.patterns,s.options));return jK(i).filter(s=>n(s))}),bdr=jk((t,e)=>t.some(r=>q_.default.isDynamicPattern(r,e))),Tdr=Lxe(Vxe),wdr=jk(HK),{convertPathToPattern:Adr}=q_.default;import nft from"process";import OT from"path";import kdr,{promises as Bk}from"fs";import Cdr,{promises as rft}from"fs";async function Hxe(t){try{return await rft.access(t),!0}catch{return!1}}var ift=(t,e,r)=>(e=OT.resolve(t,e),r=OT.resolve(t,r),{sourcePath:e,destinationPath:r}),oft=(t,e,r="Path")=>{if(!t||!e)throw new TypeError(`\`source${r}\` and \`destination${r}\` required`)},sft=(t,e)=>{if(OT.dirname(t)!==OT.dirname(e))throw new Error("`source` and `destination` must be in the same directory")},aft=async(t,e,{overwrite:r=!0,cwd:n=nft.cwd(),directoryMode:i,validateDirectory:o=!1}={})=>{if(n&&({sourcePath:t,destinationPath:e}=ift(n,t,e)),o&&sft(t,e),!r&&await Hxe(e))throw new Error(`The destination file exists: ${e}`);await Bk.mkdir(OT.dirname(e),{recursive:!0,mode:i});try{await Bk.rename(t,e)}catch(s){if(s.code==="EXDEV")await Bk.copyFile(t,e),await Bk.unlink(t);else throw s}};async function Wxe(t,e,r){return oft(t,e),aft(t,e,r)}var WK=async function(t,e,r=!1){if(r)return Wxe(t,e,{overwrite:!1});let{srcGlob:n,dest:i,...o}=await Zxe(t,Kxe(e));if(n&&i)return LK(n,i,{...o,overwrite:!1})},NT=async function(t){let{srcGlob:e,isDir:r,dest:n,...i}=await Zxe(t,"");return e!==void 0&&!await uft(e,r,i)},uft=async function(t,e,r){return e?(await Gxe(t,r)).filter(o=>Uk(Yxe(o))).length===0:!1},Zxe=async function(t,e){let r=await dft(t);if(r===void 0)return{srcGlob:void 0,isDir:!1,cwd:""};let n=r.isDirectory(),i=Yxe(t),o=Kxe(t),s={srcGlob:i,dest:e,isDir:n,cwd:o,dot:!0};return n?{...s,srcGlob:`${i}/**`,dest:lft(e,i)}:s},dft=async t=>{try{return await cft.stat(t)}catch{return}};import{join as spt}from"path";import{stat as fft,lstat as Jxe,readdir as pft,realpath as hft}from"fs/promises";import{Readable as mft}from"stream";import{resolve as Xxe,relative as gft,join as _ft,sep as yft}from"path";var Di={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},YK={root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:Di.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(YK);var rRe="READDIRP_RECURSIVE_ERROR",Sft=new Set(["ENOENT","EPERM","EACCES","ELOOP",rRe]),Qxe=[Di.DIR_TYPE,Di.EVERYTHING_TYPE,Di.FILE_DIR_TYPE,Di.FILE_TYPE],Eft=new Set([Di.DIR_TYPE,Di.EVERYTHING_TYPE,Di.FILE_DIR_TYPE]),vft=new Set([Di.EVERYTHING_TYPE,Di.FILE_DIR_TYPE,Di.FILE_TYPE]),bft=t=>Sft.has(t.code),Tft=process.platform==="win32",eRe=t=>!0,tRe=t=>{if(t===void 0)return eRe;if(typeof t=="function")return t;if(typeof t=="string"){let e=t.trim();return r=>r.basename===e}if(Array.isArray(t)){let e=t.map(r=>r.trim());return r=>e.some(n=>r.basename===n)}return eRe},KK=class extends mft{constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let r={...YK,...e},{root:n,type:i}=r;this._fileFilter=tRe(r.fileFilter),this._directoryFilter=tRe(r.directoryFilter);let o=r.lstat?Jxe:fft;Tft?this._stat=s=>o(s,{bigint:!0}):this._stat=o,this._maxDepth=r.depth??YK.depth,this._wantsDir=i?Eft.has(i):!1,this._wantsFile=i?vft.has(i):!1,this._wantsEverything=i===Di.EVERYTHING_TYPE,this._root=Xxe(n),this._isDirent=!r.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(e){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&e>0;){let r=this.parent,n=r&&r.files;if(n&&n.length>0){let{path:i,depth:o}=r,s=n.splice(0,e).map(c=>this._formatEntry(c,i)),a=await Promise.all(s);for(let c of a){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(o<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,o+1)),this._wantsDir&&(this.push(c),e--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),e--)}}else{let i=this.parents.pop();if(!i){this.push(null);break}if(this.parent=await i,this.destroyed)return}}}catch(r){this.destroy(r)}finally{this.reading=!1}}}async _exploreDir(e,r){let n;try{n=await pft(e,this._rdOptions)}catch(i){this._onError(i)}return{files:n,depth:r,path:e}}async _formatEntry(e,r){let n,i=this._isDirent?e.name:e;try{let o=Xxe(_ft(r,i));n={path:gft(this._root,o),fullPath:o,basename:i},n[this._statsProp]=this._isDirent?e:await this._stat(o)}catch(o){this._onError(o);return}return n}_onError(e){bft(e)&&!this.destroyed?this.emit("warn",e):this.destroy(e)}async _getEntryType(e){if(!e&&this._statsProp in e)return"";let r=e[this._statsProp];if(r.isFile())return"file";if(r.isDirectory())return"directory";if(r&&r.isSymbolicLink()){let n=e.fullPath;try{let i=await hft(n),o=await Jxe(i);if(o.isFile())return"file";if(o.isDirectory()){let s=i.length;if(n.startsWith(i)&&n.substr(s,1)===yft){let a=new Error(`Circular symlink detected: "${n}" points to "${i}"`);return a.code=rRe,this._onError(a)}return"directory"}}catch(i){return this._onError(i),""}}}_includeAsFile(e){let r=e&&e[this._statsProp];return r&&this._wantsEverything&&!r.isDirectory()}};function wft(t,e={}){let r=e.entryType||e.type;if(r==="both"&&(r=Di.FILE_DIR_TYPE),r&&(e.type=r),t){if(typeof t!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(r&&!Qxe.includes(r))throw new Error(`readdirp: Invalid type passed. Use one of ${Qxe.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return e.root=t,new KK(e)}function nRe(t,e={}){return new Promise((r,n)=>{let i=[];wft(t,e).on("data",o=>i.push(o)).on("end",()=>r(i)).on("error",o=>n(o))})}import{mkdir as Lft,readFile as uRe,rm as Uft,writeFile as Fft}from"fs/promises";import{existsSync as dRe}from"fs";import{dirname as zft}from"path";var iRe=t=>{if(!(!Number.isInteger(t)||t<1))return Date.now()+t*1e3},oRe=t=>t!==void 0&&Date.now()>t;import{createHash as kft}from"crypto";import{createReadStream as Mft}from"fs";import Rft from"process";import Cft from"path";import rfr,{promises as sRe}from"fs";import{fileURLToPath as Ift}from"url";var ZK=class{value;next;constructor(e){this.value=e}},kT=class{#e;#r;#t;constructor(){this.clear()}enqueue(e){let r=new ZK(e);this.#e?(this.#r.next=r,this.#r=r):(this.#e=r,this.#r=r),this.#t++}dequeue(){let e=this.#e;if(e)return this.#e=this.#e.next,this.#t--,this.#e||(this.#r=void 0),e.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#r=void 0,this.#t=0}get size(){return this.#t}*[Symbol.iterator](){let e=this.#e;for(;e;)yield e.value,e=e.next}*drain(){for(;this.#e;)yield this.dequeue()}};function qk(t){if(!((Number.isInteger(t)||t===Number.POSITIVE_INFINITY)&&t>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=new kT,r=0,n=()=>{r--,e.size>0&&e.dequeue()()},i=async(a,c,l)=>{r++;let u=(async()=>a(...l))();c(u);try{await u}catch{}n()},o=(a,c,l)=>{e.enqueue(i.bind(void 0,a,c,l)),(async()=>(await Promise.resolve(),r<t&&e.size>0&&e.dequeue()()))()},s=(a,...c)=>new Promise(l=>{o(a,l,c)});return Object.defineProperties(s,{activeCount:{get:()=>r},pendingCount:{get:()=>e.size},clearQueue:{value:()=>{e.clear()}}}),s}var Vk=class extends Error{constructor(e){super(),this.value=e}},Aft=async(t,e)=>e(await t),xft=async t=>{let e=await Promise.all(t);if(e[1]===!0)throw new Vk(e[0]);return!1};async function JK(t,e,{concurrency:r=Number.POSITIVE_INFINITY,preserveOrder:n=!0}={}){let i=qk(r),o=[...t].map(a=>[a,i(Aft,a,e)]),s=qk(n?1:Number.POSITIVE_INFINITY);try{await Promise.all(o.map(a=>s(xft,a)))}catch(a){if(a instanceof Vk)return a.value;throw a}}var aRe={directory:"isDirectory",file:"isFile"};function Pft(t){if(!Object.hasOwnProperty.call(aRe,t))throw new Error(`Invalid type specified: ${t}`)}var Oft=(t,e)=>e[aRe[t]](),Nft=t=>t instanceof URL?Ift(t):t;async function cRe(t,{cwd:e=Rft.cwd(),type:r="file",allowSymlinks:n=!0,concurrency:i,preserveOrder:o}={}){Pft(r),e=Nft(e);let s=n?sRe.stat:sRe.lstat;return JK(t,async a=>{try{let c=await s(Cft.resolve(e,a));return Oft(r,c)}catch{return!1}},{concurrency:i,preserveOrder:o})}var $ft="sha1",lRe=async function(t,e){if(e||t.length===0)return;let r=await cRe(t);return r===void 0?void 0:await Dft(r)},Dft=async function(t){let e=Mft(t,"utf8"),r=kft($ft,{encoding:"hex"});return e.pipe(r),await Dh(r)};var fRe=async function({cachePath:t,move:e,ttl:r,digests:n}){let i=Gk(t),o=iRe(r),s=await lRe(n,e),c=`${JSON.stringify({expires:o,hash:s},null,2)}
484
+ `,l=await jft({hash:s,manifestPath:i,manifestString:c});return{manifestInfo:{manifestPath:i,manifestString:c},identical:l}},jft=async function({hash:t,manifestPath:e,manifestString:r}){return t===void 0||!dRe(e)?!1:await uRe(e,"utf8")===r},pRe=async function({manifestPath:t,manifestString:e}){await Lft(zft(t),{recursive:!0}),await Fft(t,e)},hRe=async function(t){let e=Gk(t);await Uft(e,{force:!0,recursive:!0,maxRetries:3})},Gk=function(t){return`${t}${gRe}`},mRe=function(t){return t.endsWith(gRe)},gRe=".netlify.cache.json",XK=async function(t){let e=Gk(t);if(!dRe(e))return!1;let{expires:r}=await Bft(t);return oRe(r)},Bft=async function(t){let e=Gk(t),r=await uRe(e,"utf-8");return JSON.parse(r)};import{homedir as Wft}from"os";import{resolve as _Re,isAbsolute as Yft,join as Kft,sep as e9}from"path";import{normalize as qft}from"path";import{existsSync as Vft}from"fs";import Gft from"process";var QK=function(t){try{let e=Hft(t);return Vft(e)?Promise.resolve(e):Promise.resolve("")}catch{return Promise.resolve("")}},Hft=function(t=Gft.cwd()){return qft(t)};var MT=async function({path:t,cacheDir:e,cwdOpt:r}){let n=await Zft(t,r),i=await ept({srcPath:n,cacheDir:e,cwdOpt:r});return{srcPath:n,cachePath:i}},Zft=async function(t,e){let r=await QK(e),n=Jft(t,r);return Xft(n,r),n},Jft=function(t,e){if(Yft(t))return _Re(t);if(e!=="")return _Re(e,t);throw new Error(`Current directory does not exist: ${e}`)},Xft=function(t,e){if(e!==""&&Qft(t,e))throw new Error(`Cannot cache ${t} because it is the current directory (${e}) or a parent directory`)},Qft=function(t,e){return`${e}${e9}`.startsWith(`${t}${e9}`)},ept=async function({srcPath:t,cacheDir:e,cwdOpt:r}){let n=Vf({cacheDir:e,cwd:r}),{name:i,relPath:o}=await tpt(t,r);return Kft(n,i,o)},tpt=async function(t,e){let r=await t9(e),n=rpt(t);return r.map(({name:i,base:o})=>ipt(i,o,n)).find(Boolean)},rpt=function(t){return t.replace(npt,"\\")},npt=/^[a-zA-Z]:\\/,ipt=function(t,e,r){if(r===e||!r.startsWith(e))return;let n=r.replace(e,"");return{name:t,relPath:n}},t9=async function(t){return[...await opt(t),{name:"home",base:Wft()},{name:"root",base:e9}]},opt=async function(t){let e=await QK(t);return e===""?[]:[{name:"cwd",base:e}]};var apt=1,r9=async function({cacheDir:t,cwd:e,depth:r=apt}={}){let n=await t9(e),i=Vf({cacheDir:t,cwd:e});return(await Promise.all(n.map(({name:a,base:c})=>cpt({name:a,base:c,cacheDir:i,depth:r})))).flat()},cpt=async function({name:t,base:e,cacheDir:r,depth:n}){return(await nRe(`${r}/${t}`,{fileFilter:lpt,depth:n,type:"files_directories"})).map(({path:s})=>spt(e,s))},lpt=function({basename:t}){return!mRe(t)};var upt=async function(t,{move:e=yRe,ttl:r=hpt,digests:n=[],cacheDir:i,cwd:o}={}){let{srcPath:s,cachePath:a}=await MT({path:t,cacheDir:i,cwdOpt:o});if(!await NT(s))return!1;let{manifestInfo:c,identical:l}=await fRe({cachePath:a,move:e,ttl:r,digests:n});return l||(await n9(a,{force:!0,recursive:!0,maxRetries:3}),await WK(s,a,e),await pRe(c)),!0},dpt=async function(t,{move:e=yRe,cacheDir:r,cwd:n}={}){let{srcPath:i,cachePath:o}=await MT({path:t,cacheDir:r,cwdOpt:n});return!await NT(o)||await XK(o)?!1:(await n9(i,{force:!0,recursive:!0,maxRetries:3}),await WK(o,i,e),!0)},fpt=async function(t,{cacheDir:e,cwd:r}={}){let{cachePath:n}=await MT({path:t,cacheDir:e,cwdOpt:r});return await NT(n)?(await n9(n,{force:!0,recursive:!0,maxRetries:3}),await hRe(n),!0):!1},ppt=async function(t,{cacheDir:e,cwd:r}={}){let{cachePath:n}=await MT({path:t,cacheDir:e,cwdOpt:r});return await NT(n)&&!await XK(n)},yRe=!1,hpt=void 0,Hk=async function(t,e,...r){return Array.isArray(e)?(await Promise.all(e.map(i=>t(i,...r)))).some(Boolean):t(e,...r)},mpt=Hk.bind(null,upt),gpt=Hk.bind(null,dpt),_pt=Hk.bind(null,fpt),ypt=Hk.bind(null,ppt),SRe=function(t){return{save:(e,r)=>mpt(e,{...t,...r}),restore:(e,r)=>gpt(e,{...t,...r}),remove:(e,r)=>_pt(e,{...t,...r}),has:(e,r)=>ypt(e,{...t,...r}),list:e=>r9({...t,...e}),getCacheDir:e=>Vf({...t,...e})}};var Spt=ie("opencode_session"),Ept=async t=>{try{let e=await XN(t),{stdout:r}=await Ft(e,["session","list","--format","json"],{cwd:t,env:{...process.env,OPENCODE_DISABLE_AUTOUPDATE:"1"}}),n=String(r??"").trim();if(!n)return[];let i=JSON.parse(n);return Array.isArray(i)?i:[]}catch(e){return Spt.warn("Could not list opencode sessions",{error:e?.message}),[]}},i9=new Map,ERe=t=>{let e=i9.get(t);if(e)return e;let r=Ept(t).finally(()=>i9.delete(t));return i9.set(t,r),r},vRe=async t=>(await ERe(t)).length>0,bRe=async(t,e)=>e?(await ERe(t)).some(r=>r.id===e):!1;var qr=ie("native_session"),o9=async(t,e)=>(await Promise.all(e.map(async n=>{try{return await Rc.stat(Cc.join(t,n)),n}catch{return null}}))).filter(n=>n!==null),$T=async({runnerId:t,sessionId:e,archive:r,nativeSessionId:n})=>{if(!r)return qr.log("No native session archive descriptor for this runner, skipping"),null;let{baseDir:i,include:o}=r,s=!1;try{s=(await Rc.stat(i)).isDirectory()}catch{}if(!s)return qr.log(`Native session base dir ${i} not found, skipping`),null;let a=await o9(i,o);if(a.length===0)return qr.log(`No native session history found under ${i}, skipping`),null;let c=Cc.join(TRe.tmpdir(),`native-session-${e}.zip`);try{await Ft("zip",["-r","-q","-X",c,...a],{cwd:i});let l=await Rc.readFile(c);qr.log(`Zipped native session (${l.length} bytes) from ${a.join(", ")}`,{nativeSessionId:n});let{upload_url:u,s3_key:d}=await Gse(t,e);return await Qse(u,l,{contentType:"application/zip"}),qr.log("Successfully uploaded native session to S3"),d}catch(l){return qr.error("Failed to archive/upload native session, continuing without it:",l),null}finally{await Rc.rm(c,{force:!0}).catch(()=>{})}},wRe=async(t,e,r=process.cwd())=>{if(e==="opencode")return vRe(r);if(!t)return!1;let{baseDir:n,include:i}=t,o=await o9(n,i);for(let s of o)if((await Rc.readdir(Cc.join(n,s)).catch(()=>[])).length>0)return!0;return!1},vpt=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),ARe=async(t,e)=>{let r=await Rc.readdir(t,{withFileTypes:!0}).catch(()=>[]);for(let n of r)if(n.isDirectory()){if(await ARe(Cc.join(t,n.name),e))return!0}else if(e.test(n.name))return!0;return!1},xRe=async(t,e,r,n=process.cwd())=>{if(r==="opencode")return bRe(n,e);if(!t||!e)return!1;let i=new RegExp(`(^|[^a-zA-Z0-9])${vpt(e)}([^a-zA-Z0-9]|$)`),{baseDir:o,include:s}=t,a=await o9(o,s);for(let c of a)if(await ARe(Cc.join(o,c),i))return!0;return!1},RRe=async({runnerId:t,sessionId:e,archive:r})=>{if(!r)return qr.log("No native session archive descriptor for this runner, skipping restore"),!1;let{baseDir:n}=r,i=Cc.join(TRe.tmpdir(),`native-session-restore-${e}.zip`);try{let o=await Hse(t,e);if(!o?.download_url)return qr.log("No native session available to restore, skipping"),!1;let s=await Xse(o.download_url);return await Rc.writeFile(i,s),qr.log(`Downloaded native session (${s.length} bytes) to ${i}`),await Rc.mkdir(n,{recursive:!0}),await Ft("unzip",["-o","-q",i,"-d",n]),qr.log(`Restored native session into ${n}`),!0}catch(o){return qr.error("Failed to fetch/restore native session, continuing without it:",o),!1}finally{await Rc.rm(i,{force:!0}).catch(()=>{})}},bpt="native-sessions",CRe=(t,e)=>SRe({cacheDir:Cc.join(e.dir,bpt),cwd:t}),IRe=async({archive:t,cache:e})=>{if(!e?.dir||!t)return!1;let{baseDir:r,include:n}=t;try{return await CRe(r,e).restore(n.map(o=>Cc.join(r,o)),{})?(qr.log(`Restored native session from buildbot cache into ${r}`),!0):(qr.log("No native session in buildbot cache, skipping restore"),!1)}catch(i){return qr.error("Failed to restore native session from buildbot cache, continuing without it:",i),!1}},DT=async({archive:t,cache:e,nativeSessionId:r})=>{if(!e?.dir||!t)return qr.log("No buildbot cache configured for the native session, skipping cache seed",{nativeSessionId:r}),!1;let{baseDir:n,include:i}=t;try{return await CRe(n,e).save(i.map(s=>Cc.join(n,s)),{})?(qr.log(`Saved native session to buildbot cache under ${e.dir}`,{nativeSessionId:r}),!0):(qr.log("No native session history to save to buildbot cache, skipping"),!1)}catch(o){return qr.error("Failed to save native session to buildbot cache, continuing:",o),!1}};var Li=ie("cleanup_stage"),ORe=async t=>await Ut(pt(),"cleanup-stage",async()=>Tpt(t)),PRe=1024*1024*12,LT=async({config:t,diff:e,diffBinary:r,resultDiff:n,resultDiffBinary:i})=>{let o={diff_produced:!0};try{Li.log("Getting pre-signed URLs for diff upload");let s=await Vse(t.id,t.sessionId),a=[],c=r||e;c&&a.push(fz(s.result.upload_url,c.path,{size:c.size,base64:!!r}).then(()=>{o.result_diff_s3_key=s.result.s3_key,Li.log("Successfully uploaded result_diff to S3")}));let l=i||n;l&&a.push(fz(s.cumulative.upload_url,l.path,{size:l.size,base64:!!i}).then(()=>{o.cumulative_diff_s3_key=s.cumulative.s3_key,Li.log("Successfully uploaded cumulative_diff to S3")})),Li.log(`Uploading ${a.length} diff(s) to S3 in parallel`),await Promise.all(a)}catch(s){Li.error("S3 upload failed, falling back to inline diffs:",s);let a=(e?.size??0)+aE(r?.size??0)+(n?.size??0)+aE(i?.size??0);if(a>PRe){let c=`Diffs of ${a} bytes exceed the maximum combined inline size of ${PRe} bytes.`;throw Li.error(c),new Error(c)}o.result_diff=e?await Wk(e.path,"utf8"):void 0,o.result_diff_binary=r?(await Wk(r.path)).toString("base64"):void 0,(n||i)&&(o.cumulative_diff=n?await Wk(n.path,"utf8"):void 0,o.cumulative_diff_binary=i?(await Wk(i.path)).toString("base64"):void 0)}if(n||i)try{Li.log("Updating agent runner with cumulative diff"),await Ut(pt(),"update-runner",async()=>{await N0(t.id,o.cumulative_diff_s3_key?{result_diff_s3_key:o.cumulative_diff_s3_key}:{result_diff:o.cumulative_diff,result_diff_binary:o.cumulative_diff_binary})})}catch(s){Li.warn("Failed to record cumulative diff on the runner (session fields still set):",s)}return o},Tpt=async t=>{let{config:e,finalAgentConfig:r,creditWrapUp:n}=t,i=t.result||"Done";Use(e,i,r,n);let o=await Apt(t),s=await s9(t);await xpt(t);let a=wpt({...t,result:i},{diffFields:o,nativeSessionS3Key:s});return await Rpt(e,a),{sessionUpdate:a}},wpt=({result:t,duration:e,previewInfo:r,isProdDeploy:n,hasNetlifyForm:i,hasNetlifyIdentity:o,nativeSessionId:s,finalAgentConfig:a,creditWrapUp:c},{diffFields:l,nativeSessionS3Key:u})=>{let d={result:t,duration:e,...l};return(a||c)&&(d.metadata={...a?{final_agent_config:a}:{},...c?{credit_wrap_up:!0}:{}}),r&&r.deployId&&(d.deploy_id=r.deployId),r&&r.sourceZipFilename&&(d.result_zip_file_name=r.sourceZipFilename),n&&r&&r.deployId&&(d.is_published=!0),s&&(d.native_session_id=s),i&&(d.has_netlify_form=!0),o&&(d.has_netlify_identity=!0),u&&(d.native_session_s3_key=u),d},Apt=async({config:t,diff:e,diffBinary:r,resultDiff:n,resultDiffBinary:i})=>{if(t.mode!=="ask"&&(e||r||n||i)){let s=await LT({config:t,diff:e,diffBinary:r,resultDiff:n,resultDiffBinary:i});return t.answeredInteraction?{...s,result_diff:s.result_diff??null,result_diff_binary:s.result_diff_binary??null,result_diff_s3_key:s.result_diff_s3_key??null}:s}return Li.log("No diffs to upload"),t.answeredInteraction&&t.mode!=="ask"?{diff_produced:!1,result_diff:null,result_diff_binary:null,result_diff_s3_key:null}:{}},s9=async({config:t,nativeSessionArchive:e,nativeSessionId:r})=>Ut(pt(),"upload-native-session",()=>$T({runnerId:t.id,sessionId:t.sessionId,archive:e,nativeSessionId:r})),xpt=async({config:t,nativeSessionArchive:e,nativeSessionId:r})=>{Ye().warmNativeResumeEnabled&&await Ut(pt(),"save-native-session-cache",()=>DT({archive:e,cache:t.cache,nativeSessionId:r}))},Rpt=async(t,e)=>{Li.log("Updated agent runner with result"),await M0(async()=>await Ut(pt(),"update-runner-session",()=>mn(t.id,t.sessionId,e)),{maxRetries:3,baseDelay:1e3,onRetry:(r,n)=>{Li.error(`Error updating agent runner session (attempt ${r}):`,n),Li.log("Retrying...")}}),Li.log("Finished updating agent runner with result")};var NRe=ie("pending_session_diff"),kRe=async({config:t,cwd:e})=>{let r="lookup";try{if(!(await Ah(t.id,t.sessionId)).has_result_diff){Y.inc("pending_diff.restore",1,{outcome:"no_saved_diff"});return}r="download";let i=await zse(t.id,t.sessionId);r="validate";let o=i.startsWith("diff --git ")?i:Buffer.from(i,"base64").toString("utf8");if(!o.startsWith("diff --git "))throw new Error("Saved session diff is empty or invalid");r="apply",await Ipt(o,e)}catch(n){throw Y.inc("pending_diff.restore",1,{outcome:"failed",step:r}),n}Y.inc("pending_diff.restore",1,{outcome:"restored"}),NRe.info("Restored pending session diff",{sessionId:t.sessionId})},Ipt=async(t,e=process.cwd())=>{await nr(["apply","--whitespace=nowarn","-"],{cwd:e,input:t,stdio:["pipe","ignore","pipe"]})},MRe=async({config:t,cwd:e})=>{if(t.mode==="ask")return;let r="snapshot";try{let n=await Ppt({config:{runSha:t.runSha,sessionId:t.sessionId},cwd:e});r="upload";let i=n.hasChanges?await LT({config:t,diff:n.diff,diffBinary:n.diffBinary}):void 0;return{diff_produced:n.hasChanges,result_diff:i?.result_diff_binary?Buffer.from(i.result_diff_binary,"base64").toString("utf8"):i?.result_diff??null,result_diff_binary:null,result_diff_s3_key:i?.result_diff_s3_key??null}}catch(n){Y.inc("pending_diff.save",1,{outcome:"failed",step:r}),NRe.warn("Failed to preserve pending session diff",{sessionId:t.sessionId,error:n});return}},Ppt=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{let{hasChanges:n,status:i}=await Qj(r);if(!n)return{hasChanges:!1};let o=await OE(i,r),s=e?[]:eB(i).filter(u=>u.stage&&!u.change).map(u=>`:(literal)${u.filePath}`),a=await a9.mkdtemp(c9.join(Cpt.tmpdir(),KC(t.sessionId))),c=c9.join(a,"index"),l={GIT_INDEX_FILE:c};try{await nr(["read-tree","HEAD"],{cwd:r,env:l}),await nr(["add",".",...o],{cwd:r,env:l}),s.length>0&&await nr(["reset","--pathspec-from-file=-","--pathspec-file-nul","HEAD"],{cwd:r,env:l,input:s.join("\0")});let u=async({from:_,fileName:v,binary:w})=>{let y=c9.join(a,v);await nr([...w?["diff",_,"--cached","--binary"]:["diff",_,"--cached"],`--output=${y}`],{stdio:["ignore","ignore","pipe"],cwd:r,env:l});let{size:A}=await a9.stat(y);return{path:y,size:A}},d=await u({from:t.runSha,fileName:"session.patch"});if(!(d.size>0))return{hasChanges:!1,ignored:o};let p=await u({from:t.runSha,fileName:"session-binary.patch",binary:!0}),h,m;if(t.sha){h=await u({from:t.sha,fileName:"cumulative.patch"});let _=await u({from:t.sha,fileName:"cumulative-binary.patch",binary:!0});await IE(h,_)||(m=_)}Y.distribution("diff.size",p.size,{phase:"pending"});let g={hasChanges:!0,diff:d,resultDiff:h,ignored:o};return await IE(d,p)||(g.diffBinary=p),m&&(g.resultDiffBinary=m),g}finally{await a9.rm(c,{force:!0})}};var Jf=ie("init_stage"),kpt=async(t,e)=>{let r=Npt.join(e,Zr,Mo,t);try{return(await Opt.readdir(r,{withFileTypes:!0})).filter(i=>i.isFile()&&!i.name.endsWith(".part")).length}catch{return 0}},Mpt=async(t,e)=>{try{let r=await Ofe(e);Y.inc("repo.empty",1,{empty:r,has_repo:t.hasRepo}),r&&Jf.warn("Repository has no committed files",{mode:t.mode})}catch(r){Jf.warn("Failed to check whether the repository is empty",{error:r?.message||r})}},$pt=async(t,e)=>{if(!(!Ye().fetchAssetsEnabled||!t.assetMap))try{await iae({assetMap:t.assetMap,cwd:e})}catch(r){let n=cl(r)?r.kind:"unknown";throw n==="unknown"&&Jf.error("Failed to fetch session assets",{error:r?.message||r}),Y.inc("assets.fetch_failed",1,{kind:n}),new Error("Failed to download the attachments uploaded for this session. Please try again.")}},$Re=async({config:t,apiThrottle:e,apiToken:r,cwd:n,runnerVersion:i,isHotFollowUp:o=!1})=>await Ut(pt(),"init-stage",async s=>{let a=performance.now();s?.setAttributes({"init.runner":t.runner,"init.id":t.id,"init.sessionId":t.sessionId,"init.hasRepo":t.hasRepo,"init.useGateway":t.useGateway,"init.runnerVersion":i||"unknown"});let c=w_[t.runner];if(!c)throw s?.setAttributes({"init.error":"unsupported_runner"}),new Error(`${t.runner} is not supported`);if(t.runner==="opencode"&&!Ye().opencodeEnabled)throw s?.setAttributes({"init.error":"opencode_disabled"}),new Error("opencode runner is not enabled on this environment");let l=Dpt({apiToken:r,config:t});if(Dse(l),t.siteId)try{t.site=await Fse(t.siteId)}catch(_){Jf.error("Failed to get the site information",{error:_})}let u=t.useGateway?await tae({config:t}):void 0;s?.setAttributes({"init.aiGateway.created":!!u}),t.answeredInteraction||await mn(t.id,t.sessionId,{steps:[{title:"Environment ready",category:H.Environment,type:"ready"}]});let d=5*1024,f=1e4,p=D0(async({steps:_=[],duration:v})=>{let w=_.map(y=>{let T=y.title?_z(Qn(y.title),d):void 0,A=y.category===H.AgentMessage||y.category===H.SubagentPrompt,R=y.message?Qn(y.message):void 0,P=R&&!A?_z(R,f):R,k=y.category===H.SubagentPrompt,L=P&&!k?_N(P):P;return L!==P&&Jf.info("Sanitized internal error from step message",{original:P}),{...y,title:T,message:L}});_.length=0;try{return await mn(t.id,t.sessionId,{steps:w,duration:v})}catch(y){Jf.error("persistSteps failed",{error:y?.message||y})}},e);if(!(o&&t.answeredInteraction)){Jf.info("Adding build files to stage");let _=await OE();await Jj(_)}V_.env.NETLIFY_LOCAL_MODE||await _be(),t.mode!=="create"&&await Mpt(t,n??V_.cwd());let h;t.hasRepo?t.sha?(h=t.sha,s?.setAttributes({"init.sha.source":"provided"})):(h=await PE(),t.mode!=="redeploy"&&await N0(t.id,{sha:h}),s?.setAttributes({"init.sha.source":"current_commit"})):(h=await Nfe(),s?.setAttributes({"init.sha.source":"first_commit","init.source":"zip"})),t.runSha=await PE(),t.answeredInteraction&&!o&&t.mode!=="ask"&&await kRe({config:t,cwd:n}),await $pt(t,n);let m=await kpt(t.sessionId,n??V_.cwd());Y.inc("assets.session",1,{has_assets:m>0}),m>0&&Y.distribution("assets.session.count",m);let g=performance.now()-a;return s?.setAttributes({"init.sha":h||"unknown","init.duration.ms":g,"init.status":"success","init.assetCount":m}),{aiGateway:u,context:l,persistSteps:p,runner:c,sha:h}}),Dpt=({apiToken:t,config:e})=>({constants:{NETLIFY_API_HOST:V_.env.NETLIFY_API_HOST||"api.netlify.com",NETLIFY_API_TOKEN:t||V_.env.NETLIFY_API_TOKEN,SITE_ID:e.siteId,FUNCTIONS_DIST:V_.env.FUNCTIONS_DIST||"netlify/functions"}});Ee();import Ypt from"crypto";import yr from"fs/promises";import Yk from"os";import vt from"path";import sa from"process";import{fileURLToPath as Kpt}from"url";var Lpt=ie("agent_connections"),Upt=async t=>{let e=mEe();if(e)return e;if(!t?.id||!t?.sessionId)return[];let{connections:r}=await qse(t.id,t.sessionId);return r??[]},DRe=async t=>{if(!Ye().connectionsEnabled)return null;let e=[];try{let r=await Upt(t);if(r.length===0)return null;e=await _Ee(r);let{owner:n}=yEe(e),i={};for(let[s,a]of n)(i[a.service]??=[]).push(s);let o=Object.keys(i);return o.length===0?null:{available:o,tools:i}}catch(r){return Lpt.warn("Could not fetch agent connections; continuing without them",{message:r?.message}),Y.inc("agent_connections.fetch_failed",1),null}finally{await gEe(e)}};import Fpt from"path";var LRe="- Any question you ask the user MUST go through `mcp__netlify_interactions__ask`. Before asking, read the `asking-questions` skill and follow its instructions. This applies to clarification, missing information, choices, confirmation, and approval.\n - NEVER ask the user a question in any other way. Other outputs do not create an interaction or pause the session for an answer. Do not use another question tool.\n - Bundle the questions you need into one call, then stop. If you need the user's answer to complete the task, call the tool before returning a final response.";var URe={ask:'"Ask mode", which can explore and answer questions but not edit or deploy',build:'"Build mode", which can edit files and deploy'},zpt=t=>t==="ask"?"build":"ask",l9=t=>`This run is in ${URe[t]}; the other mode is ${URe[zpt(t)]}. Use these exact names when you refer to the modes, e.g. "switch to Build mode" \u2014 never "write mode", "execution mode", "read-only mode" or any other wording.`,jpt=`<responses>
485
485
  - ${l9("ask")}
486
486
  - Write progress updates in concise, present-tense language describing what is happening now (e.g. "Reading the routing setup", "Checking the deploy configuration"). Avoid third-person self-reference (e.g. "the agent"), and avoid future-tense phrasing like "will".
487
487
  - Answer the user's question by exploring the project (read files, search, browse the web). Do NOT modify project files, run mutating commands, or attempt to build or deploy. No deploy is created for this run.
@@ -586,12 +586,12 @@ You're an AI agent designed to assist with tasks related to a Netlify project. P
586
586
  </extra_context>
587
587
 
588
588
  ${n}
589
- `},u9=null;var UT="SKILL.md",tht="SKILL.ask.md",rht=()=>{let t=Ye().skillVariations;return pi.log(`Active skill variations: ${t.length?t.join(", "):"none"}`),t},QRe=t=>{let e=t.match(/^(.+)@([^.]+)(.*)$/);return e?{baseName:`${e[1]}${e[3]}`,variation:e[2]}:{baseName:t,variation:null}},nht=async(t,e=[])=>{try{let r=await yr.readdir(t);for(let n of r){let{baseName:i,variation:o}=QRe(n);if(o&&i===UT&&e.includes(o))return{filename:n,variation:o}}}catch{}return{filename:UT,variation:null}},iht=async({targetPath:t,skillName:e,isAskMode:r})=>{let n=vt.join(t,tht);try{await yr.access(n)}catch{return}r&&(await yr.copyFile(n,vt.join(t,UT)),pi.log(`Using the ask-mode skill for ${e}`)),await yr.unlink(n)},oht=async(t,{targetDir:e,sourceDir:r,mode:n}={})=>{let i=e||XRe[t],o=r||Xpt;if(!i)return pi.warn(`Unknown runner: ${t}, skipping skills setup`),[];let s=n==="ask",a=rht(),c=Ye().questionsEnabled,l=JSON.stringify([t,i,o,s?"ask":"default",c,[...a].sort()]);if(u9?.key===l)return u9.skills;let u=[];try{await yr.mkdir(i,{recursive:!0});let d=await yr.readdir(o);for(let f of d){let p=vt.join(o,f);if(!(await yr.stat(p)).isDirectory())continue;let{baseName:m,variation:g}=QRe(f);if(g&&!a.includes(g)||m===Qpt&&!c)continue;let _=vt.join(i,m);try{await yr.cp(p,_,{recursive:!0});let v=await nht(p,a);v.variation&&(await yr.copyFile(vt.join(p,v.filename),vt.join(_,UT)),await yr.unlink(vt.join(_,v.filename)),pi.log(`Using skill variation for ${m}: ${v.filename}`)),await iht({targetPath:_,skillName:m,isAskMode:s}),u.push(m),g&&pi.log(`Installed skill variation: ${m} (variation: ${g})`)}catch(v){pi.warn(`Failed to copy skill ${m}:`,v.message),K.inc("context.degraded",1,{component:"skills"})}}}catch(d){pi.warn("Failed to setup agent skills:",d.message),K.inc("context.degraded",1,{component:"skills"})}if(u.includes("netlify-ai-gateway"))try{let d=await cE(),f=vt.join(i,"netlify-ai-gateway",UT),p=await yr.readFile(f,"utf-8");if(p.includes("<!-- AVAILABLE_MODELS -->")){let h=Object.entries(d.providers).map(([m,g])=>`### ${m}
589
+ `},u9=null;var UT="SKILL.md",tht="SKILL.ask.md",rht=()=>{let t=Ye().skillVariations;return pi.log(`Active skill variations: ${t.length?t.join(", "):"none"}`),t},QRe=t=>{let e=t.match(/^(.+)@([^.]+)(.*)$/);return e?{baseName:`${e[1]}${e[3]}`,variation:e[2]}:{baseName:t,variation:null}},nht=async(t,e=[])=>{try{let r=await yr.readdir(t);for(let n of r){let{baseName:i,variation:o}=QRe(n);if(o&&i===UT&&e.includes(o))return{filename:n,variation:o}}}catch{}return{filename:UT,variation:null}},iht=async({targetPath:t,skillName:e,isAskMode:r})=>{let n=vt.join(t,tht);try{await yr.access(n)}catch{return}r&&(await yr.copyFile(n,vt.join(t,UT)),pi.log(`Using the ask-mode skill for ${e}`)),await yr.unlink(n)},oht=async(t,{targetDir:e,sourceDir:r,mode:n}={})=>{let i=e||XRe[t],o=r||Xpt;if(!i)return pi.warn(`Unknown runner: ${t}, skipping skills setup`),[];let s=n==="ask",a=rht(),c=Ye().questionsEnabled,l=JSON.stringify([t,i,o,s?"ask":"default",c,[...a].sort()]);if(u9?.key===l)return u9.skills;let u=[];try{await yr.mkdir(i,{recursive:!0});let d=await yr.readdir(o);for(let f of d){let p=vt.join(o,f);if(!(await yr.stat(p)).isDirectory())continue;let{baseName:m,variation:g}=QRe(f);if(g&&!a.includes(g)||m===Qpt&&!c)continue;let _=vt.join(i,m);try{await yr.cp(p,_,{recursive:!0});let v=await nht(p,a);v.variation&&(await yr.copyFile(vt.join(p,v.filename),vt.join(_,UT)),await yr.unlink(vt.join(_,v.filename)),pi.log(`Using skill variation for ${m}: ${v.filename}`)),await iht({targetPath:_,skillName:m,isAskMode:s}),u.push(m),g&&pi.log(`Installed skill variation: ${m} (variation: ${g})`)}catch(v){pi.warn(`Failed to copy skill ${m}:`,v.message),Y.inc("context.degraded",1,{component:"skills"})}}}catch(d){pi.warn("Failed to setup agent skills:",d.message),Y.inc("context.degraded",1,{component:"skills"})}if(u.includes("netlify-ai-gateway"))try{let d=await cE(),f=vt.join(i,"netlify-ai-gateway",UT),p=await yr.readFile(f,"utf-8");if(p.includes("<!-- AVAILABLE_MODELS -->")){let h=Object.entries(d.providers).map(([m,g])=>`### ${m}
590
590
 
591
591
  ${g.models.map(_=>`- \`${_}\``).join(`
592
592
  `)}`).join(`
593
593
 
594
- `);p=p.replace("<!-- AVAILABLE_MODELS -->",h),await yr.writeFile(f,p,"utf-8"),pi.log("Injected dynamic model list into AI Gateway skill",{modelList:h})}}catch(d){pi.warn("Failed to inject dynamic model list into AI Gateway skill:",d.message),K.inc("context.degraded",1,{component:"model_list"})}return u.length>0&&(pi.log(`Installed ${u.length} skills for ${t}: ${u.join(", ")}`,{runner:t,skills:u,targetDir:i}),Tt.getActiveSpan()?.setAttributes({"agent.skills_loaded":u,"agent.skills_loaded_count":u.length})),u9={key:l,skills:u},u},sht=t=>{let e=t?.constants||{};return{siteId:e.SITE_ID,accountId:sa.env.NETLIFY_TEAM_ID,userId:sa.env.NETLIFY_AGENT_RUNNER_USER_ID,siteSlug:sa.env.SITE_NAME,apiHost:e.NETLIFY_API_HOST,functionsDir:e.FUNCTIONS_DIST}},aht=10,cht=async t=>{let{name:e,ext:r}=vt.parse(t),n=t,i=vt.join(sa.cwd(),Zr,n),o=0;for(;await lht(i);){if(o>=aht)throw new Error("Failed to generate context file");n=`${e}-${Ypt.randomUUID().slice(0,5)}${r}`,i=vt.join(sa.cwd(),Zr,n),o+=1}return n},lht=async t=>{try{return await yr.access(t),!0}catch{return!1}},Kk=async t=>{try{return(await yr.readdir(t)).length>0}catch{return!1}},e0e=async({cliPath:t,netlify:e,config:r,buildErrorContext:n,additionalContext:i,resumePrompt:o,preserveResultsFile:s})=>{let a=sht(e),c=await cht(Sse),l=vt.join(sa.cwd(),Zr);await yr.mkdir(l,{recursive:!0});let u=vt.join(Zr,c),d=vt.join(sa.cwd(),u);if(!s){let T=vt.join(sa.cwd(),Zr,Ma);try{await yr.unlink(T),pi.log(`Deleted old results file: ${T}`)}catch{}}let f=KRe(n),p=r.skillsTargetDir||XRe[r.runner];if(r.runner&&await oht(r.runner,{targetDir:r.skillsTargetDir,mode:r.mode}),o){let T=Zk(r.sessionId),A=T?vt.join(l,Mo,T):null,R=A&&await Kk(A)?`
594
+ `);p=p.replace("<!-- AVAILABLE_MODELS -->",h),await yr.writeFile(f,p,"utf-8"),pi.log("Injected dynamic model list into AI Gateway skill",{modelList:h})}}catch(d){pi.warn("Failed to inject dynamic model list into AI Gateway skill:",d.message),Y.inc("context.degraded",1,{component:"model_list"})}return u.length>0&&(pi.log(`Installed ${u.length} skills for ${t}: ${u.join(", ")}`,{runner:t,skills:u,targetDir:i}),Tt.getActiveSpan()?.setAttributes({"agent.skills_loaded":u,"agent.skills_loaded_count":u.length})),u9={key:l,skills:u},u},sht=t=>{let e=t?.constants||{};return{siteId:e.SITE_ID,accountId:sa.env.NETLIFY_TEAM_ID,userId:sa.env.NETLIFY_AGENT_RUNNER_USER_ID,siteSlug:sa.env.SITE_NAME,apiHost:e.NETLIFY_API_HOST,functionsDir:e.FUNCTIONS_DIST}},aht=10,cht=async t=>{let{name:e,ext:r}=vt.parse(t),n=t,i=vt.join(sa.cwd(),Zr,n),o=0;for(;await lht(i);){if(o>=aht)throw new Error("Failed to generate context file");n=`${e}-${Ypt.randomUUID().slice(0,5)}${r}`,i=vt.join(sa.cwd(),Zr,n),o+=1}return n},lht=async t=>{try{return await yr.access(t),!0}catch{return!1}},Kk=async t=>{try{return(await yr.readdir(t)).length>0}catch{return!1}},e0e=async({cliPath:t,netlify:e,config:r,buildErrorContext:n,additionalContext:i,resumePrompt:o,preserveResultsFile:s})=>{let a=sht(e),c=await cht(Sse),l=vt.join(sa.cwd(),Zr);await yr.mkdir(l,{recursive:!0});let u=vt.join(Zr,c),d=vt.join(sa.cwd(),u);if(!s){let T=vt.join(sa.cwd(),Zr,Ma);try{await yr.unlink(T),pi.log(`Deleted old results file: ${T}`)}catch{}}let f=KRe(n),p=r.skillsTargetDir||XRe[r.runner];if(r.runner&&await oht(r.runner,{targetDir:r.skillsTargetDir,mode:r.mode}),o){let T=Zk(r.sessionId),A=T?vt.join(l,Mo,T):null,R=A&&await Kk(A)?`
595
595
  <attachments>
596
596
  New uploads for this request are in ${A}/
597
597
  </attachments>`:"",P=ZRe({dirPath:l,config:r,skillsDir:p,cliPath:t,questionsEnabled:Ye().questionsEnabled}),k=JRe({sanitizedPrompt:d9(r.prompt),buildErrorContextText:f,assetsSection:R,modeReminder:P});return await yr.writeFile(d,k,"utf-8"),pi.log(`Generated minimal resume prompt at: ${d}`),k}let h="";r.siteContext&&r.siteContext.length!==0&&(h=`
@@ -634,34 +634,34 @@ You're an AI agent designed to assist with tasks related to a Netlify project. P
634
634
  </request>
635
635
 
636
636
  Use the following file for the complete context of the ask, the environment, and what's available. ${d} You MUST READ ALL OF IT. Make sure to read it first. Never cite or paraphrase private context.
637
- `),y};var uht=ie("prompt"),t0e=async({cliPath:t,config:e,netlify:r,buildErrorContext:n,additionalContext:i,resumePrompt:o,preserveResultsFile:s})=>{let a=await e0e({cliPath:t,config:e,netlify:r,buildErrorContext:n,additionalContext:i,resumePrompt:o,preserveResultsFile:s});return process.env.AGENT_RUNNER_DEBUG&&uht.log("Contextful Prompt:",a),{prompt:a}};var r0e=ie("session_manager"),f9=null;var dht,p9,fht=0,pht,hht;var h9=()=>dht,n0e=()=>f9!==null,i0e=()=>fht,o0e=()=>hht,s0e=()=>pht,m9=async(t,e)=>{if(!Ye().idleTimeoutEnabled||!t||t===e)return;let r=w_[t];if(r)try{await r.clean(),r0e.info(`Wiped previous agent state (${t}) on switch to ${e}`)}catch(n){r0e.warn(`Failed to clean previous agent ${t} on switch`,{error:n?.message||n})}finally{p9=void 0}},FT=t=>{p9=t};var a0e=t=>{let e=t.previousSession?.nativeSessionId;return!!e&&e===p9},c0e=async()=>{if(f9)try{await f9}catch{}};var l0e=t=>{let e=t.previousSession;return e?e.agent!==t.runner?{viable:!1,outcome:"agent_switch"}:e.nativeSessionId?{viable:!0,outcome:"resumed"}:{viable:!1,outcome:"missing_native_session_id"}:{viable:!1,outcome:"not_eligible"}};import{randomUUID as mht}from"crypto";var _9=ie("interactions"),u0e="question",d0e="authorization",ght=["answered","skipped","dismissed"],f0e=async(t,e,r)=>{let n=mht(),{authorization:i}=e,[o,s]=i?[{type:d0e,status:"pending",payload:{...i}},H.Authorization]:[{type:u0e,status:"pending",payload:e.questions},H.Question];return await mn(t.id,t.sessionId,{state:"await_input",interactions:{[n]:o},steps:[{id:n,refId:n,category:s}],...r?.diffFields,...r?.nativeSessionId?{native_session_id:r.nativeSessionId}:{},...r?.nativeSessionS3Key?{native_session_s3_key:r.nativeSessionS3Key}:{}}),n},p0e=(t,e,r)=>{if(t.authorization){_9.log("Agent paused on a service authorization; session set to await_input",{sessionId:e,refId:r,service:t.authorization.service}),K.inc("inference.pending_authorization",1);return}let n=t.questions?.length??0;_9.log("Agent paused on a question; session set to await_input",{sessionId:e,refId:r,questionCount:n}),K.inc("inference.pending_question",1),K.distribution("inference.questions_per_ask",n)},h0e=async t=>{let e;try{e=await Ah(t.id,t.sessionId)}catch(s){return _9.warn("Failed to fetch session for the full answer fold",{error:s?.message}),K.inc("inference.answer_fetch_failed",1),null}let r=e?.interactions;if(!r)return[];let n=[],i=new Set,o=(s,a)=>{if(!(!a||i.has(s))&&(i.add(s),!!ght.includes(a.status??""))){if(a.type===d0e){let c=a.payload??{};n.push({refId:s,questions:[],responses:[],authorization:{service:c.service,granted:a.status==="answered"}});return}a.type===u0e&&n.push({refId:s,questions:a.payload??[],responses:a.response??[],...a.instruction?{instruction:a.instruction}:{}})}};for(let s of e?.steps??[])s?.refId&&o(s.refId,r[s.refId]);for(let[s,a]of Object.entries(r))o(s,a);return n},m0e=()=>({counted:!1}),_ht=(t,e)=>{if(e==null)return"skipped";let r=new Set(t.options?.map(o=>o.label)??[]),i=(Array.isArray(e)?e:[e]).filter(o=>r.has(o)).length;return i===0?"free_text":i===1?"option":"multi_select"},g0e=t=>{let e=0;t.questions.forEach((r,n)=>{let i=_ht(r,t.responses[n]);i==="skipped"&&(e+=1),K.inc("interaction.answer_kind",1,{kind:i})}),K.distribution("interaction.questions_skipped",e),t.instruction?.trim()&&K.inc("interaction.override_instruction",1)},_0e=(t,e)=>{let r=!1,n=e.flatMap(s=>s.questions.map((a,c)=>{let l=s.responses[c];l==null&&(r=!0);let u=l==null?"(skipped)":Array.isArray(l)?l.join(", "):l;return{question:a.question,answer:u}})),i=e.map(s=>s.instruction?.trim()).filter(s=>!!s).join(`
637
+ `),y};var uht=ie("prompt"),t0e=async({cliPath:t,config:e,netlify:r,buildErrorContext:n,additionalContext:i,resumePrompt:o,preserveResultsFile:s})=>{let a=await e0e({cliPath:t,config:e,netlify:r,buildErrorContext:n,additionalContext:i,resumePrompt:o,preserveResultsFile:s});return process.env.AGENT_RUNNER_DEBUG&&uht.log("Contextful Prompt:",a),{prompt:a}};var r0e=ie("session_manager"),f9=null;var dht,p9,fht=0,pht,hht;var h9=()=>dht,n0e=()=>f9!==null,i0e=()=>fht,o0e=()=>hht,s0e=()=>pht,m9=async(t,e)=>{if(!Ye().idleTimeoutEnabled||!t||t===e)return;let r=w_[t];if(r)try{await r.clean(),r0e.info(`Wiped previous agent state (${t}) on switch to ${e}`)}catch(n){r0e.warn(`Failed to clean previous agent ${t} on switch`,{error:n?.message||n})}finally{p9=void 0}},FT=t=>{p9=t};var a0e=t=>{let e=t.previousSession?.nativeSessionId;return!!e&&e===p9},c0e=async()=>{if(f9)try{await f9}catch{}};var l0e=t=>{let e=t.previousSession;return e?e.agent!==t.runner?{viable:!1,outcome:"agent_switch"}:e.nativeSessionId?{viable:!0,outcome:"resumed"}:{viable:!1,outcome:"missing_native_session_id"}:{viable:!1,outcome:"not_eligible"}};import{randomUUID as mht}from"crypto";var _9=ie("interactions"),u0e="question",d0e="authorization",ght=["answered","skipped","dismissed"],f0e=async(t,e,r)=>{let n=mht(),{authorization:i}=e,[o,s]=i?[{type:d0e,status:"pending",payload:{...i}},H.Authorization]:[{type:u0e,status:"pending",payload:e.questions},H.Question];return await mn(t.id,t.sessionId,{state:"await_input",interactions:{[n]:o},steps:[{id:n,refId:n,category:s}],...r?.diffFields,...r?.nativeSessionId?{native_session_id:r.nativeSessionId}:{},...r?.nativeSessionS3Key?{native_session_s3_key:r.nativeSessionS3Key}:{}}),n},p0e=(t,e,r)=>{if(t.authorization){_9.log("Agent paused on a service authorization; session set to await_input",{sessionId:e,refId:r,service:t.authorization.service}),Y.inc("inference.pending_authorization",1);return}let n=t.questions?.length??0;_9.log("Agent paused on a question; session set to await_input",{sessionId:e,refId:r,questionCount:n}),Y.inc("inference.pending_question",1),Y.distribution("inference.questions_per_ask",n)},h0e=async t=>{let e;try{e=await Ah(t.id,t.sessionId)}catch(s){return _9.warn("Failed to fetch session for the full answer fold",{error:s?.message}),Y.inc("inference.answer_fetch_failed",1),null}let r=e?.interactions;if(!r)return[];let n=[],i=new Set,o=(s,a)=>{if(!(!a||i.has(s))&&(i.add(s),!!ght.includes(a.status??""))){if(a.type===d0e){let c=a.payload??{};n.push({refId:s,questions:[],responses:[],authorization:{service:c.service,granted:a.status==="answered"}});return}a.type===u0e&&n.push({refId:s,questions:a.payload??[],responses:a.response??[],...a.instruction?{instruction:a.instruction}:{}})}};for(let s of e?.steps??[])s?.refId&&o(s.refId,r[s.refId]);for(let[s,a]of Object.entries(r))o(s,a);return n},m0e=()=>({counted:!1}),_ht=(t,e)=>{if(e==null)return"skipped";let r=new Set(t.options?.map(o=>o.label)??[]),i=(Array.isArray(e)?e:[e]).filter(o=>r.has(o)).length;return i===0?"free_text":i===1?"option":"multi_select"},g0e=t=>{let e=0;t.questions.forEach((r,n)=>{let i=_ht(r,t.responses[n]);i==="skipped"&&(e+=1),Y.inc("interaction.answer_kind",1,{kind:i})}),Y.distribution("interaction.questions_skipped",e),t.instruction?.trim()&&Y.inc("interaction.override_instruction",1)},_0e=(t,e)=>{let r=!1,n=e.flatMap(s=>s.questions.map((a,c)=>{let l=s.responses[c];l==null&&(r=!0);let u=l==null?"(skipped)":Array.isArray(l)?l.join(", "):l;return{question:a.question,answer:u}})),i=e.map(s=>s.instruction?.trim()).filter(s=>!!s).join(`
638
638
 
639
639
  `),o=r&&!i?'A "(skipped)" answer means the user chose not to answer; proceed with your best judgment there.':"";return[t,n.length?NEe(n,{skipNote:o,overrideInstruction:i||void 0}):"",yht(e)].filter(Boolean).join(`
640
640
 
641
641
  `)},yht=t=>{let e=t.map(r=>r.authorization).filter(r=>!!r).map(r=>r.granted?`- ${r.service} is now authorized. Its tools are available to you.`:`- The user declined to authorize ${r.service}. Continue without it and do not request authorization for ${r.service} again in this run.`);return e.length?["## Service authorization","",...e].join(`
642
- `):""};var G_=ie("inference_stage"),y0e=5,xu=async t=>{let{additionalContext:e,cliPath:r,config:n,context:i,buildErrors:o,runner:s,persistSteps:a,aiGateway:c,attempt:l,contextPrefix:u,priorAgentSessionId:d,cwd:f,abortSignal:p,onSessionId:h,resumeForCreditWrapUp:m,forceLowEffortForCreditWrapUp:g,answerFold:_}=t;if(qa())throw new Error("Shutdown in progress, aborting inference stage");G_.log(`Running inference stage, attempt ${l} of ${y0e}`);let v=!1,w=await Ut(pt(),"inference-stage",async y=>{y?.setAttributes({"inference.attempt":l||1}),yse();let T=!!(l&&l>1),A=await Sht({config:n,isRetry:T,cwd:f,resumeForCreditWrapUp:m}),R=!!m&&!!d;R&&n.runner==="gemini"&&!await mT(d)&&(R=!1);let P=A.viable||R;v=P,A.outcome!=="not_eligible"&&K.inc("inference.native_resume",1,{outcome:A.outcome,...A.source?{source:A.source}:{}});let k=n;if("prompt"in n&&n.answeredInteraction&&Ye().questionsEnabled){let x=n.answeredInteraction,M=P||T&&!!d,Z=[x];if(!M){_.allAnswered??=h0e(n);let G=await _.allAnswered;G===null&&(_.allAnswered=void 0),G&&G.length>0&&(Z=G.some(me=>me.refId===x.refId)?G:[...G,x])}k={...n,prompt:_0e(n.prompt,Z)},!T&&!_.counted&&(_.counted=!0,G_.log("Resuming session with answered questions",{sessionId:n.sessionId,interactionCount:Z.length}),K.inc("inference.answer_resume",1,{fold:M?"latest":"all"}),g0e(x))}let{prompt:L}=await Ut(pt(),"compose-prompt",async()=>await t0e({cliPath:r,config:k,buildErrorContext:Eht(o),netlify:i,additionalContext:e,resumePrompt:P,preserveResultsFile:!!m})),S=`
642
+ `):""};var G_=ie("inference_stage"),y0e=5,xu=async t=>{let{additionalContext:e,cliPath:r,config:n,context:i,buildErrors:o,runner:s,persistSteps:a,aiGateway:c,attempt:l,contextPrefix:u,priorAgentSessionId:d,cwd:f,abortSignal:p,onSessionId:h,resumeForCreditWrapUp:m,forceLowEffortForCreditWrapUp:g,answerFold:_}=t;if(qa())throw new Error("Shutdown in progress, aborting inference stage");G_.log(`Running inference stage, attempt ${l} of ${y0e}`);let v=!1,w=await Ut(pt(),"inference-stage",async y=>{y?.setAttributes({"inference.attempt":l||1}),yse();let T=!!(l&&l>1),A=await Sht({config:n,isRetry:T,cwd:f,resumeForCreditWrapUp:m}),R=!!m&&!!d;R&&n.runner==="gemini"&&!await mT(d)&&(R=!1);let P=A.viable||R;v=P,A.outcome!=="not_eligible"&&Y.inc("inference.native_resume",1,{outcome:A.outcome,...A.source?{source:A.source}:{}});let k=n;if("prompt"in n&&n.answeredInteraction&&Ye().questionsEnabled){let x=n.answeredInteraction,M=P||T&&!!d,Z=[x];if(!M){_.allAnswered??=h0e(n);let G=await _.allAnswered;G===null&&(_.allAnswered=void 0),G&&G.length>0&&(Z=G.some(me=>me.refId===x.refId)?G:[...G,x])}k={...n,prompt:_0e(n.prompt,Z)},!T&&!_.counted&&(_.counted=!0,G_.log("Resuming session with answered questions",{sessionId:n.sessionId,interactionCount:Z.length}),Y.inc("inference.answer_resume",1,{fold:M?"latest":"all"}),g0e(x))}let{prompt:L}=await Ut(pt(),"compose-prompt",async()=>await t0e({cliPath:r,config:k,buildErrorContext:Eht(o),netlify:i,additionalContext:e,resumePrompt:P,preserveResultsFile:!!m})),S=`
643
643
  ${u||""}
644
644
  ${L}
645
- `.trim(),te={...n,prompt:S},$=d??(P?A.sessionId:void 0),b=await Ut(pt(),`run-${n.runner}`,async x=>{let M=sz();x?.setAttributes({"gen_ai.operation.name":"chat","gen_ai.capability.name":n.mode,"gen_ai.provider.name":Ase(n.runner),"gen_ai.system":n.runner,...M?{"gen_ai.input.messages":w0("user",S)}:{}});let Z=Date.now(),G=await s({aiGateway:c,config:te,persistSteps:a,continueSession:T||P,priorAgentSessionId:$,cwd:f,cliPath:r,abortSignal:p,onSessionId:h,...g?{forceLowEffortForCreditWrapUp:g}:{}}),me=Date.now(),Ne=G.resolvedModel||n.model||"unknown",ve=G.error?"error":"stop";return x?.setAttributes({...M?{"gen_ai.output.messages":w0("assistant",G.result??G.error??"",ve)}:{},"gen_ai.response.finish_reasons":[ve],"gen_ai.request.model":Ne,"gen_ai.response.model":Ne,"gen_ai.request.effort":G.effort??"auto",...G.usage?.input_tokens!=null?{"gen_ai.usage.input_tokens":G.usage.input_tokens}:{},...G.usage?.output_tokens!=null?{"gen_ai.usage.output_tokens":G.usage.output_tokens}:{},...G.usage?.cache_creation_input_tokens!=null?{"gen_ai.usage.cache_creation.input_tokens":G.usage.cache_creation_input_tokens}:{},...G.usage?.cache_read_input_tokens!=null?{"gen_ai.usage.cache_read.input_tokens":G.usage.cache_read_input_tokens}:{},...G.usage?.reasoning_output_tokens!=null?{"gen_ai.usage.reasoning.output_tokens":G.usage.reasoning_output_tokens}:{}}),xse(G.steps??[],n.mode,Z,me),G});return b.result&&(b.result=Qn(b.result)),b.error&&(b.error=Qn(b.error)),await a.flush(),b});if(w.aborted)return G_.log("Inference turn was interrupted (credit wrap-up); skipping retry/error handling",{agentSessionId:w.agentSessionId}),{runnerResult:w,nativeResume:v};if(w.error){if(qa()){let R=new Error("Shutdown in progress, aborting inference stage");throw Object.assign(R,{agentSessionId:w.agentSessionId}),R}let y=w.providerFailure,T=gN(y);G_.error("Runner failed",{stepsCount:w.steps.length,duration:w.duration,error:w.error,isRetryableError:w.isRetryableError,attempt:l||1,agentSessionId:w.agentSessionId,...y?{providerFailure:y,failureClass:T?.failureClass}:{}}),K.inc("inference.failed",1,{attempt:l||1,is_retryable:!!w.isRetryableError,is_provider_unavailable:!!w.isProviderUnavailableError,is_answer_resume:!!n.answeredInteraction,upstream_status:y?.status??"none",failure_class:T?.failureClass??"unclassified"});let A=T?.maxAttempts??y0e;if(w.isRetryableError&&(!l||l<A))return G_.log("Retrying inference stage"),await new Promise(P=>setTimeout(P,5e3)),{runnerResult:(await xu({...t,attempt:(l||1)+1,priorAgentSessionId:w.agentSessionId,contextPrefix:w.agentSessionId?"":"<important> The agent has already started on this work but ran into networking errors trying to complete it. Please continue from where it left off (you can use git commands to see what's currently changed thus far) and do not start over. Here is the full prompt for context: </important>"})).runnerResult,nativeResume:v};{if(G_.log("Do not retry inference stage"),w.error.toLowerCase().includes("usage exceeded")){let P=new Do(w.error,503,"Credit limit reached. Please add more credits to continue using Agent Runners.",!0);throw Object.assign(P,{agentSessionId:w.agentSessionId}),P}let R=w.isRetryableError||w.isProviderUnavailableError?new Th(w.error):new Error(w.error);throw Object.assign(R,{agentSessionId:w.agentSessionId}),R}}return{runnerResult:w,nativeResume:v}},Sht=async({config:t,isRetry:e,cwd:r=process.cwd(),resumeForCreditWrapUp:n})=>{if(e||n)return{viable:!1,outcome:"not_eligible"};let i=t.previousSession,{viable:o,outcome:s}=l0e(t);if(!o)return{viable:o,outcome:s};let a=i?.nativeSessionId,c=gu(t.runner),l=async()=>a?t.runner==="gemini"?!!await mW(a):xRe(c,a,t.runner,r):!1,u;if(a0e(t)&&await wRe(c,t.runner,r))u="local";else if(t.fastInit&&Ye().warmNativeResumeEnabled&&await IRe({archive:c,cache:t.cache})&&await l())u="cache_restore";else{if(u="fetch",!Ye().coldResumeFromS3Enabled)return{viable:!1,outcome:"cold_resume_disabled",source:u};if(!await RRe({runnerId:t.id,sessionId:t.sessionId,archive:c}))return{viable:!1,outcome:"fetch_failed",source:u}}return t.runner==="gemini"&&a&&!await mT(a)?{viable:!1,outcome:"sanitize_failed",source:u}:{viable:!0,sessionId:a,outcome:"resumed",source:u}},Eht=t=>!t||t.length===0?"":`
645
+ `.trim(),te={...n,prompt:S},$=d??(P?A.sessionId:void 0),b=await Ut(pt(),`run-${n.runner}`,async x=>{let M=sz();x?.setAttributes({"gen_ai.operation.name":"chat","gen_ai.capability.name":n.mode,"gen_ai.provider.name":Ase(n.runner),"gen_ai.system":n.runner,...M?{"gen_ai.input.messages":w0("user",S)}:{}});let Z=Date.now(),G=await s({aiGateway:c,config:te,persistSteps:a,continueSession:T||P,priorAgentSessionId:$,cwd:f,cliPath:r,abortSignal:p,onSessionId:h,...g?{forceLowEffortForCreditWrapUp:g}:{}}),me=Date.now(),Ne=G.resolvedModel||n.model||"unknown",ve=G.error?"error":"stop";return x?.setAttributes({...M?{"gen_ai.output.messages":w0("assistant",G.result??G.error??"",ve)}:{},"gen_ai.response.finish_reasons":[ve],"gen_ai.request.model":Ne,"gen_ai.response.model":Ne,"gen_ai.request.effort":G.effort??"auto",...G.usage?.input_tokens!=null?{"gen_ai.usage.input_tokens":G.usage.input_tokens}:{},...G.usage?.output_tokens!=null?{"gen_ai.usage.output_tokens":G.usage.output_tokens}:{},...G.usage?.cache_creation_input_tokens!=null?{"gen_ai.usage.cache_creation.input_tokens":G.usage.cache_creation_input_tokens}:{},...G.usage?.cache_read_input_tokens!=null?{"gen_ai.usage.cache_read.input_tokens":G.usage.cache_read_input_tokens}:{},...G.usage?.reasoning_output_tokens!=null?{"gen_ai.usage.reasoning.output_tokens":G.usage.reasoning_output_tokens}:{}}),xse(G.steps??[],n.mode,Z,me),G});return b.result&&(b.result=Qn(b.result)),b.error&&(b.error=Qn(b.error)),await a.flush(),b});if(w.aborted)return G_.log("Inference turn was interrupted (credit wrap-up); skipping retry/error handling",{agentSessionId:w.agentSessionId}),{runnerResult:w,nativeResume:v};if(w.error){if(qa()){let R=new Error("Shutdown in progress, aborting inference stage");throw Object.assign(R,{agentSessionId:w.agentSessionId}),R}let y=w.providerFailure,T=gN(y);G_.error("Runner failed",{stepsCount:w.steps.length,duration:w.duration,error:w.error,isRetryableError:w.isRetryableError,attempt:l||1,agentSessionId:w.agentSessionId,...y?{providerFailure:y,failureClass:T?.failureClass}:{}}),Y.inc("inference.failed",1,{attempt:l||1,is_retryable:!!w.isRetryableError,is_provider_unavailable:!!w.isProviderUnavailableError,is_answer_resume:!!n.answeredInteraction,upstream_status:y?.status??"none",failure_class:T?.failureClass??"unclassified"});let A=T?.maxAttempts??y0e;if(w.isRetryableError&&(!l||l<A))return G_.log("Retrying inference stage"),await new Promise(P=>setTimeout(P,5e3)),{runnerResult:(await xu({...t,attempt:(l||1)+1,priorAgentSessionId:w.agentSessionId,contextPrefix:w.agentSessionId?"":"<important> The agent has already started on this work but ran into networking errors trying to complete it. Please continue from where it left off (you can use git commands to see what's currently changed thus far) and do not start over. Here is the full prompt for context: </important>"})).runnerResult,nativeResume:v};{if(G_.log("Do not retry inference stage"),w.error.toLowerCase().includes("usage exceeded")){let P=new Do(w.error,503,"Credit limit reached. Please add more credits to continue using Agent Runners.",!0);throw Object.assign(P,{agentSessionId:w.agentSessionId}),P}let R=w.isRetryableError||w.isProviderUnavailableError?new Th(w.error):new Error(w.error);throw Object.assign(R,{agentSessionId:w.agentSessionId}),R}}return{runnerResult:w,nativeResume:v}},Sht=async({config:t,isRetry:e,cwd:r=process.cwd(),resumeForCreditWrapUp:n})=>{if(e||n)return{viable:!1,outcome:"not_eligible"};let i=t.previousSession,{viable:o,outcome:s}=l0e(t);if(!o)return{viable:o,outcome:s};let a=i?.nativeSessionId,c=gu(t.runner),l=async()=>a?t.runner==="gemini"?!!await mW(a):xRe(c,a,t.runner,r):!1,u;if(a0e(t)&&await wRe(c,t.runner,r))u="local";else if(t.fastInit&&Ye().warmNativeResumeEnabled&&await IRe({archive:c,cache:t.cache})&&await l())u="cache_restore";else{if(u="fetch",!Ye().coldResumeFromS3Enabled)return{viable:!1,outcome:"cold_resume_disabled",source:u};if(!await RRe({runnerId:t.id,sessionId:t.sessionId,archive:c}))return{viable:!1,outcome:"fetch_failed",source:u}}return t.runner==="gemini"&&a&&!await mT(a)?{viable:!1,outcome:"sanitize_failed",source:u}:{viable:!0,sessionId:a,outcome:"resumed",source:u}},Eht=t=>!t||t.length===0?"":`
646
646
  Deploy failed. Here are the errors to review on the latest build:
647
647
 
648
648
  Below are all of the logs with potential issues that we extracted. Some of them may be false positives, discern them carefully and ensure fixes are relevant.
649
649
 
650
650
  ${t.pop()}
651
651
  `;var zT=ie("deploy"),vht=t=>t===""||/[\s"\\]/u.test(t)?JSON.stringify(t):t,S0e=async t=>await Ut(pt(),"create-preview-deploy",async e=>bht(t,e)),bht=async({hasRepo:t,message:e="Agent Preview",deploySubdomain:r,cliPath:n,filter:i,prodDeploy:o,agentRunnerId:s,agentRunnerSessionId:a},c)=>{try{let l=["deploy","--message",e,"--json","--verbose",o?"--prod":"--draft"];zT.log("Deploy: Uploading source zip"),l.push("--upload-source-zip"),r&&!o&&l.push("--alias",r),i&&l.push("--filter",i),l.push("--context",o?"production":"deploy-preview");let u=n||"netlify";zT.log(`Running: ${u} ${l.map(vht).join(" ")}`),c?.setAttributes({cmd:u,args:l});let d={};s&&(d.NETLIFY_AGENT_RUNNER_ID=s),a&&(d.NETLIFY_AGENT_RUNNER_SESSION_ID=a);let f=await Ft(u,l,{stdio:["ignore","pipe","pipe"],env:{...process.env,NETLIFY_DEPLOY_SOURCE:"agent_runner",...d}});f.stderr&&zT.log(String(f.stderr));let p=JSON.parse(String(f.stdout??"").trim());c?.setAttributes({success:!0,deployId:p.deploy_id,deployUrl:p.deploy_url,siteId:p.site_id}),zT.log(`
652
- Preview deploy created successfully:`,{deployId:p.deploy_id,deployUrl:p.deploy_url,siteId:p.site_id});let h={deployId:p.deploy_id,previewUrl:p.deploy_url,logsUrl:p.logs,siteId:p.site_id};return t||(h.sourceZipFilename=p.source_zip_filename),h}catch(l){throw zT.error("Failed to create preview deploy via CLI:",l),c?.setAttributes({success:!1,error:l.message}),l}};import E0e from"fs";import y9 from"path";var v0e=(t=process.cwd())=>{let e=y9.join(t,Zr,Ese);return{hasNetlifyForm:E0e.existsSync(y9.join(e,"netlify-forms")),hasNetlifyIdentity:E0e.existsSync(y9.join(e,"netlify-identity"))}};var ns=ie("deploy_stage"),jT=async t=>await Ut(pt(),"run-deploy-stage",async()=>Tht(t)),Tht=async({cliPath:t,config:e,result:r,filter:n,isRetry:i,deploySubdomain:o})=>{if(e.mode==="ask")return{hasChanges:!1,previewInfo:null,isProdDeploy:!1,hasNetlifyForm:!1,hasNetlifyIdentity:!1};let s=await Ut(pt(),"get-runner-diffs",async()=>await ZC({config:e,isRetry:i}));if(ns.info("Resolved git",{hasChanges:s.hasChanges,ignored:s.ignored??[]}),!s.hasChanges&&e.mode!=="redeploy"&&!e.pendingUndeployedChanges)return{hasChanges:!1,previewInfo:null,isProdDeploy:!1,hasNetlifyForm:!1,hasNetlifyIdentity:!1};let a=s.hasChanges?s.diff:void 0,c=s.hasChanges?s.resultDiff:void 0,l=s.hasChanges?s.diffBinary:void 0,u=s.hasChanges?s.resultDiffBinary:void 0,d=s.hasChanges||e.mode==="redeploy",{hasNetlifyForm:f,hasNetlifyIdentity:p}=v0e();if(f||p){let v={};f&&(ns.log("Detected Netlify Forms enablement \u2014 enabling early"),v.has_netlify_form=!0),p&&(ns.log("Detected Netlify Identity enablement \u2014 enabling early"),v.has_netlify_identity=!0);try{await mn(e.id,e.sessionId,v)}catch(w){ns.warn("Failed to send early feature enablement (continuing):",w)}}let h=r!==void 0&&(d||e.mode==="redeploy"||!!e.pendingUndeployedChanges);ns.log("Deploy condition check:",{resultUndefined:r===void 0,resultType:typeof r,hasChanges:d,isRedeploy:e.mode==="redeploy",pendingUndeployedChanges:!!e.pendingUndeployedChanges,wouldCreateDeploy:h});let m=xI(e.mode),g=null,_;if(h)try{let v;try{let w=await Ut(pt(),"get-runner-session",async()=>await Ah(e.id,e.sessionId));w?.title&&(v=w.title)}catch(w){ns.warn("Failed to fetch session title, using fallback message:",w.message)}if(await mn(e.id,e.sessionId,{steps:[{title:m?"Deploying project":"Deploying preview",category:H.Deployment}]}),g=await S0e({cliPath:t,hasRepo:e.hasRepo,message:v,deploySubdomain:o,filter:n,prodDeploy:m,agentRunnerId:e.id,agentRunnerSessionId:e.sessionId}),m)try{let w=await $fe();w.pushed?ns.log("Pushed workspace commits to origin"):ns.log(`Skipped origin push (${w.reason})`)}catch(w){_=w instanceof Error?w.message:String(w),ns.warn("Failed to push workspace commits to origin (continuing):",w)}}catch(v){if(qa())throw v;return ns.warn("Failed to create preview deploy (continuing with agent run):",v),{diff:a,resultDiff:c,hasChanges:d,previewInfo:null,diffBinary:l,resultDiffBinary:u,deployError:v instanceof Error?v.message:String(v),isProdDeploy:m,hasNetlifyForm:f,hasNetlifyIdentity:p}}return ns.log("Git status",{hasDiff:!!a,hasChanges:d}),{diff:a,resultDiff:c,hasChanges:d,previewInfo:g,diffBinary:l,resultDiffBinary:u,gitPushError:_,isProdDeploy:m,hasNetlifyForm:f,hasNetlifyIdentity:p}};var wht=ie("redeploy"),b0e="Redeploy completed",T0e=async({cliPath:t,config:e,filter:r,deploySubdomain:n,isProdDeploy:i,withStageTimer:o})=>{let s=await o("deploy",()=>jT({cliPath:t,config:e,result:b0e,filter:r,isRetry:!1,deploySubdomain:n}));s.deployError&&(wht.warn(`Redeploy deploy failed: ${s.deployError}`),K.inc("deploy.failed",1,{attempt:1})),R0({previewDeployed:!!s.previewInfo,hadFailedAttempts:!!s.deployError});let{diff:a,resultDiff:c,previewInfo:l,diffBinary:u,resultDiffBinary:d,hasNetlifyForm:f,hasNetlifyIdentity:p}=s;return{diff:a,result:b0e,duration:0,resultDiff:c,diffBinary:u,resultDiffBinary:d,previewInfo:l,isProdDeploy:i,hasNetlifyForm:f,hasNetlifyIdentity:p}};import bIe from"process";import Aht from"fs";import xht from"path";import Rht from"process";var S9=ie("db_migrations"),Cht=new Set(["drizzle.config.ts","drizzle.config.js","drizzle.config.mjs"]),A0e=async t=>await x0({stage:"db-migrations"},()=>Ut(pt(),"db-migrations",async e=>{let r=t.cwd||Rht.cwd();if(!(await w0e("@netlify/database",r)||await w0e("@netlify/db",r)))return e?.setAttributes({skipped:!0,reason:"@netlify/database is not installed"}),K.inc("db_migrations.run",1,{outcome:"skipped",reason:"no_module"}),{skipped:!0,reason:"no_module"};let i=[...Cht].find(o=>Aht.existsSync(xht.join(r,o)));if(!i)return e?.setAttributes({skipped:!0,reason:"no drizzle config found"}),K.inc("db_migrations.run",1,{outcome:"skipped",reason:"no_config"}),{skipped:!0,reason:"no_config"};e?.setAttributes({configFile:i}),S9.log(`Found ${i}, running drizzle-kit generate to ensure migrations are up to date`);try{let o=await Ft("npx",["drizzle-kit","generate"],{cwd:r,stdio:["ignore","pipe","pipe"]});return o.stdout&&S9.log(String(o.stdout)),e?.setAttributes({success:!0}),K.inc("db_migrations.run",1,{outcome:"success"}),{skipped:!1}}catch(o){let s=Iht(o);return S9.warn("drizzle-kit generate failed:",s),e?.setAttributes({success:!1,error:s}),K.inc("db_migrations.run",1,{outcome:"failure"}),{skipped:!1,error:s}}})),w0e=async(t,e)=>{try{return await Sfe(`node -e "require.resolve('${t}')"`,{cwd:e,stdio:"ignore"}),!0}catch{return!1}},Iht=t=>{if(t&&typeof t=="object"){let e=[];if("stderr"in t&&t.stderr&&e.push(String(t.stderr)),"stdout"in t&&t.stdout&&e.push(String(t.stdout)),e.length>0)return e.join(`
652
+ Preview deploy created successfully:`,{deployId:p.deploy_id,deployUrl:p.deploy_url,siteId:p.site_id});let h={deployId:p.deploy_id,previewUrl:p.deploy_url,logsUrl:p.logs,siteId:p.site_id};return t||(h.sourceZipFilename=p.source_zip_filename),h}catch(l){throw zT.error("Failed to create preview deploy via CLI:",l),c?.setAttributes({success:!1,error:l.message}),l}};import E0e from"fs";import y9 from"path";var v0e=(t=process.cwd())=>{let e=y9.join(t,Zr,Ese);return{hasNetlifyForm:E0e.existsSync(y9.join(e,"netlify-forms")),hasNetlifyIdentity:E0e.existsSync(y9.join(e,"netlify-identity"))}};var ns=ie("deploy_stage"),jT=async t=>await Ut(pt(),"run-deploy-stage",async()=>Tht(t)),Tht=async({cliPath:t,config:e,result:r,filter:n,isRetry:i,deploySubdomain:o})=>{if(e.mode==="ask")return{hasChanges:!1,previewInfo:null,isProdDeploy:!1,hasNetlifyForm:!1,hasNetlifyIdentity:!1};let s=await Ut(pt(),"get-runner-diffs",async()=>await ZC({config:e,isRetry:i}));if(ns.info("Resolved git",{hasChanges:s.hasChanges,ignored:s.ignored??[]}),!s.hasChanges&&e.mode!=="redeploy"&&!e.pendingUndeployedChanges)return{hasChanges:!1,previewInfo:null,isProdDeploy:!1,hasNetlifyForm:!1,hasNetlifyIdentity:!1};let a=s.hasChanges?s.diff:void 0,c=s.hasChanges?s.resultDiff:void 0,l=s.hasChanges?s.diffBinary:void 0,u=s.hasChanges?s.resultDiffBinary:void 0,d=s.hasChanges||e.mode==="redeploy",{hasNetlifyForm:f,hasNetlifyIdentity:p}=v0e();if(f||p){let v={};f&&(ns.log("Detected Netlify Forms enablement \u2014 enabling early"),v.has_netlify_form=!0),p&&(ns.log("Detected Netlify Identity enablement \u2014 enabling early"),v.has_netlify_identity=!0);try{await mn(e.id,e.sessionId,v)}catch(w){ns.warn("Failed to send early feature enablement (continuing):",w)}}let h=r!==void 0&&(d||e.mode==="redeploy"||!!e.pendingUndeployedChanges);ns.log("Deploy condition check:",{resultUndefined:r===void 0,resultType:typeof r,hasChanges:d,isRedeploy:e.mode==="redeploy",pendingUndeployedChanges:!!e.pendingUndeployedChanges,wouldCreateDeploy:h});let m=xI(e.mode),g=null,_;if(h)try{let v;try{let w=await Ut(pt(),"get-runner-session",async()=>await Ah(e.id,e.sessionId));w?.title&&(v=w.title)}catch(w){ns.warn("Failed to fetch session title, using fallback message:",w.message)}if(await mn(e.id,e.sessionId,{steps:[{title:m?"Deploying project":"Deploying preview",category:H.Deployment}]}),g=await S0e({cliPath:t,hasRepo:e.hasRepo,message:v,deploySubdomain:o,filter:n,prodDeploy:m,agentRunnerId:e.id,agentRunnerSessionId:e.sessionId}),m)try{let w=await $fe();w.pushed?ns.log("Pushed workspace commits to origin"):ns.log(`Skipped origin push (${w.reason})`)}catch(w){_=w instanceof Error?w.message:String(w),ns.warn("Failed to push workspace commits to origin (continuing):",w)}}catch(v){if(qa())throw v;return ns.warn("Failed to create preview deploy (continuing with agent run):",v),{diff:a,resultDiff:c,hasChanges:d,previewInfo:null,diffBinary:l,resultDiffBinary:u,deployError:v instanceof Error?v.message:String(v),isProdDeploy:m,hasNetlifyForm:f,hasNetlifyIdentity:p}}return ns.log("Git status",{hasDiff:!!a,hasChanges:d}),{diff:a,resultDiff:c,hasChanges:d,previewInfo:g,diffBinary:l,resultDiffBinary:u,gitPushError:_,isProdDeploy:m,hasNetlifyForm:f,hasNetlifyIdentity:p}};var wht=ie("redeploy"),b0e="Redeploy completed",T0e=async({cliPath:t,config:e,filter:r,deploySubdomain:n,isProdDeploy:i,withStageTimer:o})=>{let s=await o("deploy",()=>jT({cliPath:t,config:e,result:b0e,filter:r,isRetry:!1,deploySubdomain:n}));s.deployError&&(wht.warn(`Redeploy deploy failed: ${s.deployError}`),Y.inc("deploy.failed",1,{attempt:1})),R0({previewDeployed:!!s.previewInfo,hadFailedAttempts:!!s.deployError});let{diff:a,resultDiff:c,previewInfo:l,diffBinary:u,resultDiffBinary:d,hasNetlifyForm:f,hasNetlifyIdentity:p}=s;return{diff:a,result:b0e,duration:0,resultDiff:c,diffBinary:u,resultDiffBinary:d,previewInfo:l,isProdDeploy:i,hasNetlifyForm:f,hasNetlifyIdentity:p}};import bIe from"process";import Aht from"fs";import xht from"path";import Rht from"process";var S9=ie("db_migrations"),Cht=new Set(["drizzle.config.ts","drizzle.config.js","drizzle.config.mjs"]),A0e=async t=>await x0({stage:"db-migrations"},()=>Ut(pt(),"db-migrations",async e=>{let r=t.cwd||Rht.cwd();if(!(await w0e("@netlify/database",r)||await w0e("@netlify/db",r)))return e?.setAttributes({skipped:!0,reason:"@netlify/database is not installed"}),Y.inc("db_migrations.run",1,{outcome:"skipped",reason:"no_module"}),{skipped:!0,reason:"no_module"};let i=[...Cht].find(o=>Aht.existsSync(xht.join(r,o)));if(!i)return e?.setAttributes({skipped:!0,reason:"no drizzle config found"}),Y.inc("db_migrations.run",1,{outcome:"skipped",reason:"no_config"}),{skipped:!0,reason:"no_config"};e?.setAttributes({configFile:i}),S9.log(`Found ${i}, running drizzle-kit generate to ensure migrations are up to date`);try{let o=await Ft("npx",["drizzle-kit","generate"],{cwd:r,stdio:["ignore","pipe","pipe"]});return o.stdout&&S9.log(String(o.stdout)),e?.setAttributes({success:!0}),Y.inc("db_migrations.run",1,{outcome:"success"}),{skipped:!1}}catch(o){let s=Iht(o);return S9.warn("drizzle-kit generate failed:",s),e?.setAttributes({success:!1,error:s}),Y.inc("db_migrations.run",1,{outcome:"failure"}),{skipped:!1,error:s}}})),w0e=async(t,e)=>{try{return await Sfe(`node -e "require.resolve('${t}')"`,{cwd:e,stdio:"ignore"}),!0}catch{return!1}},Iht=t=>{if(t&&typeof t=="object"){let e=[];if("stderr"in t&&t.stderr&&e.push(String(t.stderr)),"stdout"in t&&t.stdout&&e.push(String(t.stdout)),e.length>0)return e.join(`
653
653
  `)}return t instanceof Error?t.message:String(t)};var Jk=ie("migration_state"),E9=async({cliPath:t,cwd:e})=>{let r;try{let n=await Ft(t,["db","status","--json"],{cwd:e,stdio:["ignore","pipe","pipe"]});r=n.stdout?String(n.stdout):""}catch(n){let i=n;throw Jk.warn("`netlify db status --json` failed",{exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr}),n}Jk.log("`netlify db status --json` output",{stdout:r});try{return JSON.parse(r)}catch(n){throw Jk.warn("Failed to parse `netlify db status --json` output",{stdout:r,error:String(n)}),n}},Pht=()=>["## Netlify Database","","A Netlify Database (managed Postgres) is available for this site.","It will be provisioned automatically on first connection.","No migrations have been applied yet \u2014 this is a fresh database.","","Use `@netlify/database` with Drizzle ORM for persistent data storage.","Define your schema in `db/schema.ts` and migrations will be generated automatically at deploy time.","Read the `netlify-database` skill for setup instructions."].join(`
654
654
  `),Oht=t=>{if(t.applied.length===0&&t.pending.length===0)return null;let e=["## CRITICAL: Current Netlify Database state",""];if(t.applied.length>0){e.push("The following migrations are **already applied** to your preview database branch. They are immutable:","");for(let r of t.applied)e.push(`- ${r.name}`);e.push("","**Never delete, rename, or edit an applied migration file.** Doing so will break the deploy \u2014 the","platform requires every migration applied to the branch to exist on disk with its original content. If","you think an applied migration is wrong, roll forward with a NEW migration that corrects whatever it","did. That's always safe; deletion isn't.")}else e.push("No migrations are applied to your preview database branch yet.");if(t.pending.length>0){e.push(""),e.push("The following migration files exist on disk but have NOT yet been applied:","");for(let r of t.pending)e.push(`- ${r.name}`);e.push("","Pending files can be modified or deleted freely \u2014 use `netlify db migrations reset` to remove them","cleanly, then regenerate via `npx drizzle-kit generate` if you want a replacement.")}return e.join(`
655
655
  `)},v9=async({cliPath:t,cwd:e,isFreshDatabase:r})=>{if(r)return Pht();try{return Oht(await E9({cliPath:t,cwd:e}))}catch(n){return Jk.warn("Skipping migration context injection \u2014 failed to build state block",{error:n}),null}},x0e=t=>{let e=[];return t.missingOnDisk.length>0&&e.push("The following migration file(s) are applied to the preview database branch but are no longer on disk","under their original name:",...t.missingOnDisk.map(r=>`- ${r.name}`),"","Applied migrations cannot be removed \u2014 the deploy will fail because the platform requires every applied","migration to exist on disk with its original content. **Renaming or renumbering an applied migration is a","deletion**: the platform matches migrations by version, so moving one to a new version prefix removes the","original as far as the branch is concerned, and the new file reads as an unapplied migration whose version","almost certainly sorts too early. Please revise your work:","","1. Restore the deleted file(s) by running `netlify db migrations pull --force`, which overwrites the"," local migrations directory with the authoritative state of the branch. Note this also wipes any"," unapplied migration files you generated this session \u2014 regenerate them via `npx drizzle-kit generate`"," afterwards if you still need them (your `db/schema.ts` edits aren't affected by the pull).","2. If the underlying problem is that an applied migration is wrong, add a NEW migration on top that"," corrects whatever it did (drop a column, rename a table, etc.). Do not touch the original."),t.outOfOrder.length>0&&(e.length>0&&e.push(""),e.push("The following pending migration file(s) have a version prefix that sorts BEFORE migrations already","applied to the branch, so the platform will reject them on deploy:",...t.outOfOrder.map(r=>`- ${r.name} (version ${r.version} \u2264 applied max ${r.maxApplied})`),"","Delete these out-of-order files (use `netlify db migrations reset` \u2014 it only removes unapplied files),","then run `npx drizzle-kit generate` to produce a replacement whose version sorts after the applied","migrations.")),e.length===0?null:(e.push("","Note on refusals: if you reached this state after the platform refused a migration, that refusal names only","the database that refused it. It is not evidence that the migration is unapplied anywhere \u2014 every branch,","and production, keeps its own record of what it has applied. The applied list above is the only authority on","this branch, and it overrides any procedure written in AGENTS.md, PLAN.md, or other project notes."),e.join(`
656
- `))},R0e=t=>t.missingOnDisk.length>0||t.outOfOrder.length>0;var C0e=ie("db_migrations_verify"),Nht=t=>{let e=t.missingOnDisk.length>0,r=t.outOfOrder.length>0;return e&&r?"both":e?"missing_on_disk":r?"out_of_order":"none"},I0e=async t=>await Ut(pt(),"db-migrations-verify-stage",async e=>{let r;try{r=await E9({cliPath:t.cliPath,cwd:t.cwd})}catch(i){return C0e.warn("Skipping migration verification \u2014 failed to read status",{error:i}),e?.setAttributes({"verify.skipped":!0,"verify.skip_reason":"status_error"}),K.inc("db_migrations.verify",1,{drift:"unknown"}),{}}if(!R0e(r))return e?.setAttributes({"verify.drift":!1}),K.inc("db_migrations.verify",1,{drift:"none"}),{};let n=x0e(r);return K.inc("db_migrations.verify",1,{drift:Nht(r)}),e?.setAttributes({"verify.drift":!0,"verify.missing_on_disk_count":r.missingOnDisk.length,"verify.out_of_order_count":r.outOfOrder.length}),C0e.log("Detected post-inference migration drift",{missingOnDisk:r.missingOnDisk.map(i=>i.name),outOfOrder:r.outOfOrder.map(i=>i.name)}),{error:n??void 0}});import AZ from"process";import tyt from"net";var Fi=pn(bZ(),1),bgr=Fi.default.Client,Tgr=Fi.default.Pool,wgr=Fi.default.Connection,Agr=Fi.default.types,xgr=Fi.default.Query,Rgr=Fi.default.DatabaseError,Cgr=Fi.default.escapeIdentifier,Igr=Fi.default.escapeLiteral,Pgr=Fi.default.Result,Ogr=Fi.default.TypeOverrides,Ngr=Fi.default.defaults,SIe=Fi.default;var ryt=80877103,nyt=196608,iyt=Buffer.from([78]);function oyt(){let t=Buffer.alloc(9);t.writeUInt8(82,0),t.writeInt32BE(8,1),t.writeInt32BE(0,5);let e=Buffer.alloc(6);return e.writeUInt8(90,0),e.writeInt32BE(5,1),e.writeUInt8(73,5),Buffer.concat([t,e])}function mM(t){let e=Buffer.from("SERROR\0","utf8"),r=Buffer.concat([Buffer.from("M","utf8"),Buffer.from(t+"\0","utf8")]),n=Buffer.from("CXX000\0","utf8"),i=Buffer.from([0]),o=e.length+r.length+n.length+i.length,s=Buffer.alloc(5);return s.writeUInt8(69,0),s.writeInt32BE(o+4,1),Buffer.concat([s,e,n,r,i])}async function syt(t){let{clientSocket:e,provision:r,logger:n,cleanup:i}=t,o;try{o=await r()}catch(f){let p=f instanceof Error?f.message:"Provisioning failed";throw n("Provisioning error:",p),e.end(mM(p)),i(),f}let s=cyt(o),a=new SIe.Client({host:s.host,port:s.port,user:s.user,password:s.password,database:s.database,ssl:s.ssl,options:s.options});a.on("error",()=>{});try{await a.connect()}catch(f){let p=f instanceof Error?f.message:"Remote connection failed";throw n("Remote connection error:",p),e.end(mM(p)),i(),f}let c=a.connection,l=c.stream;c.removeAllListeners(),l.removeAllListeners();let u=l,d=f=>p=>{p.code!=="ECONNRESET"&&n(`${f} socket error:`,p.message),i()};return u.on("error",d("Remote")),u.on("close",i),e.on("error",d("Client")),e.on("close",i),e.write(oyt()),e.on("data",f=>{u.destroyed||u.write(f)}),u.on("data",f=>{e.destroyed||e.write(f)}),e.resume(),u}function ayt(t,e){let{provision:r,logger:n,onCleanup:i}=e,o,s="ssl",a=!1;function c(){a||(a=!0,t.destroy(),o?.destroy(),i())}t.on("error",l=>{l.code!=="ECONNRESET"&&n("Client socket error:",l.message),c()}),t.on("data",l=>{if(s==="ssl"){if(l.length>=8&&l.readInt32BE(4)===ryt){t.write(iyt),s="startup";return}s="startup"}if(s==="startup"){if(l.length<8){t.end(mM("Invalid startup message")),c();return}if(l.readInt32BE(4)!==nyt){t.end(mM("Unsupported protocol version")),c();return}t.pause(),t.removeAllListeners("data"),syt({clientSocket:t,provision:r,logger:n,cleanup:c}).then(d=>{o=d},d=>{n("Startup error:",d),c()})}})}function cyt(t){let e=new URL(t);return{host:e.hostname,port:Number(e.port)||5432,user:decodeURIComponent(e.username),password:decodeURIComponent(e.password),database:e.pathname.slice(1)||"postgres",ssl:e.searchParams.get("sslmode")==="require"?!0:void 0,options:e.searchParams.get("options")??void 0}}var EIe=class{server;sockets=new Set;host;port;logger;provision;constructor(t){this.host=t.host??"127.0.0.1",this.port=t.port??0,this.logger=t.logger??(()=>{}),this.provision=t.provision}async start(){return new Promise((t,e)=>{let r=tyt.createServer(n=>{this.sockets.add(n),n.on("close",()=>{this.sockets.delete(n)}),ayt(n,{provision:this.provision,logger:this.logger,onCleanup:()=>{this.sockets.delete(n)}})});r.on("error",n=>{e(n)}),r.listen(this.port,this.host,()=>{this.server=r;let n=r.address(),i=`postgres://${this.host}:${String(n.port)}`;this.logger("Proxy listening on",i),t(i)})})}async stop(){for(let t of this.sockets)t.destroy();return this.sockets.clear(),new Promise(t=>{if(!this.server){t();return}this.server.close(()=>{this.server=void 0,t()})})}};var gM=ie("db_setup"),vIe=async({siteId:t,isProd:e,alias:r,connectionString:n})=>await Ut(pt(),"db-setup-stage",async i=>{i?.setAttributes({"db_setup.site_id":t,"db_setup.is_prod":e,...r&&{"db_setup.alias":r}});let o;if(e?o="production":r&&(o=r),AZ.env.NETLIFY_DB_BRANCH=o,n)return i?.setAttributes({"db_setup.source":"config","db_setup.has_proxy":!1}),gM.log("Using database connection string provided by the API"),AZ.env.NETLIFY_DB_URL=n,{connectionString:n,wasProvisioned:()=>!1};let s=!1,a=new EIe({logger:(...l)=>gM.log("db-proxy:",...l),provision:async()=>(gM.log("Provisioning database for site via API"),await Zse(t),s=!0,await lyt(t,e,r))}),c=await a.start();return i?.setAttributes({"db_setup.source":"proxy","db_setup.has_proxy":!0}),gM.log("Local DB proxy started",{connectionString:c}),AZ.env.NETLIFY_DB_URL=c,{connectionString:c,proxy:a,wasProvisioned:()=>s}}),lyt=async(t,e,r)=>e||!r?(await Yse(t)).connection_string:(await Jse(t,r),(await Kse(t,r)).connection_string);var TIe=({config:t,cliPath:e,cwd:r,withStageTimer:n})=>{let i,o,s=null,a=t.mode==="ask",c=async()=>t.siteId?o?.()?!0:t.site?.has_database:!1;return{prepare:async({deploySubdomain:l,isProdDeploy:u})=>{if(a)return s=Ape(t,l),s?(K.inc("ask_mode.db_read_granted",1),VRe({cliPath:e,branch:s.branch})):void 0;bIe.env.EXPERIMENTAL_NETLIFY_DB_ENABLED="1";let d=t.siteId;if(bIe.env.NETLIFY_LOCAL_MODE||!d)return;let f=await n("db-setup",()=>vIe({siteId:d,isProd:u,alias:l,connectionString:t.dbConnectionString}),Ds.timeUnits.minutes(10));return i=f.proxy,o=f.wasProvisioned,r?await v9({cliPath:e,cwd:r,isFreshDatabase:!!f.proxy})??void 0:void 0},currentContext:async()=>{if(!(a||!r)&&await c()!==!1)return await v9({cliPath:e,cwd:r,isFreshDatabase:!1})??void 0},generateMigrations:async()=>a?{skipped:!0,reason:"no_module"}:await A0e({cwd:r}),verifyMigrations:async()=>a||!r?{}:await n("db-migrations-verify",()=>I0e({cliPath:e,cwd:r})),hasDatabase:c,stop:async()=>{await i?.stop()},revokeAskAccess:()=>{s&&NB()}}};import uyt from"process";var wIe=ie("teardown"),AIe=({config:t,cwd:e,database:r,stopUsageTracking:n})=>{let i,o=t.mode==="ask";return{setRunnerCleanup:s=>{i=s},run:async s=>{let a=async(l,u)=>{try{await u()}catch(d){wIe.warn(`Teardown step failed: ${l}`,{state:s,error:d?.message||d}),K.inc("teardown.step_failed",1,{step:l,state:s})}},c=s==="completed"&&!uyt.env.NETLIFY_LOCAL_MODE;await a("usage-tracker",n),(s==="errored"||c)&&await a("runner-cleanup",()=>i?.()),await a("db-proxy",()=>r.stop()),c&&await a("reset-repo",()=>kfe(e)),o&&c&&await a("remove-untracked-files",async()=>{let l=await Mfe(e);l.length>0&&(wIe.warn(`Removed ${l.length} leftover untracked change(s) after ask run`,{removed:l}),K.inc("ask_mode.leaked_untracked_files",l.length))})}}};var dyt=({isHotFollowUp:t,enqueuedAt:e})=>t?e===void 0?[]:[["request",e]]:[["spawn",Number(process.env.NETLIFY_AGENT_RUNNER_SPAWN_AT_MS)],["enqueue",Number(process.env.NETLIFY_AGENT_RUNNER_ENQUEUED_AT_MS)]],xZ=(t,e,r,n)=>{for(let[i,o]of dyt(r))Number.isFinite(o)&&o>0&&o<=n&&t.timing(e,n-o,{from:i})},xIe=(t,e=Date.now(),r=K)=>xZ(r,"startup.duration",t,e),RIe=(t,e=Date.now(),r=K)=>xZ(r,"startup.time_to_prompt",t,e),CIe=(t,e=Date.now(),r=K)=>xZ(r,"startup.time_to_first_output",t,e);var IIe=(t,e=Date.now(),r=K)=>{let n={outcome:t.outcome,native_resume:t.nativeResume,is_answer_resume:t.isAnswerResume};r.timing("session.duration",e-t.startedAt,{hot_follow_up:t.isHotFollowUp,...n}),t.creditsCost!=null&&r.distribution("session.credits_cost",t.creditsCost,{...n,...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{}})};var PIe=ie("run"),OIe=(t,e=Date.now(),r=PIe)=>{r.info(eE({event:"run.finished",agent_runner_id:t.agentRunnerId,session_id:t.sessionId,agent:t.agent,mode:t.mode,orchestrator_version:t.version,model:t.model,effort:t.effort,outcome:t.outcome,finalization_outcome:t.finalizationOutcome,elapsed_ms:e-t.startedAt,credits:t.creditsCost,native_resume:t.nativeResume,is_answer_resume:t.isAnswerResume,hot_follow_up:t.isHotFollowUp}))},NIe=(t,e=PIe)=>{e.info(eE({event:"run.started",agent_runner_id:t.agentRunnerId,session_id:t.sessionId,agent:t.agent,mode:t.mode,orchestrator_version:t.version,model:t.model,effort:t.effort,is_answer_resume:t.isAnswerResume,hot_follow_up:t.isHotFollowUp}))};function kIe(t){return["One or more AI functions use the legacy **v1** syntax (`exports.handler` / `module.exports.handler`):","",t.map(r=>`- ${r}`).join(`
656
+ `))},R0e=t=>t.missingOnDisk.length>0||t.outOfOrder.length>0;var C0e=ie("db_migrations_verify"),Nht=t=>{let e=t.missingOnDisk.length>0,r=t.outOfOrder.length>0;return e&&r?"both":e?"missing_on_disk":r?"out_of_order":"none"},I0e=async t=>await Ut(pt(),"db-migrations-verify-stage",async e=>{let r;try{r=await E9({cliPath:t.cliPath,cwd:t.cwd})}catch(i){return C0e.warn("Skipping migration verification \u2014 failed to read status",{error:i}),e?.setAttributes({"verify.skipped":!0,"verify.skip_reason":"status_error"}),Y.inc("db_migrations.verify",1,{drift:"unknown"}),{}}if(!R0e(r))return e?.setAttributes({"verify.drift":!1}),Y.inc("db_migrations.verify",1,{drift:"none"}),{};let n=x0e(r);return Y.inc("db_migrations.verify",1,{drift:Nht(r)}),e?.setAttributes({"verify.drift":!0,"verify.missing_on_disk_count":r.missingOnDisk.length,"verify.out_of_order_count":r.outOfOrder.length}),C0e.log("Detected post-inference migration drift",{missingOnDisk:r.missingOnDisk.map(i=>i.name),outOfOrder:r.outOfOrder.map(i=>i.name)}),{error:n??void 0}});import AZ from"process";import tyt from"net";var Fi=pn(bZ(),1),bgr=Fi.default.Client,Tgr=Fi.default.Pool,wgr=Fi.default.Connection,Agr=Fi.default.types,xgr=Fi.default.Query,Rgr=Fi.default.DatabaseError,Cgr=Fi.default.escapeIdentifier,Igr=Fi.default.escapeLiteral,Pgr=Fi.default.Result,Ogr=Fi.default.TypeOverrides,Ngr=Fi.default.defaults,SIe=Fi.default;var ryt=80877103,nyt=196608,iyt=Buffer.from([78]);function oyt(){let t=Buffer.alloc(9);t.writeUInt8(82,0),t.writeInt32BE(8,1),t.writeInt32BE(0,5);let e=Buffer.alloc(6);return e.writeUInt8(90,0),e.writeInt32BE(5,1),e.writeUInt8(73,5),Buffer.concat([t,e])}function mM(t){let e=Buffer.from("SERROR\0","utf8"),r=Buffer.concat([Buffer.from("M","utf8"),Buffer.from(t+"\0","utf8")]),n=Buffer.from("CXX000\0","utf8"),i=Buffer.from([0]),o=e.length+r.length+n.length+i.length,s=Buffer.alloc(5);return s.writeUInt8(69,0),s.writeInt32BE(o+4,1),Buffer.concat([s,e,n,r,i])}async function syt(t){let{clientSocket:e,provision:r,logger:n,cleanup:i}=t,o;try{o=await r()}catch(f){let p=f instanceof Error?f.message:"Provisioning failed";throw n("Provisioning error:",p),e.end(mM(p)),i(),f}let s=cyt(o),a=new SIe.Client({host:s.host,port:s.port,user:s.user,password:s.password,database:s.database,ssl:s.ssl,options:s.options});a.on("error",()=>{});try{await a.connect()}catch(f){let p=f instanceof Error?f.message:"Remote connection failed";throw n("Remote connection error:",p),e.end(mM(p)),i(),f}let c=a.connection,l=c.stream;c.removeAllListeners(),l.removeAllListeners();let u=l,d=f=>p=>{p.code!=="ECONNRESET"&&n(`${f} socket error:`,p.message),i()};return u.on("error",d("Remote")),u.on("close",i),e.on("error",d("Client")),e.on("close",i),e.write(oyt()),e.on("data",f=>{u.destroyed||u.write(f)}),u.on("data",f=>{e.destroyed||e.write(f)}),e.resume(),u}function ayt(t,e){let{provision:r,logger:n,onCleanup:i}=e,o,s="ssl",a=!1;function c(){a||(a=!0,t.destroy(),o?.destroy(),i())}t.on("error",l=>{l.code!=="ECONNRESET"&&n("Client socket error:",l.message),c()}),t.on("data",l=>{if(s==="ssl"){if(l.length>=8&&l.readInt32BE(4)===ryt){t.write(iyt),s="startup";return}s="startup"}if(s==="startup"){if(l.length<8){t.end(mM("Invalid startup message")),c();return}if(l.readInt32BE(4)!==nyt){t.end(mM("Unsupported protocol version")),c();return}t.pause(),t.removeAllListeners("data"),syt({clientSocket:t,provision:r,logger:n,cleanup:c}).then(d=>{o=d},d=>{n("Startup error:",d),c()})}})}function cyt(t){let e=new URL(t);return{host:e.hostname,port:Number(e.port)||5432,user:decodeURIComponent(e.username),password:decodeURIComponent(e.password),database:e.pathname.slice(1)||"postgres",ssl:e.searchParams.get("sslmode")==="require"?!0:void 0,options:e.searchParams.get("options")??void 0}}var EIe=class{server;sockets=new Set;host;port;logger;provision;constructor(t){this.host=t.host??"127.0.0.1",this.port=t.port??0,this.logger=t.logger??(()=>{}),this.provision=t.provision}async start(){return new Promise((t,e)=>{let r=tyt.createServer(n=>{this.sockets.add(n),n.on("close",()=>{this.sockets.delete(n)}),ayt(n,{provision:this.provision,logger:this.logger,onCleanup:()=>{this.sockets.delete(n)}})});r.on("error",n=>{e(n)}),r.listen(this.port,this.host,()=>{this.server=r;let n=r.address(),i=`postgres://${this.host}:${String(n.port)}`;this.logger("Proxy listening on",i),t(i)})})}async stop(){for(let t of this.sockets)t.destroy();return this.sockets.clear(),new Promise(t=>{if(!this.server){t();return}this.server.close(()=>{this.server=void 0,t()})})}};var gM=ie("db_setup"),vIe=async({siteId:t,isProd:e,alias:r,connectionString:n})=>await Ut(pt(),"db-setup-stage",async i=>{i?.setAttributes({"db_setup.site_id":t,"db_setup.is_prod":e,...r&&{"db_setup.alias":r}});let o;if(e?o="production":r&&(o=r),AZ.env.NETLIFY_DB_BRANCH=o,n)return i?.setAttributes({"db_setup.source":"config","db_setup.has_proxy":!1}),gM.log("Using database connection string provided by the API"),AZ.env.NETLIFY_DB_URL=n,{connectionString:n,wasProvisioned:()=>!1};let s=!1,a=new EIe({logger:(...l)=>gM.log("db-proxy:",...l),provision:async()=>(gM.log("Provisioning database for site via API"),await Zse(t),s=!0,await lyt(t,e,r))}),c=await a.start();return i?.setAttributes({"db_setup.source":"proxy","db_setup.has_proxy":!0}),gM.log("Local DB proxy started",{connectionString:c}),AZ.env.NETLIFY_DB_URL=c,{connectionString:c,proxy:a,wasProvisioned:()=>s}}),lyt=async(t,e,r)=>e||!r?(await Yse(t)).connection_string:(await Jse(t,r),(await Kse(t,r)).connection_string);var TIe=({config:t,cliPath:e,cwd:r,withStageTimer:n})=>{let i,o,s=null,a=t.mode==="ask",c=async()=>t.siteId?o?.()?!0:t.site?.has_database:!1;return{prepare:async({deploySubdomain:l,isProdDeploy:u})=>{if(a)return s=Ape(t,l),s?(Y.inc("ask_mode.db_read_granted",1),VRe({cliPath:e,branch:s.branch})):void 0;bIe.env.EXPERIMENTAL_NETLIFY_DB_ENABLED="1";let d=t.siteId;if(bIe.env.NETLIFY_LOCAL_MODE||!d)return;let f=await n("db-setup",()=>vIe({siteId:d,isProd:u,alias:l,connectionString:t.dbConnectionString}),Ds.timeUnits.minutes(10));return i=f.proxy,o=f.wasProvisioned,r?await v9({cliPath:e,cwd:r,isFreshDatabase:!!f.proxy})??void 0:void 0},currentContext:async()=>{if(!(a||!r)&&await c()!==!1)return await v9({cliPath:e,cwd:r,isFreshDatabase:!1})??void 0},generateMigrations:async()=>a?{skipped:!0,reason:"no_module"}:await A0e({cwd:r}),verifyMigrations:async()=>a||!r?{}:await n("db-migrations-verify",()=>I0e({cliPath:e,cwd:r})),hasDatabase:c,stop:async()=>{await i?.stop()},revokeAskAccess:()=>{s&&NB()}}};import uyt from"process";var wIe=ie("teardown"),AIe=({config:t,cwd:e,database:r,stopUsageTracking:n})=>{let i,o=t.mode==="ask";return{setRunnerCleanup:s=>{i=s},run:async s=>{let a=async(l,u)=>{try{await u()}catch(d){wIe.warn(`Teardown step failed: ${l}`,{state:s,error:d?.message||d}),Y.inc("teardown.step_failed",1,{step:l,state:s})}},c=s==="completed"&&!uyt.env.NETLIFY_LOCAL_MODE;await a("usage-tracker",n),(s==="errored"||c)&&await a("runner-cleanup",()=>i?.()),await a("db-proxy",()=>r.stop()),c&&await a("reset-repo",()=>kfe(e)),o&&c&&await a("remove-untracked-files",async()=>{let l=await Mfe(e);l.length>0&&(wIe.warn(`Removed ${l.length} leftover untracked change(s) after ask run`,{removed:l}),Y.inc("ask_mode.leaked_untracked_files",l.length))})}}};var dyt=({isHotFollowUp:t,enqueuedAt:e})=>t?e===void 0?[]:[["request",e]]:[["spawn",Number(process.env.NETLIFY_AGENT_RUNNER_SPAWN_AT_MS)],["enqueue",Number(process.env.NETLIFY_AGENT_RUNNER_ENQUEUED_AT_MS)]],xZ=(t,e,r,n)=>{for(let[i,o]of dyt(r))Number.isFinite(o)&&o>0&&o<=n&&t.timing(e,n-o,{from:i})},xIe=(t,e=Date.now(),r=Y)=>xZ(r,"startup.duration",t,e),RIe=(t,e=Date.now(),r=Y)=>xZ(r,"startup.time_to_prompt",t,e),CIe=(t,e=Date.now(),r=Y)=>xZ(r,"startup.time_to_first_output",t,e);var IIe=(t,e=Date.now(),r=Y)=>{let n={outcome:t.outcome,native_resume:t.nativeResume,is_answer_resume:t.isAnswerResume};r.timing("session.duration",e-t.startedAt,{hot_follow_up:t.isHotFollowUp,...n}),t.creditsCost!=null&&r.distribution("session.credits_cost",t.creditsCost,{...n,...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{}})};var PIe=ie("run"),OIe=(t,e=Date.now(),r=PIe)=>{r.info(eE({event:"run.finished",agent_runner_id:t.agentRunnerId,session_id:t.sessionId,agent:t.agent,mode:t.mode,orchestrator_version:t.version,model:t.model,effort:t.effort,outcome:t.outcome,finalization_outcome:t.finalizationOutcome,elapsed_ms:e-t.startedAt,credits:t.creditsCost,native_resume:t.nativeResume,is_answer_resume:t.isAnswerResume,hot_follow_up:t.isHotFollowUp}))},NIe=(t,e=PIe)=>{e.info(eE({event:"run.started",agent_runner_id:t.agentRunnerId,session_id:t.sessionId,agent:t.agent,mode:t.mode,orchestrator_version:t.version,model:t.model,effort:t.effort,is_answer_resume:t.isAnswerResume,hot_follow_up:t.isHotFollowUp}))};function kIe(t){return["One or more AI functions use the legacy **v1** syntax (`exports.handler` / `module.exports.handler`):","",t.map(r=>`- ${r}`).join(`
657
657
  `),"",'Netlify AI Gateway credentials (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY` and the matching `*_BASE_URL` variables) are injected ONLY into the modern v2/v3 function runtime. A v1 function builds and deploys successfully but throws "missing API key" at runtime \u2014 this will NOT appear as a build error.',"","Rewrite each listed function using **v2** syntax \u2014 `export default async (req: Request) => Response` \u2014 or **v3** object export (`satisfies NetlifyFunction`), preserving its existing behavior and route. Do not set your own API keys; rely on the injected gateway credentials. See the `netlify-ai-gateway` skill for examples."].join(`
658
- `)}var ep=ie("usage_tracker"),fyt=4e3,pyt=5e3,hyt=2e4,myt=(t,e,r)=>t===!0||r!=null&&e!=null&&e>=r,gyt=(t,e,r)=>e!=null&&e>0&&r!=null&&t!=null&&e-t<=r,MIe=(t,e,r,{creditReserve:n,onCreditReserveReached:i}={})=>{let o=!1,s=!1,a=!1,c=!1,l,u,d,f=r,p,h=i!=null&&n!=null,m=()=>{p&&(clearInterval(p),p=void 0)},g=R=>{m(),p=setInterval(()=>{v()},R),p.unref?.()},_=async()=>{try{let R=await k0(t,e);ep.log("Usage update response",{usage:R?.usage});let P=R?.usage?.total_credits_cost;P!=null&&(l=P);let k=R?.enforced_credits_cap;if(k!=null&&k!==f){let S=f==null;f=k,ep.log("Took the session credit limit from a usage poll",{sessionCreditLimit:f,totalCreditsCost:P,isFirstLimit:S}),S&&K.inc("session.credit_cap_late_arrival",1)}let L=myt(R?.credit_limit_exceeded,P,f);if(L&&(ep.log("Credit limit exceeded",{totalCreditsCost:P,sessionCreditLimit:f}),a||(u=Date.now(),d=P??l??0,g(hyt)),a=!0),h&&!c&&!L&&gyt(P,f,n)){c=!0,ep.log("Credit reserve reached",{totalCreditsCost:P,sessionCreditLimit:f,creditReserve:n});try{i()}catch(S){ep.warn("onCreditReserveReached callback threw",{error:S?.message||S})}}}catch(R){ep.warn("Failed to update usage",{error:R?.message||R})}},v=D0(_,fyt);return{onAgentOutput:()=>{if(a)throw new Do("AI credit usage exceeded enforced limit.",503,"Credit limit reached. Check credit limits to continue using Agent Runners.",!0);s||(o=!0,p||g(pyt))},stop:async()=>{s||(s=!0,m(),o&&(v.cancel(),ep.log("Sending final usage update"),await _(),u!==void 0&&(K.timing("credit_limit.overage_duration",Date.now()-u),K.distribution("credit_limit.overage_credits",Math.max(0,(l??d??0)-(d??0))))))},getCreditsCost:()=>l,getSessionCreditLimit:()=>f}};var $Ie=ie("session_credit_limit"),_yt=async t=>{if(t.sessionCreditLimit!=null)return{limit:t.sessionCreditLimit,source:"env"};try{let e=(await k0(t.id,t.sessionId))?.enforced_credits_cap;if(e!=null)return $Ie.log("Resolved the session credit limit from the usage endpoint",{limit:e}),{limit:e,source:"usage"}}catch(e){$Ie.warn("Usage call for the session credit limit failed",{error:e?.message||e})}return{source:"none"}},DIe=async(t,e=!1)=>{let{limit:r,source:n}=await _yt(t);t.sessionCreditLimit=r,K.inc("session.credit_cap_source",1,{source:n,hot_follow_up:e})};var Pu=ie("credit_wrapup"),LIe="low",yyt=t=>{if(t.mode==="ask")return tz;if(t.mode==="normal")return rz;let e=mf(t);return gf(t,e)?QF:ez},RZ=t=>{let e=Ye();return e.creditWrapUpReserveByModeAndModel[t.mode]?.[t.runner]??e.creditWrapUpReserve},UIe=(t,e)=>{if(e<=0)return!1;let r=Ye();return t.mode==="create"?r.creditWrapUpEnabled:t.mode==="ask"||t.mode==="normal"?r.creditWrapUpNormalEnabled:!1},CZ=(t,e)=>{if(t==="fix"){Pu.log("Credit reserve reached outside of the main inference turn \u2014 letting the fix finish without a wrap-up"),K.inc("session.credit_wrapup_skipped_fix_turn",1,{credit_reserve:e});return}if(t==="no_session"){Pu.warn("Credit reserve reached but no session id yet \u2014 skipping wrap-up interrupt"),K.inc("session.credit_wrapup_skipped_no_session",1,{credit_reserve:e});return}Pu.log("Credit reserve reached with no turn to interrupt \u2014 the agent had already finished")},FIe=(t,e,r)=>{if(e==null)return;let n=Math.max(0,e-t.creditsSpentBeforeWrapUp);Pu.log("Credit wrap-up cost",{credits:n,creditsCostAtSessionEnd:e,effort:LIe,inferenceAfterWrapUp:r,...t}),K.distribution("session.credit_wrapup_cost",n,{outcome:t.outcome,effort:LIe,credit_reserve:t.creditReserve,inference_after_wrap_up:r,...t.model?{model:t.model}:{}})},zIe=async({runnerResult:t,interruptedSessionId:e,creditsSpentBeforeWrapUp:r,cliPath:n,config:i,context:o,runner:s,aiGateway:a,cwd:c,persistSteps:l,usageTracker:u,withStageTimer:d,answerFold:f})=>{let p=RZ(i),h=new AbortController,m=!1,g=!1,_,v=Object.assign(async T=>{try{u.onAgentOutput()}catch(A){La(A)&&!m&&(m=!0,Pu.log("Wrap-up turn spent the credit reserve \u2014 stopping wrap-up",{creditsSpentBeforeWrapUp:r}),K.inc("session.credit_wrapup_aborted",1,{credit_reserve:p}),h.abort())}return l(T)},{flush:l.flush.bind(l)});Pu.log("Running credit wrap-up inference turn",{creditsSpentBeforeWrapUp:r,creditReserve:p});try{await l({steps:[{category:H.WrapUp,message:`You are reaching your usage limit. ${i.mode==="ask"?"Wrapping up and gathering the info found so far.":"Wrapping up and leaving your work in a usable state."}`}],duration:0})}catch{}let w;try{let{runnerResult:T}=await d("inference-credit-wrapup",()=>xu({cliPath:n,config:i,context:o,runner:s,persistSteps:v,aiGateway:a,cwd:c,contextPrefix:yyt(i),priorAgentSessionId:e,resumeForCreditWrapUp:!0,answerFold:f,forceLowEffortForCreditWrapUp:!0,abortSignal:h.signal}));_=T.resolvedModel,m&&Pu.log("Wrap-up turn was aborted due to budget limit"),w={...rv(t,T),resolvedModel:t.resolvedModel,effort:t.effort,resolvedProviderEffort:t.resolvedProviderEffort}}catch(T){Pu.warn("Credit wrap-up turn failed \u2014 proceeding with pre-wrap-up result",{error:T?.message||T}),K.inc("session.credit_wrapup_failed",1,{credit_reserve:p}),g=!0,w=t}let y=_??t.resolvedModel;return{runnerResult:w,costReport:{creditsSpentBeforeWrapUp:r,creditReserve:p,outcome:g?"failed":m?"aborted":"completed",...y?{model:y}:{}}}};var jIe=t=>{let e,r=!1;return{getActiveTurn:()=>e?"main":r?"fix":"none",getMainTurnAbortSignal:()=>t?e?.signal:void 0,startMainTurn:()=>{e=new AbortController},finishMainTurn:()=>{e=void 0},runFixTurn:async n=>{r=!0;try{return await n()}finally{r=!1}},abortMainTurn:()=>e?.abort()}};var Syt=4e3,Eyt=3e4,XT=ie("credit_limit_preservation"),BIe=async(t,e)=>{if(!e)return null;FT(e);let r=gu(t.runner),n=null;try{await Promise.race([Promise.all([$T({runnerId:t.id,sessionId:t.sessionId,archive:r,nativeSessionId:e}).then(i=>{n=i}),DT({archive:r,cache:t.cache,nativeSessionId:e}).catch(i=>{XT.warn("Failed to seed the native session cache before teardown",{error:i?.message||i})})]),new Promise(i=>{setTimeout(i,Syt).unref()})])}catch(i){XT.warn("Failed to preserve native session before teardown",{error:i?.message||i})}return n},qIe=async(t,e)=>{let r=null,n={},i=[];if(e){FT(e);let o=gu(t.runner);i.push(Promise.all([$T({runnerId:t.id,sessionId:t.sessionId,archive:o,nativeSessionId:e}).then(s=>{r=s}),DT({archive:o,cache:t.cache,nativeSessionId:e}).catch(s=>{XT.warn("Failed to seed the native session cache on credit-limit shutdown",{error:s?.message||s})})]).catch(s=>{XT.warn("Failed to preserve native session on credit-limit shutdown",{error:s?.message||s})}))}if(t.mode!=="ask"&&i.push(ZC({config:t}).then(o=>o.hasChanges?LT({config:t,diff:o.diff,diffBinary:o.diffBinary,resultDiff:o.resultDiff,resultDiffBinary:o.resultDiffBinary}):{}).then(o=>{n=o}).catch(o=>{XT.warn("Failed to preserve working-tree diff on credit-limit shutdown",{error:o?.message||o})})),i.length>0){let o=!1;await Promise.race([Promise.all(i).then(()=>{o=!0}),new Promise(s=>{setTimeout(s,Eyt).unref()})]),o||K.inc("credit_preservation.timed_out",1)}return{nativeSessionS3Key:r,diffFields:n}};import vyt from"process";var IZ=ie("shutdown"),VIe=!1,byt,Tyt=async t=>{if(VIe)return;if(VIe=!0,IZ.info("Shutting down...",{signal:t}),hfe(),K.distribution("session.hot_followups",i0e()),!n0e()){let r=Date.now(),n=o0e(),i=s0e();n!==void 0&&K.timing("session.last_linger",r-n),i!==void 0&&K.timing("session.total_linger",r-i)}let e=byt?.close().catch(r=>{IZ.error("Error closing server during graceful shutdown",r)});await c0e(),await e,await T0(),IZ.info("Shutdown complete"),vyt.exit(0)};var GIe=t=>{Tyt(t)};var PZ=ie("session_finalization"),HIe=({config:t,teardown:e,withStageTimer:r,cwd:n})=>async i=>{switch(i.outcome){case"completed":{_M(i.artifacts.nativeSessionId),await OZ({config:t,artifacts:i.artifacts,withStageTimer:r}),await wyt({cwd:n,pipelineSpan:i.pipelineSpan}),await e.run("completed");return}case"redeployed":{_M(i.artifacts.nativeSessionId),await OZ({config:t,artifacts:i.artifacts,withStageTimer:r}),await e.run("completed");return}case"deploy-failed":throw _M(i.artifacts.nativeSessionId),await OZ({config:t,artifacts:i.artifacts,withStageTimer:r}),i.error;case"awaiting-input":{let{nativeSessionId:o,pendingInteraction:s}=i;_M(o);let a=await MRe({config:t,cwd:n}),c=await s9({config:t,nativeSessionArchive:gu(t.runner),nativeSessionId:o}),l;try{l=await f0e(t,s,{nativeSessionId:o,nativeSessionS3Key:c??void 0,diffFields:a})}catch(u){throw K.inc("inference.pause_persist_failed",1),u}p0e(s,t.sessionId,l),await e.run("awaiting-input");return}case"credit-limit":case"graceful-error":{let o=i.outcome==="credit-limit",s=i.error.agentSessionId,{nativeSessionS3Key:a,diffFields:c}=o?await qIe(t,s):{nativeSessionS3Key:null,diffFields:{}};await e.run("errored");try{await mn(t.id,t.sessionId,{result:i.error.userMessage,state:o?"cancelled":"error",...o&&{credit_limit_exceeded:!0},...o&&s?{native_session_id:s}:{},...a?{native_session_s3_key:a}:{},...c,metadata:{final_agent_config:i.finalAgentConfig,...i.creditWrapUp?{credit_wrap_up:!0}:{}}})}catch{PZ.warn("Could not update session (site may have been deleted)")}o&&GIe("credit_limit_cancelled");return}case"interrupted":case"error":{let{error:o}=i,s=o?.agentSessionId,a=i.outcome==="interrupted"&&!!s,c=a?await BIe(t,s):null;await e.run("errored");let l=o instanceof Error?o.shortMessage||o.message:"",u=l?LEe(_N(l)):"Encountered error when running agent";try{await mn(t.id,t.sessionId,{result:u,state:"error",...a?{native_session_id:s}:{},...c?{native_session_s3_key:c}:{}})}catch(d){PZ.error("Failed to update session with error state, retrying with minimal payload:",d);try{await mn(t.id,t.sessionId,{result:"Encountered error when running agent",state:"error"})}catch(f){PZ.error("Failed to mark session as errored:",f)}}return}}},wyt=async({cwd:t,pipelineSpan:e})=>{try{let r=await A0(t??process.cwd());r.aiTotal>0&&e?.setAttributes({"agent.fn_ai_total":r.aiTotal,"agent.fn_ai_v1":r.v1,"agent.fn_ai_v2":r.v2,"agent.fn_ai_v3":r.v3,"agent.fn_ai_unknown":r.unknown})}catch{}},OZ=async({config:t,artifacts:e,withStageTimer:r})=>{await r("cleanup",()=>ORe({config:t,...e,nativeSessionArchive:gu(t.runner)}),Ds.timeUnits.minutes(10),{interruptible:!1})},_M=t=>{t&&FT(t)};var xyt=Ayt(import.meta.url),Ou=xyt("../package.json"),xr=ie("pipeline_index"),ty=3,NZ=2,Ryt=["codex","gemini"],g9=t=>{let{config:e}=t;return hse({agent_runner_id:e.id,session_id:e.sessionId,agent:e.runner,mode:e.mode,orchestrator_version:Ou.version,model:e.model,effort:e.effort},()=>Cyt(t))},Cyt=async({config:t,apiToken:e,cliPath:r="netlify",cwd:n,filter:i,isHotFollowUp:o=!1,enqueuedAt:s,tracing:a={}})=>{let c,l=Date.now(),u="success",d=!1,f,p,h=!1,m,g=!1,{withStageTimer:_}=mfe(Ds.timeUnits.hours(4)),v=TIe({config:t,cliPath:r,cwd:n,withStageTimer:_}),w=AIe({config:t,cwd:n,database:v,stopUsageTracking:()=>c?.stop()}),y,T=HIe({config:t,teardown:w,withStageTimer:_,cwd:n}),A=S=>(y??=S.outcome,T(S)),R=await wse(Ou.version,t.id,a),P=t.effort===ei;xr.log(`Agent runner orchestrator v${Ou.version}`,{featureFlags:Ye().raw,metrics:Nse(),modelDefaultEffort:P});let k={agent:t.runner,mode:t.mode,is_follow_up:t.sessionHistoryContext.length>0,version:Ou.version,fast_init:t.fastInit,credit_wrapup:!1,budget_eligible:!1,budget_constrained:!1,ask_first:!1};sE({...k}),K.inc("session.model_default_effort",1,{requested:P});let L=!!t.answeredInteraction;NIe({agentRunnerId:t.id,sessionId:t.sessionId,agent:t.runner,mode:t.mode,version:Ou.version,model:t.model,effort:t.effort,isAnswerResume:L,isHotFollowUp:o}),xIe({isHotFollowUp:o,enqueuedAt:s}),Ife(t.sessionId);try{await Dy(pt(),"run-pipeline",{},R,async S=>{await m9(h9(),t.runner),S?.setAttributes({"gen_ai.capability.name":t.mode,"session.id":t.sessionId,...process.env.NETLIFY_DEV_SERVER_ID?{"dev_server.id":process.env.NETLIFY_DEV_SERVER_ID}:{}});let{aiGateway:te,context:$,persistSteps:b,runner:x,sha:M}=await _("init",()=>$Re({config:t,apiToken:e,cliPath:r,cwd:n,filter:i,runnerVersion:Ou.version,isHotFollowUp:o}),Ds.timeUnits.minutes(10)),Z=x.runner;Ye().idleTimeoutEnabled||w.setRunnerCleanup(x.clean),await DIe(t,o),Object.assign(k,FEe(t)),sE({...k});let G=RZ(t),me=UIe(t,G),Ne=jIe(me),ve,Ge=!1,$e=0,He;c=MIe(t.id,t.sessionId,t.sessionCreditLimit,{...me?{creditReserve:G,onCreditReserveReached:()=>{if(!Ge){if(Ne.getActiveTurn()!=="main"){Ge=!0,CZ(Ne.getActiveTurn(),G);return}if(!He){CZ("no_session",G);return}Ge=!0,$e=c?.getCreditsCost()??0,xr.log("Credit reserve reached \u2014 interrupting agent to wrap up",{creditsSpentBeforeWrapUp:$e,creditReserve:G}),k.credit_wrapup=!0,sE({...k}),K.inc("session.credit_wrapup_triggered",1,{credit_reserve:G}),Ne.abortMainTurn()}}}:{}});let ke=xI(t.mode),ce;t.deployAlias&&t.deployAlias.length>0?ce=t.deployAlias:(t.deployAlias!==void 0&&!ke&&xr.warn("Received empty deploy alias for a non-prod deploy, falling back to local computation"),ce=sae(t.id,process.env.SITE_NAME,ke));let he=!1,gt=!1,ne=Object.assign(async Re=>{he||(he=!0,RIe({isHotFollowUp:o,enqueuedAt:s}));try{c?.onAgentOutput()}catch(Mt){return La(Mt)?ve??=Mt:xr.warn("Unexpected error in onAgentOutput",{error:Mt?.message||Mt}),b(Re)}return!gt&&Re.steps?.some(Mt=>Mt.category!==H.Environment&&Mt.category!==H.SubagentPrompt)&&(gt=!0,CIe({isHotFollowUp:o,enqueuedAt:s})),b(Re)},{flush:b.flush.bind(b)});if(t.sha=M,t.mode==="redeploy"){let Re=await T0e({cliPath:r,config:t,filter:i,deploySubdomain:ce,isProdDeploy:ke,withStageTimer:_});await c?.stop(),await A({outcome:"redeployed",artifacts:Re});return}let Fe=m0e(),V=t.mode==="ask",C;t.mode==="create"&&(C=(await _("create",()=>BEe({config:t,cwd:n}))).additionalContext),C=await GRe(C,t);let N=await v.prepare({deploySubdomain:ce,isProdDeploy:ke});N&&(C=[N,C].filter(Boolean).join(`
658
+ `)}var ep=ie("usage_tracker"),fyt=4e3,pyt=5e3,hyt=2e4,myt=(t,e,r)=>t===!0||r!=null&&e!=null&&e>=r,gyt=(t,e,r)=>e!=null&&e>0&&r!=null&&t!=null&&e-t<=r,MIe=(t,e,r,{creditReserve:n,onCreditReserveReached:i}={})=>{let o=!1,s=!1,a=!1,c=!1,l,u,d,f=r,p,h=i!=null&&n!=null,m=()=>{p&&(clearInterval(p),p=void 0)},g=R=>{m(),p=setInterval(()=>{v()},R),p.unref?.()},_=async()=>{try{let R=await k0(t,e);ep.log("Usage update response",{usage:R?.usage});let P=R?.usage?.total_credits_cost;P!=null&&(l=P);let k=R?.enforced_credits_cap;if(k!=null&&k!==f){let S=f==null;f=k,ep.log("Took the session credit limit from a usage poll",{sessionCreditLimit:f,totalCreditsCost:P,isFirstLimit:S}),S&&Y.inc("session.credit_cap_late_arrival",1)}let L=myt(R?.credit_limit_exceeded,P,f);if(L&&(ep.log("Credit limit exceeded",{totalCreditsCost:P,sessionCreditLimit:f}),a||(u=Date.now(),d=P??l??0,g(hyt)),a=!0),h&&!c&&!L&&gyt(P,f,n)){c=!0,ep.log("Credit reserve reached",{totalCreditsCost:P,sessionCreditLimit:f,creditReserve:n});try{i()}catch(S){ep.warn("onCreditReserveReached callback threw",{error:S?.message||S})}}}catch(R){ep.warn("Failed to update usage",{error:R?.message||R})}},v=D0(_,fyt);return{onAgentOutput:()=>{if(a)throw new Do("AI credit usage exceeded enforced limit.",503,"Credit limit reached. Check credit limits to continue using Agent Runners.",!0);s||(o=!0,p||g(pyt))},stop:async()=>{s||(s=!0,m(),o&&(v.cancel(),ep.log("Sending final usage update"),await _(),u!==void 0&&(Y.timing("credit_limit.overage_duration",Date.now()-u),Y.distribution("credit_limit.overage_credits",Math.max(0,(l??d??0)-(d??0))))))},getCreditsCost:()=>l,getSessionCreditLimit:()=>f}};var $Ie=ie("session_credit_limit"),_yt=async t=>{if(t.sessionCreditLimit!=null)return{limit:t.sessionCreditLimit,source:"env"};try{let e=(await k0(t.id,t.sessionId))?.enforced_credits_cap;if(e!=null)return $Ie.log("Resolved the session credit limit from the usage endpoint",{limit:e}),{limit:e,source:"usage"}}catch(e){$Ie.warn("Usage call for the session credit limit failed",{error:e?.message||e})}return{source:"none"}},DIe=async(t,e=!1)=>{let{limit:r,source:n}=await _yt(t);t.sessionCreditLimit=r,Y.inc("session.credit_cap_source",1,{source:n,hot_follow_up:e})};var Pu=ie("credit_wrapup"),LIe="low",yyt=t=>{if(t.mode==="ask")return tz;if(t.mode==="normal")return rz;let e=mf(t);return gf(t,e)?QF:ez},RZ=t=>{let e=Ye();return e.creditWrapUpReserveByModeAndModel[t.mode]?.[t.runner]??e.creditWrapUpReserve},UIe=(t,e)=>{if(e<=0)return!1;let r=Ye();return t.mode==="create"?r.creditWrapUpEnabled:t.mode==="ask"||t.mode==="normal"?r.creditWrapUpNormalEnabled:!1},CZ=(t,e)=>{if(t==="fix"){Pu.log("Credit reserve reached outside of the main inference turn \u2014 letting the fix finish without a wrap-up"),Y.inc("session.credit_wrapup_skipped_fix_turn",1,{credit_reserve:e});return}if(t==="no_session"){Pu.warn("Credit reserve reached but no session id yet \u2014 skipping wrap-up interrupt"),Y.inc("session.credit_wrapup_skipped_no_session",1,{credit_reserve:e});return}Pu.log("Credit reserve reached with no turn to interrupt \u2014 the agent had already finished")},FIe=(t,e,r)=>{if(e==null)return;let n=Math.max(0,e-t.creditsSpentBeforeWrapUp);Pu.log("Credit wrap-up cost",{credits:n,creditsCostAtSessionEnd:e,effort:LIe,inferenceAfterWrapUp:r,...t}),Y.distribution("session.credit_wrapup_cost",n,{outcome:t.outcome,effort:LIe,credit_reserve:t.creditReserve,inference_after_wrap_up:r,...t.model?{model:t.model}:{}})},zIe=async({runnerResult:t,interruptedSessionId:e,creditsSpentBeforeWrapUp:r,cliPath:n,config:i,context:o,runner:s,aiGateway:a,cwd:c,persistSteps:l,usageTracker:u,withStageTimer:d,answerFold:f})=>{let p=RZ(i),h=new AbortController,m=!1,g=!1,_,v=Object.assign(async T=>{try{u.onAgentOutput()}catch(A){La(A)&&!m&&(m=!0,Pu.log("Wrap-up turn spent the credit reserve \u2014 stopping wrap-up",{creditsSpentBeforeWrapUp:r}),Y.inc("session.credit_wrapup_aborted",1,{credit_reserve:p}),h.abort())}return l(T)},{flush:l.flush.bind(l)});Pu.log("Running credit wrap-up inference turn",{creditsSpentBeforeWrapUp:r,creditReserve:p});try{await l({steps:[{category:H.WrapUp,message:`You are reaching your usage limit. ${i.mode==="ask"?"Wrapping up and gathering the info found so far.":"Wrapping up and leaving your work in a usable state."}`}],duration:0})}catch{}let w;try{let{runnerResult:T}=await d("inference-credit-wrapup",()=>xu({cliPath:n,config:i,context:o,runner:s,persistSteps:v,aiGateway:a,cwd:c,contextPrefix:yyt(i),priorAgentSessionId:e,resumeForCreditWrapUp:!0,answerFold:f,forceLowEffortForCreditWrapUp:!0,abortSignal:h.signal}));_=T.resolvedModel,m&&Pu.log("Wrap-up turn was aborted due to budget limit"),w={...rv(t,T),resolvedModel:t.resolvedModel,effort:t.effort,resolvedProviderEffort:t.resolvedProviderEffort}}catch(T){Pu.warn("Credit wrap-up turn failed \u2014 proceeding with pre-wrap-up result",{error:T?.message||T}),Y.inc("session.credit_wrapup_failed",1,{credit_reserve:p}),g=!0,w=t}let y=_??t.resolvedModel;return{runnerResult:w,costReport:{creditsSpentBeforeWrapUp:r,creditReserve:p,outcome:g?"failed":m?"aborted":"completed",...y?{model:y}:{}}}};var jIe=t=>{let e,r=!1;return{getActiveTurn:()=>e?"main":r?"fix":"none",getMainTurnAbortSignal:()=>t?e?.signal:void 0,startMainTurn:()=>{e=new AbortController},finishMainTurn:()=>{e=void 0},runFixTurn:async n=>{r=!0;try{return await n()}finally{r=!1}},abortMainTurn:()=>e?.abort()}};var Syt=4e3,Eyt=3e4,XT=ie("credit_limit_preservation"),BIe=async(t,e)=>{if(!e)return null;FT(e);let r=gu(t.runner),n=null;try{await Promise.race([Promise.all([$T({runnerId:t.id,sessionId:t.sessionId,archive:r,nativeSessionId:e}).then(i=>{n=i}),DT({archive:r,cache:t.cache,nativeSessionId:e}).catch(i=>{XT.warn("Failed to seed the native session cache before teardown",{error:i?.message||i})})]),new Promise(i=>{setTimeout(i,Syt).unref()})])}catch(i){XT.warn("Failed to preserve native session before teardown",{error:i?.message||i})}return n},qIe=async(t,e)=>{let r=null,n={},i=[];if(e){FT(e);let o=gu(t.runner);i.push(Promise.all([$T({runnerId:t.id,sessionId:t.sessionId,archive:o,nativeSessionId:e}).then(s=>{r=s}),DT({archive:o,cache:t.cache,nativeSessionId:e}).catch(s=>{XT.warn("Failed to seed the native session cache on credit-limit shutdown",{error:s?.message||s})})]).catch(s=>{XT.warn("Failed to preserve native session on credit-limit shutdown",{error:s?.message||s})}))}if(t.mode!=="ask"&&i.push(ZC({config:t}).then(o=>o.hasChanges?LT({config:t,diff:o.diff,diffBinary:o.diffBinary,resultDiff:o.resultDiff,resultDiffBinary:o.resultDiffBinary}):{}).then(o=>{n=o}).catch(o=>{XT.warn("Failed to preserve working-tree diff on credit-limit shutdown",{error:o?.message||o})})),i.length>0){let o=!1;await Promise.race([Promise.all(i).then(()=>{o=!0}),new Promise(s=>{setTimeout(s,Eyt).unref()})]),o||Y.inc("credit_preservation.timed_out",1)}return{nativeSessionS3Key:r,diffFields:n}};import vyt from"process";var IZ=ie("shutdown"),VIe=!1,byt,Tyt=async t=>{if(VIe)return;if(VIe=!0,IZ.info("Shutting down...",{signal:t}),hfe(),Y.distribution("session.hot_followups",i0e()),!n0e()){let r=Date.now(),n=o0e(),i=s0e();n!==void 0&&Y.timing("session.last_linger",r-n),i!==void 0&&Y.timing("session.total_linger",r-i)}let e=byt?.close().catch(r=>{IZ.error("Error closing server during graceful shutdown",r)});await c0e(),await e,await T0(),IZ.info("Shutdown complete"),vyt.exit(0)};var GIe=t=>{Tyt(t)};var PZ=ie("session_finalization"),HIe=({config:t,teardown:e,withStageTimer:r,cwd:n})=>async i=>{switch(i.outcome){case"completed":{_M(i.artifacts.nativeSessionId),await OZ({config:t,artifacts:i.artifacts,withStageTimer:r}),await wyt({cwd:n,pipelineSpan:i.pipelineSpan}),await e.run("completed");return}case"redeployed":{_M(i.artifacts.nativeSessionId),await OZ({config:t,artifacts:i.artifacts,withStageTimer:r}),await e.run("completed");return}case"deploy-failed":throw _M(i.artifacts.nativeSessionId),await OZ({config:t,artifacts:i.artifacts,withStageTimer:r}),i.error;case"awaiting-input":{let{nativeSessionId:o,pendingInteraction:s}=i;_M(o);let a=await MRe({config:t,cwd:n}),c=await s9({config:t,nativeSessionArchive:gu(t.runner),nativeSessionId:o}),l;try{l=await f0e(t,s,{nativeSessionId:o,nativeSessionS3Key:c??void 0,diffFields:a})}catch(u){throw Y.inc("inference.pause_persist_failed",1),a&&Y.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),u}a&&Y.inc("pending_diff.save",1,{outcome:a.diff_produced?"saved":"no_changes"}),p0e(s,t.sessionId,l),await e.run("awaiting-input");return}case"credit-limit":case"graceful-error":{let o=i.outcome==="credit-limit",s=i.error.agentSessionId,{nativeSessionS3Key:a,diffFields:c}=o?await qIe(t,s):{nativeSessionS3Key:null,diffFields:{}};await e.run("errored");try{await mn(t.id,t.sessionId,{result:i.error.userMessage,state:o?"cancelled":"error",...o&&{credit_limit_exceeded:!0},...o&&s?{native_session_id:s}:{},...a?{native_session_s3_key:a}:{},...c,metadata:{final_agent_config:i.finalAgentConfig,...i.creditWrapUp?{credit_wrap_up:!0}:{}}})}catch{PZ.warn("Could not update session (site may have been deleted)")}o&&GIe("credit_limit_cancelled");return}case"interrupted":case"error":{let{error:o}=i,s=o?.agentSessionId,a=i.outcome==="interrupted"&&!!s,c=a?await BIe(t,s):null;await e.run("errored");let l=o instanceof Error?o.shortMessage||o.message:"",u=l?LEe(_N(l)):"Encountered error when running agent";try{await mn(t.id,t.sessionId,{result:u,state:"error",...a?{native_session_id:s}:{},...c?{native_session_s3_key:c}:{}})}catch(d){PZ.error("Failed to update session with error state, retrying with minimal payload:",d);try{await mn(t.id,t.sessionId,{result:"Encountered error when running agent",state:"error"})}catch(f){PZ.error("Failed to mark session as errored:",f)}}return}}},wyt=async({cwd:t,pipelineSpan:e})=>{try{let r=await A0(t??process.cwd());r.aiTotal>0&&e?.setAttributes({"agent.fn_ai_total":r.aiTotal,"agent.fn_ai_v1":r.v1,"agent.fn_ai_v2":r.v2,"agent.fn_ai_v3":r.v3,"agent.fn_ai_unknown":r.unknown})}catch{}},OZ=async({config:t,artifacts:e,withStageTimer:r})=>{await r("cleanup",()=>ORe({config:t,...e,nativeSessionArchive:gu(t.runner)}),Ds.timeUnits.minutes(10),{interruptible:!1})},_M=t=>{t&&FT(t)};var xyt=Ayt(import.meta.url),Ou=xyt("../package.json"),xr=ie("pipeline_index"),ty=3,NZ=2,Ryt=["codex","gemini"],g9=t=>{let{config:e}=t;return hse({agent_runner_id:e.id,session_id:e.sessionId,agent:e.runner,mode:e.mode,orchestrator_version:Ou.version,model:e.model,effort:e.effort},()=>Cyt(t))},Cyt=async({config:t,apiToken:e,cliPath:r="netlify",cwd:n,filter:i,isHotFollowUp:o=!1,enqueuedAt:s,tracing:a={}})=>{let c,l=Date.now(),u="success",d=!1,f,p,h=!1,m,g=!1,{withStageTimer:_}=mfe(Ds.timeUnits.hours(4)),v=TIe({config:t,cliPath:r,cwd:n,withStageTimer:_}),w=AIe({config:t,cwd:n,database:v,stopUsageTracking:()=>c?.stop()}),y,T=HIe({config:t,teardown:w,withStageTimer:_,cwd:n}),A=S=>(y??=S.outcome,T(S)),R=await wse(Ou.version,t.id,a),P=t.effort===ei;xr.log(`Agent runner orchestrator v${Ou.version}`,{featureFlags:Ye().raw,metrics:Nse(),modelDefaultEffort:P});let k={agent:t.runner,mode:t.mode,is_follow_up:t.sessionHistoryContext.length>0,version:Ou.version,fast_init:t.fastInit,credit_wrapup:!1,budget_eligible:!1,budget_constrained:!1,ask_first:!1};sE({...k}),Y.inc("session.model_default_effort",1,{requested:P});let L=!!t.answeredInteraction;NIe({agentRunnerId:t.id,sessionId:t.sessionId,agent:t.runner,mode:t.mode,version:Ou.version,model:t.model,effort:t.effort,isAnswerResume:L,isHotFollowUp:o}),xIe({isHotFollowUp:o,enqueuedAt:s}),Ife(t.sessionId);try{await Dy(pt(),"run-pipeline",{},R,async S=>{await m9(h9(),t.runner),S?.setAttributes({"gen_ai.capability.name":t.mode,"session.id":t.sessionId,...process.env.NETLIFY_DEV_SERVER_ID?{"dev_server.id":process.env.NETLIFY_DEV_SERVER_ID}:{}});let{aiGateway:te,context:$,persistSteps:b,runner:x,sha:M}=await _("init",()=>$Re({config:t,apiToken:e,cliPath:r,cwd:n,filter:i,runnerVersion:Ou.version,isHotFollowUp:o}),Ds.timeUnits.minutes(10)),Z=x.runner;Ye().idleTimeoutEnabled||w.setRunnerCleanup(x.clean),await DIe(t,o),Object.assign(k,FEe(t)),sE({...k});let G=RZ(t),me=UIe(t,G),Ne=jIe(me),ve,Ge=!1,$e=0,He;c=MIe(t.id,t.sessionId,t.sessionCreditLimit,{...me?{creditReserve:G,onCreditReserveReached:()=>{if(!Ge){if(Ne.getActiveTurn()!=="main"){Ge=!0,CZ(Ne.getActiveTurn(),G);return}if(!He){CZ("no_session",G);return}Ge=!0,$e=c?.getCreditsCost()??0,xr.log("Credit reserve reached \u2014 interrupting agent to wrap up",{creditsSpentBeforeWrapUp:$e,creditReserve:G}),k.credit_wrapup=!0,sE({...k}),Y.inc("session.credit_wrapup_triggered",1,{credit_reserve:G}),Ne.abortMainTurn()}}}:{}});let ke=xI(t.mode),ce;t.deployAlias&&t.deployAlias.length>0?ce=t.deployAlias:(t.deployAlias!==void 0&&!ke&&xr.warn("Received empty deploy alias for a non-prod deploy, falling back to local computation"),ce=sae(t.id,process.env.SITE_NAME,ke));let he=!1,gt=!1,ne=Object.assign(async Re=>{he||(he=!0,RIe({isHotFollowUp:o,enqueuedAt:s}));try{c?.onAgentOutput()}catch(Mt){return La(Mt)?ve??=Mt:xr.warn("Unexpected error in onAgentOutput",{error:Mt?.message||Mt}),b(Re)}return!gt&&Re.steps?.some(Mt=>Mt.category!==H.Environment&&Mt.category!==H.SubagentPrompt)&&(gt=!0,CIe({isHotFollowUp:o,enqueuedAt:s})),b(Re)},{flush:b.flush.bind(b)});if(t.sha=M,t.mode==="redeploy"){let Re=await T0e({cliPath:r,config:t,filter:i,deploySubdomain:ce,isProdDeploy:ke,withStageTimer:_});await c?.stop(),await A({outcome:"redeployed",artifacts:Re});return}let Fe=m0e(),V=t.mode==="ask",C;t.mode==="create"&&(C=(await _("create",()=>BEe({config:t,cwd:n}))).additionalContext),C=await GRe(C,t);let N=await v.prepare({deploySubdomain:ce,isProdDeploy:ke});N&&(C=[N,C].filter(Boolean).join(`
659
659
 
660
660
  `)),Ne.startMainTurn();let U=await _("inference",async()=>{try{return await xu({cliPath:r,config:t,context:$,runner:Z,persistSteps:ne,aiGateway:te,additionalContext:C,cwd:n,answerFold:Fe,abortSignal:Ne.getMainTurnAbortSignal(),onSessionId:me?Re=>{He=Re}:void 0})}catch(Re){if(!(Re instanceof Th)||t.mode!=="rebase"&&t.mode!=="conflict_resolution")throw Re;for(let Mt of Ryt){if(ve&&La(ve))throw ve;if(Mt===t.runner)continue;let is=w_[Mt];if(is){xr.log(`Primary runner ${t.runner} failed in ${t.mode} mode, falling back to ${Mt}`),sE({...k,agent:Mt}),await m9(h9(),Mt);try{let mi=await xu({cliPath:r,config:{...t,runner:Mt},context:$,runner:is.runner,persistSteps:ne,aiGateway:te,additionalContext:C,cwd:n,answerFold:Fe,abortSignal:Ne.getMainTurnAbortSignal()});return t.runner=Mt,Z=is.runner,Ye().idleTimeoutEnabled||w.setRunnerCleanup(is.clean),mi}catch(mi){if(La(mi))throw mi;xr.error(`Fallback runner ${Mt} also failed`,{error:String(mi)})}}}throw Re}}).finally(Ne.finishMainTurn),F=U.runnerResult;d=U.nativeResume??!1,f=F.resolvedModel,p=F.effort;let de=async(Re,Mt)=>{let is=await v.currentContext(),{runnerResult:mi}=await Ne.runFixTurn(()=>_(Re,()=>xu({cliPath:r,config:t,context:$,runner:Z,persistSteps:ne,aiGateway:te,buildErrors:Mt,additionalContext:is,priorAgentSessionId:F.agentSessionId,answerFold:Fe})));if(ve)throw Object.assign(ve,{agentSessionId:mi.agentSessionId??F.agentSessionId}),ve;F=rv(F,mi)},oe=F.agentSessionId;if(me&&Ge&&F.aborted&&!ve&&oe&&c){h=!0;let Re=await zIe({runnerResult:F,interruptedSessionId:oe,creditsSpentBeforeWrapUp:$e,cliPath:r,config:t,context:$,runner:Z,aiGateway:te,cwd:n,persistSteps:b,usageTracker:c,withStageTimer:_,answerFold:Fe});F=Re.runnerResult,m=Re.costReport}if(t.mode==="create"&&await jEe(n??process.cwd()),ve)throw Object.assign(ve,{agentSessionId:F.agentSessionId}),ve;if(F.pendingInteraction){await A({outcome:"awaiting-input",pendingInteraction:F.pendingInteraction,nativeSessionId:F.agentSessionId}),u="awaiting_input";return}let bt=await v.generateMigrations();if(bt.error){xr.log("Migration generation failed, running inference to fix the issue"),await de("inference-migration-fix",[`Running \`drizzle-kit generate\` to generate database migrations failed with the following error:
661
661
 
662
662
  ${bt.error}
663
663
 
664
- Please fix the issue and do NOT run \`drizzle-kit generate\` yourself \u2014 it will be run automatically after you're done.`]);let Re=await v.generateMigrations(),Mt=Re.error?"unresolved":Re.skipped?"skipped":"resolved";Re.error?(xr.warn("drizzle-kit generate still failing after the fix turn",{error:Re.error}),S?.setAttributes({"db_migrations.generate_fix_unresolved":!0})):xr.log("drizzle-kit generate recovered after the fix turn",{outcome:Mt}),K.inc("db_migrations.generate_fix",1,{outcome:Mt})}let Cr=await v.hasDatabase(),_t=bt.reason==="no_module"||Cr===!1?{}:await v.verifyMigrations(),Rn=0;for(let Re=1;_t.error&&Re<=NZ;Re++){let Mt=_t.error;Rn=Re,xr.log("Migration drift detected, running inference to fix",{attempt:Re,maxAttempts:NZ}),K.inc("db_migrations.drift_fix_attempt",1,{attempt:String(Re)});let is=Re===1?"inference-migration-drift-fix":`inference-migration-drift-fix-${Re}`;if(await de(is,[Mt]),_t=await v.verifyMigrations(),!_t.error){xr.log("Migration drift resolved by fix turn",{attempt:Re}),K.inc("db_migrations.drift_resolved",1,{attempt:String(Re)}),S?.setAttributes({"db_migrations.drift_resolved":!0});break}if(_t.error===Mt){xr.warn("Migration drift unchanged after fix attempt; not retrying",{attempt:Re}),K.inc("db_migrations.drift_no_progress",1,{attempt:String(Re)}),S?.setAttributes({"db_migrations.drift_no_progress":!0});break}}if(_t.error){let Re=`${Rn} fix attempt${Rn===1?"":"s"}`;if(xr.warn("Migration drift persists after fix attempts",{attempts:Rn,maxAttempts:NZ}),K.inc("db_migrations.drift_unresolved",1),S?.setAttributes({"db_migrations.drift_unresolved":!0}),Ye().migrationDriftBlocksDeployEnabled)throw new Error(`Migration drift persists after ${Re}; refusing to deploy a tree the platform will reject.`)}if(Ye().aiFnV1GuardrailEnabled&&n&&!V)try{let Re=await A0(n);Re.v1>0&&(xr.log(`Detected ${Re.v1} v1 AI function(s), running inference to fix`),await de("inference-ai-fn-v1-fix",[kIe(Re.v1Files)]))}catch(Re){if(La(Re))throw Re;xr.warn("ai_fn_v1_guardrail failed",{err:Re})}let at=await _("deploy",()=>jT({cliPath:r,config:t,result:F.result,filter:i,isRetry:!1,deploySubdomain:ce})),ft=at.hasChanges?at:void 0,we=F;at.deployError&&K.inc("deploy.failed",1,{attempt:1});let rt=[],Ie;if(at.hasChanges&&at.deployError){rt.push(Rse(at.deployError));let Re=1,Mt=!1;for(;Re<=ty&&!at.previewInfo&&!Mt;)xr.log(`Deploy attempt had errors. Retrying. ${Re}/${ty}`),await Dy(pt(),"deploy-stage",async is=>{is?.setAttributes({"stage.attempt":Re});let mi;try{g=h;let ny=await v.currentContext();mi=(await Ne.runFixTurn(()=>_(`inference-retry-${Re}`,()=>xu({cliPath:r,config:t,context:$,runner:Z,persistSteps:ne,aiGateway:te,buildErrors:rt,additionalContext:ny,priorAgentSessionId:F.agentSessionId,answerFold:Fe})))).runnerResult}catch(ny){if(La(ny))throw ny;xr.warn(`Inference retry ${Re} failed, stopping deploy retries:`,ny),Mt=!0;return}if(ve)throw Object.assign(ve,{agentSessionId:mi.agentSessionId??F.agentSessionId}),ve;we=rv(we,mi),await v.generateMigrations(),at=await _(`deploy-retry-${Re}`,()=>jT({cliPath:r,config:t,result:mi.result,filter:i,isRetry:!0,deploySubdomain:ce})),at.hasChanges&&(ft=at),at.deployError&&(K.inc("deploy.failed",1,{attempt:Re+1}),rt.push(at.deployError)),Re++});Re>ty&&!at.previewInfo&&(K.inc("deploy.retries_exhausted",1),t.mode==="create"?(console.warn(`Deploy still failing after ${ty} retries, failing the create run`),Ie=new Error(`Deploy failed after ${ty} retries`)):console.warn(`Deploy still failing after ${ty} retries, completing run without a preview`))}let be=at.previewInfo||at.hasChanges?at:ft??at,{diff:fn,resultDiff:aa,previewInfo:yM,diffBinary:ry,resultDiffBinary:SM,hasNetlifyForm:tp,hasNetlifyIdentity:Nu}=be;be.hasChanges&&R0({previewDeployed:!!be.previewInfo,hadFailedAttempts:rt.length>0}),await c?.stop(),S?.setAttributes(Ise(we,c?.getCreditsCost())),f=we.resolvedModel,p=we.effort??p;let rp=we.agentSessionId??F.agentSessionId;await A({...Ie?{outcome:"deploy-failed",error:Ie}:{outcome:"completed",pipelineSpan:S},artifacts:{diff:fn,result:we.result,duration:we.duration,resultDiff:aa,diffBinary:ry,resultDiffBinary:SM,previewInfo:yM,isProdDeploy:ke,hasNetlifyForm:tp,hasNetlifyIdentity:Nu,nativeSessionId:rp,finalAgentConfig:{agent:t.runner,model:f,effort:p},creditWrapUp:h}});let Yt=await v.hasDatabase();typeof Yt=="boolean"&&S?.setAttributes({"actual.has_db":Yt}),await eae({config:t,hasDb:Yt,pipelineSpan:S,resolvedModel:we.resolvedModel??F.resolvedModel,cliVersion:Ou.version})})}catch(S){if(La(S)){u="gracefulError",xr.info("Agent run terminated gracefully",{statusCode:S.statusCode,reason:S.message}),await c?.stop();let te=S.isCreditLimitExceeded?"credit-limit":"graceful-error";await A({outcome:te,error:S,finalAgentConfig:{agent:t.runner,model:f,effort:p},creditWrapUp:h});return}throw xr.error("Got error while running pipeline",S),await c?.stop(),u=qa()?"interrupted":"error",await A({outcome:u,error:S}),S}finally{v.revokeAskAccess(),m&&FIe(m,c?.getCreditsCost(),g),IIe({isHotFollowUp:o,startedAt:l,outcome:u,nativeResume:d,isAnswerResume:L,creditsCost:c?.getCreditsCost(),model:f,effort:p}),OIe({agentRunnerId:t.id,sessionId:t.sessionId,agent:t.runner,mode:t.mode,outcome:u,finalizationOutcome:y,version:Ou.version,startedAt:l,model:f,effort:p,creditsCost:c?.getCreditsCost(),nativeResume:d,isAnswerResume:L,isHotFollowUp:o})}};import WIe from"crypto";var xn=ie("bin_local"),Gn=(0,ZIe.default)(Rr.argv.slice(2),{string:["cwd","cli-path","filter","prompt","runner","model","netlify-api-token","trace-exporter-url"],boolean:["quiet","help","preview"],alias:{h:"help",q:"quiet"}});Gn.quiet&&(Rr.env.LOG="0",Rr.env.NETLIFY_LOCAL_QUIET="true");var MZ=()=>{console.log(`
664
+ Please fix the issue and do NOT run \`drizzle-kit generate\` yourself \u2014 it will be run automatically after you're done.`]);let Re=await v.generateMigrations(),Mt=Re.error?"unresolved":Re.skipped?"skipped":"resolved";Re.error?(xr.warn("drizzle-kit generate still failing after the fix turn",{error:Re.error}),S?.setAttributes({"db_migrations.generate_fix_unresolved":!0})):xr.log("drizzle-kit generate recovered after the fix turn",{outcome:Mt}),Y.inc("db_migrations.generate_fix",1,{outcome:Mt})}let Cr=await v.hasDatabase(),_t=bt.reason==="no_module"||Cr===!1?{}:await v.verifyMigrations(),Rn=0;for(let Re=1;_t.error&&Re<=NZ;Re++){let Mt=_t.error;Rn=Re,xr.log("Migration drift detected, running inference to fix",{attempt:Re,maxAttempts:NZ}),Y.inc("db_migrations.drift_fix_attempt",1,{attempt:String(Re)});let is=Re===1?"inference-migration-drift-fix":`inference-migration-drift-fix-${Re}`;if(await de(is,[Mt]),_t=await v.verifyMigrations(),!_t.error){xr.log("Migration drift resolved by fix turn",{attempt:Re}),Y.inc("db_migrations.drift_resolved",1,{attempt:String(Re)}),S?.setAttributes({"db_migrations.drift_resolved":!0});break}if(_t.error===Mt){xr.warn("Migration drift unchanged after fix attempt; not retrying",{attempt:Re}),Y.inc("db_migrations.drift_no_progress",1,{attempt:String(Re)}),S?.setAttributes({"db_migrations.drift_no_progress":!0});break}}if(_t.error){let Re=`${Rn} fix attempt${Rn===1?"":"s"}`;if(xr.warn("Migration drift persists after fix attempts",{attempts:Rn,maxAttempts:NZ}),Y.inc("db_migrations.drift_unresolved",1),S?.setAttributes({"db_migrations.drift_unresolved":!0}),Ye().migrationDriftBlocksDeployEnabled)throw new Error(`Migration drift persists after ${Re}; refusing to deploy a tree the platform will reject.`)}if(Ye().aiFnV1GuardrailEnabled&&n&&!V)try{let Re=await A0(n);Re.v1>0&&(xr.log(`Detected ${Re.v1} v1 AI function(s), running inference to fix`),await de("inference-ai-fn-v1-fix",[kIe(Re.v1Files)]))}catch(Re){if(La(Re))throw Re;xr.warn("ai_fn_v1_guardrail failed",{err:Re})}let at=await _("deploy",()=>jT({cliPath:r,config:t,result:F.result,filter:i,isRetry:!1,deploySubdomain:ce})),ft=at.hasChanges?at:void 0,we=F;at.deployError&&Y.inc("deploy.failed",1,{attempt:1});let rt=[],Ie;if(at.hasChanges&&at.deployError){rt.push(Rse(at.deployError));let Re=1,Mt=!1;for(;Re<=ty&&!at.previewInfo&&!Mt;)xr.log(`Deploy attempt had errors. Retrying. ${Re}/${ty}`),await Dy(pt(),"deploy-stage",async is=>{is?.setAttributes({"stage.attempt":Re});let mi;try{g=h;let ny=await v.currentContext();mi=(await Ne.runFixTurn(()=>_(`inference-retry-${Re}`,()=>xu({cliPath:r,config:t,context:$,runner:Z,persistSteps:ne,aiGateway:te,buildErrors:rt,additionalContext:ny,priorAgentSessionId:F.agentSessionId,answerFold:Fe})))).runnerResult}catch(ny){if(La(ny))throw ny;xr.warn(`Inference retry ${Re} failed, stopping deploy retries:`,ny),Mt=!0;return}if(ve)throw Object.assign(ve,{agentSessionId:mi.agentSessionId??F.agentSessionId}),ve;we=rv(we,mi),await v.generateMigrations(),at=await _(`deploy-retry-${Re}`,()=>jT({cliPath:r,config:t,result:mi.result,filter:i,isRetry:!0,deploySubdomain:ce})),at.hasChanges&&(ft=at),at.deployError&&(Y.inc("deploy.failed",1,{attempt:Re+1}),rt.push(at.deployError)),Re++});Re>ty&&!at.previewInfo&&(Y.inc("deploy.retries_exhausted",1),t.mode==="create"?(console.warn(`Deploy still failing after ${ty} retries, failing the create run`),Ie=new Error(`Deploy failed after ${ty} retries`)):console.warn(`Deploy still failing after ${ty} retries, completing run without a preview`))}let be=at.previewInfo||at.hasChanges?at:ft??at,{diff:fn,resultDiff:aa,previewInfo:yM,diffBinary:ry,resultDiffBinary:SM,hasNetlifyForm:tp,hasNetlifyIdentity:Nu}=be;be.hasChanges&&R0({previewDeployed:!!be.previewInfo,hadFailedAttempts:rt.length>0}),await c?.stop(),S?.setAttributes(Ise(we,c?.getCreditsCost())),f=we.resolvedModel,p=we.effort??p;let rp=we.agentSessionId??F.agentSessionId;await A({...Ie?{outcome:"deploy-failed",error:Ie}:{outcome:"completed",pipelineSpan:S},artifacts:{diff:fn,result:we.result,duration:we.duration,resultDiff:aa,diffBinary:ry,resultDiffBinary:SM,previewInfo:yM,isProdDeploy:ke,hasNetlifyForm:tp,hasNetlifyIdentity:Nu,nativeSessionId:rp,finalAgentConfig:{agent:t.runner,model:f,effort:p},creditWrapUp:h}});let Yt=await v.hasDatabase();typeof Yt=="boolean"&&S?.setAttributes({"actual.has_db":Yt}),await eae({config:t,hasDb:Yt,pipelineSpan:S,resolvedModel:we.resolvedModel??F.resolvedModel,cliVersion:Ou.version})})}catch(S){if(La(S)){u="gracefulError",xr.info("Agent run terminated gracefully",{statusCode:S.statusCode,reason:S.message}),await c?.stop();let te=S.isCreditLimitExceeded?"credit-limit":"graceful-error";await A({outcome:te,error:S,finalAgentConfig:{agent:t.runner,model:f,effort:p},creditWrapUp:h});return}throw xr.error("Got error while running pipeline",S),await c?.stop(),u=qa()?"interrupted":"error",await A({outcome:u,error:S}),S}finally{v.revokeAskAccess(),m&&FIe(m,c?.getCreditsCost(),g),IIe({isHotFollowUp:o,startedAt:l,outcome:u,nativeResume:d,isAnswerResume:L,creditsCost:c?.getCreditsCost(),model:f,effort:p}),OIe({agentRunnerId:t.id,sessionId:t.sessionId,agent:t.runner,mode:t.mode,outcome:u,finalizationOutcome:y,version:Ou.version,startedAt:l,model:f,effort:p,creditsCost:c?.getCreditsCost(),nativeResume:d,isAnswerResume:L,isHotFollowUp:o})}};import WIe from"crypto";var xn=ie("bin_local"),Gn=(0,ZIe.default)(Rr.argv.slice(2),{string:["cwd","cli-path","filter","prompt","runner","model","netlify-api-token","trace-exporter-url"],boolean:["quiet","help","preview"],alias:{h:"help",q:"quiet"}});Gn.quiet&&(Rr.env.LOG="0",Rr.env.NETLIFY_LOCAL_QUIET="true");var MZ=()=>{console.log(`
665
665
  agent-runner-cli-local - Run Netlify agent runner locally without API connections
666
666
 
667
667
  USAGE: