@netlify/agent-runner-cli 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/bin.js
CHANGED
|
@@ -107,7 +107,7 @@ ${n.trim()}
|
|
|
107
107
|
`))return;let f=I.toString().split(`
|
|
108
108
|
`).filter(Boolean).map(d=>{try{if(d.startsWith("[API Error")){let c=d.match(/\[api error: (.+?)]$/i)?.[1];return{type:"error",value:Q(c,!1)?.error?.message||c||"Gemini encountered error"}}return JSON.parse(d)}catch{}return null}).filter(Boolean);I="",f.forEach(d=>{switch(d.type){case"thought":{let c=d.value;y({title:c?.subject??"Thinking...",message:c?.description},!0);break}case"content":{d.value&&y({message:d.value});break}case"tool_call_request":{let c=d.value,N=Tt[c.name]??c.name,v=c.args?.path||c.args?.absolute_path,Y=v&&te.relative(B.cwd(),v),k=c.args?.command,A={title:[N,Y&&`\`${Y}\``,k&&`\`${k}\``].filter(Boolean).join(" ")};h[c.callId]=A,g.flush();break}case"tool_result":{let c=d.value,N=h[c.callId];if(N){let v=[c.resultDisplay,c.responseParts?.functionResponse?.response?.output].find(Y=>typeof Y=="string"&&Y);v&&(N.message=`\`\`\`
|
|
109
109
|
${v.trim()}
|
|
110
|
-
\`\`\``),y(N,!0)}break}case"result":{_=d.duration_ms,E=d.value,[l,u,p].forEach(c=>{c[c.length-1]?.message===E&&c.pop()});break}case"error":{x=d.value;break}case"finished":break;default:{console.warn("Unhandled message type:",d.type);break}}})}),await S.catch(m=>{({error:x,result:E}=_t({catchError:m,runCmd:S,error:x,result:E,runnerName:"Gemini"}))}),g.flush(),{steps:l,duration:_,result:E,error:x}}var Pe=async()=>{let e=te.join(ht.homedir(),".gemini");await gt.rm(e,{recursive:!0,force:!0})},Et={[U]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:65536}}},[$]:{default:"gemini-2.5-pro",models:{"gemini-1.5-flash":{maxTokens:8192},"gemini-1.5-flash-8b":{maxTokens:8192},"gemini-1.5-pro":{maxTokens:8192},"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:65536},"gemini-2.5-flash-lite":{maxTokens:65536},"gemini-2.5-pro":{maxTokens:65536},"imagen-4.0-generate-001":{},"veo-3.0-generate-preview":{}}},pro:{default:"gemini-2.0-flash-lite",models:{"gemini-1.5-flash-8b":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192}}},[D]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}},[L]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}},[O]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}}};var xt={codex:{runner:le,clean:Re},claude:{runner:ie,clean:Ce},gemini:{runner:ue,clean:Pe}},ve=xt;var ke=async({config:e,apiThrottle:t,apiToken:r})=>{let o=ve[e.runner];if(!o)throw new Error(`${e.runner} is not supported`);let n=yt({apiToken:r});he(n),console.log(`Starting agent runner ${e.runner}`,{id:e.id,sessionId:e.sessionId,prompt:e.prompt,hasRepo:e.hasRepo});let s=e.useGateway?await Ee({netlify:n}):void 0;e.validateAgent&&e.errorLogsPath&&console.log("Validation will use error logs file",{path:e.errorLogsPath});let a=Ie(({steps:u=[],duration:p})=>{let l=[...u];return u.length=0,z(e.id,e.sessionId,{steps:l,duration:p})},t),i;return e.hasRepo?e.sha?i=e.sha:(console.log("No sha in runner, marking the latest as the one"),i=await Se(n),await W(e.id,{sha:i})):(console.log("Zip project"),i=await we(n)),console.log("Resolved sha to",i),{aiGateway:s,context:n,persistSteps:a,runner:o,sha:i}},yt=({apiToken:e})=>({constants:{NETLIFY_API_HOST:oe.env.NETLIFY_API_HOST||"api.netlify.com",NETLIFY_API_TOKEN:e||oe.env.NETLIFY_API_TOKEN,SITE_ID:oe.env.SITE_ID,FUNCTIONS_DIST:oe.env.FUNCTIONS_DIST||"netlify/functions"},utils:{run:ye}});var Oe=async({cliPath:e,config:t,context:r,runner:o,persistSteps:n,aiGateway:s})=>{let{prompt:a}=await X({cliPath:e,config:t,netlify:r}),i={...t,prompt:a},u=await o({aiGateway:s,config:i,netlify:r,persistSteps:n});if(u.error)throw console.error("Runner failed",{stepsCount:u.steps.length,duration:u.duration,error:u.error}),new Error(u.error);return{runnerResult:u}};var be=async(e,t,r)=>{try{console.log("Running netlify build...");let o=["build","--context","deploy-preview"];r&&o.push("--filter",r);let n=await t.utils.run(e,o);return console.log("Build completed successfully"),{success:!0,stdout:n?.stdout||"",stderr:n?.stderr||""}}catch(o){return console.log("Build failed:",o.message),{success:!1,stdout:o.stdout||"",stderr:o.stderr||"",error:o.message}}},It=e=>{if(e.success)return"";let t=[];return e.error&&t.push(`Build Error: ${e.error}`),e.stderr&&t.push(`Build stderr:
|
|
110
|
+
\`\`\``),y(N,!0)}break}case"result":{_=d.duration_ms,E=d.value,[l,u,p].forEach(c=>{c[c.length-1]?.message===E&&c.pop()});break}case"error":{x=d.value;break}case"finished":break;default:{console.warn("Unhandled message type:",d.type);break}}})}),await S.catch(m=>{({error:x,result:E}=_t({catchError:m,runCmd:S,error:x,result:E,runnerName:"Gemini"}))}),g.flush(),{steps:l,duration:_,result:E,error:x}}var Pe=async()=>{let e=te.join(ht.homedir(),".gemini");await gt.rm(e,{recursive:!0,force:!0})},Et={[U]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:65536}}},[$]:{default:"gemini-2.5-pro",models:{"gemini-1.5-flash":{maxTokens:8192},"gemini-1.5-flash-8b":{maxTokens:8192},"gemini-1.5-pro":{maxTokens:8192},"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:65536},"gemini-2.5-flash-lite":{maxTokens:65536},"gemini-2.5-pro":{maxTokens:65536},"imagen-4.0-generate-001":{},"veo-3.0-generate-preview":{}}},pro:{default:"gemini-2.0-flash-lite",models:{"gemini-1.5-flash-8b":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192}}},[D]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}},[L]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}},[O]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}}};var xt={codex:{runner:le,clean:Re},claude:{runner:ie,clean:Ce},gemini:{runner:ue,clean:Pe}},ve=xt;var ke=async({config:e,apiThrottle:t,apiToken:r})=>{let o=ve[e.runner];if(!o)throw new Error(`${e.runner} is not supported`);let n=yt({apiToken:r});he(n),console.log(`Starting agent runner ${e.runner}`,{id:e.id,sessionId:e.sessionId,prompt:e.prompt,hasRepo:e.hasRepo});let s=e.useGateway?await Ee({netlify:n}):void 0;e.validateAgent&&e.errorLogsPath&&console.log("Validation will use error logs file",{path:e.errorLogsPath});let a=Ie(({steps:u=[],duration:p})=>{let l=[...u];return u.length=0,z(e.id,e.sessionId,{steps:l,duration:p})},t),i;return e.hasRepo?e.sha?i=e.sha:(console.log("No sha in runner, marking the latest as the one"),i=await Se(n),await W(e.id,{sha:i})):(console.log("Zip project"),i=await we(n)),console.log("Resolved sha to",i),{aiGateway:s,context:n,persistSteps:a,runner:o,sha:i,stopDev:()=>{}}},yt=({apiToken:e})=>({constants:{NETLIFY_API_HOST:oe.env.NETLIFY_API_HOST||"api.netlify.com",NETLIFY_API_TOKEN:e||oe.env.NETLIFY_API_TOKEN,SITE_ID:oe.env.SITE_ID,FUNCTIONS_DIST:oe.env.FUNCTIONS_DIST||"netlify/functions"},utils:{run:ye}});var Oe=async({cliPath:e,config:t,context:r,runner:o,persistSteps:n,aiGateway:s})=>{let{prompt:a}=await X({cliPath:e,config:t,netlify:r}),i={...t,prompt:a},u=await o({aiGateway:s,config:i,netlify:r,persistSteps:n});if(u.error)throw console.error("Runner failed",{stepsCount:u.steps.length,duration:u.duration,error:u.error}),new Error(u.error);return{runnerResult:u}};var be=async(e,t,r)=>{try{console.log("Running netlify build...");let o=["build","--context","deploy-preview"];r&&o.push("--filter",r);let n=await t.utils.run(e,o);return console.log("Build completed successfully"),{success:!0,stdout:n?.stdout||"",stderr:n?.stderr||""}}catch(o){return console.log("Build failed:",o.message),{success:!1,stdout:o.stdout||"",stderr:o.stderr||"",error:o.message}}},It=e=>{if(e.success)return"";let t=[];return e.error&&t.push(`Build Error: ${e.error}`),e.stderr&&t.push(`Build stderr:
|
|
111
111
|
${e.stderr}`),e.stdout&&t.push(`Build stdout:
|
|
112
112
|
${e.stdout}`),t.join(`
|
|
113
113
|
|
package/dist/index.js
CHANGED
|
@@ -106,7 +106,7 @@ ${n.trim()}
|
|
|
106
106
|
`))return;let f=E.toString().split(`
|
|
107
107
|
`).filter(Boolean).map(d=>{try{if(d.startsWith("[API Error")){let c=d.match(/\[api error: (.+?)]$/i)?.[1];return{type:"error",value:ye(c,!1)?.error?.message||c||"Gemini encountered error"}}return JSON.parse(d)}catch{}return null}).filter(Boolean);E="",f.forEach(d=>{switch(d.type){case"thought":{let c=d.value;y({title:c?.subject??"Thinking...",message:c?.description},!0);break}case"content":{d.value&&y({message:d.value});break}case"tool_call_request":{let c=d.value,I=ft[c.name]??c.name,P=c.args?.path||c.args?.absolute_path,$=P&&Z.relative(b.cwd(),P),v=c.args?.command,w={title:[I,$&&`\`${$}\``,v&&`\`${v}\``].filter(Boolean).join(" ")};h[c.callId]=w,g.flush();break}case"tool_result":{let c=d.value,I=h[c.callId];if(I){let P=[c.resultDisplay,c.responseParts?.functionResponse?.response?.output].find($=>typeof $=="string"&&$);P&&(I.message=`\`\`\`
|
|
108
108
|
${P.trim()}
|
|
109
|
-
\`\`\``),y(I,!0)}break}case"result":{_=d.duration_ms,T=d.value,[l,u,p].forEach(c=>{c[c.length-1]?.message===T&&c.pop()});break}case"error":{S=d.value;break}case"finished":break;default:{console.warn("Unhandled message type:",d.type);break}}})}),await A.catch(m=>{({error:S,result:T}=pt({catchError:m,runCmd:A,error:S,result:T,runnerName:"Gemini"}))}),g.flush(),{steps:l,duration:_,result:T,error:S}}var Ne=async()=>{let e=Z.join(dt.homedir(),".gemini");await ct.rm(e,{recursive:!0,force:!0})},mt={[F]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:65536}}},[j]:{default:"gemini-2.5-pro",models:{"gemini-1.5-flash":{maxTokens:8192},"gemini-1.5-flash-8b":{maxTokens:8192},"gemini-1.5-pro":{maxTokens:8192},"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:65536},"gemini-2.5-flash-lite":{maxTokens:65536},"gemini-2.5-pro":{maxTokens:65536},"imagen-4.0-generate-001":{},"veo-3.0-generate-preview":{}}},pro:{default:"gemini-2.0-flash-lite",models:{"gemini-1.5-flash-8b":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192}}},[M]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}},[U]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}},[L]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}}};var gt={codex:{runner:se,clean:Ce},claude:{runner:ne,clean:Ae},gemini:{runner:ie,clean:Ne}},ke=gt;var Pe=async({config:e,apiThrottle:t,apiToken:r})=>{let o=ke[e.runner];if(!o)throw new Error(`${e.runner} is not supported`);let n=ht({apiToken:r});fe(n),console.log(`Starting agent runner ${e.runner}`,{id:e.id,sessionId:e.sessionId,prompt:e.prompt,hasRepo:e.hasRepo});let s=e.useGateway?await he({netlify:n}):void 0;e.validateAgent&&e.errorLogsPath&&console.log("Validation will use error logs file",{path:e.errorLogsPath});let a=Te(({steps:u=[],duration:p})=>{let l=[...u];return u.length=0,J(e.id,e.sessionId,{steps:l,duration:p})},t),i;return e.hasRepo?e.sha?i=e.sha:(console.log("No sha in runner, marking the latest as the one"),i=await we(n),await X(e.id,{sha:i})):(console.log("Zip project"),i=await Se(n)),console.log("Resolved sha to",i),{aiGateway:s,context:n,persistSteps:a,runner:o,sha:i}},ht=({apiToken:e})=>({constants:{NETLIFY_API_HOST:Q.env.NETLIFY_API_HOST||"api.netlify.com",NETLIFY_API_TOKEN:e||Q.env.NETLIFY_API_TOKEN,SITE_ID:Q.env.SITE_ID,FUNCTIONS_DIST:Q.env.FUNCTIONS_DIST||"netlify/functions"},utils:{run:xe}});var ve=async({cliPath:e,config:t,context:r,runner:o,persistSteps:n,aiGateway:s})=>{let{prompt:a}=await q({cliPath:e,config:t,netlify:r}),i={...t,prompt:a},u=await o({aiGateway:s,config:i,netlify:r,persistSteps:n});if(u.error)throw console.error("Runner failed",{stepsCount:u.steps.length,duration:u.duration,error:u.error}),new Error(u.error);return{runnerResult:u}};var Re=async(e,t,r)=>{try{console.log("Running netlify build...");let o=["build","--context","deploy-preview"];r&&o.push("--filter",r);let n=await t.utils.run(e,o);return console.log("Build completed successfully"),{success:!0,stdout:n?.stdout||"",stderr:n?.stderr||""}}catch(o){return console.log("Build failed:",o.message),{success:!1,stdout:o.stdout||"",stderr:o.stderr||"",error:o.message}}},_t=e=>{if(e.success)return"";let t=[];return e.error&&t.push(`Build Error: ${e.error}`),e.stderr&&t.push(`Build stderr:
|
|
109
|
+
\`\`\``),y(I,!0)}break}case"result":{_=d.duration_ms,T=d.value,[l,u,p].forEach(c=>{c[c.length-1]?.message===T&&c.pop()});break}case"error":{S=d.value;break}case"finished":break;default:{console.warn("Unhandled message type:",d.type);break}}})}),await A.catch(m=>{({error:S,result:T}=pt({catchError:m,runCmd:A,error:S,result:T,runnerName:"Gemini"}))}),g.flush(),{steps:l,duration:_,result:T,error:S}}var Ne=async()=>{let e=Z.join(dt.homedir(),".gemini");await ct.rm(e,{recursive:!0,force:!0})},mt={[F]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:65536}}},[j]:{default:"gemini-2.5-pro",models:{"gemini-1.5-flash":{maxTokens:8192},"gemini-1.5-flash-8b":{maxTokens:8192},"gemini-1.5-pro":{maxTokens:8192},"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:65536},"gemini-2.5-flash-lite":{maxTokens:65536},"gemini-2.5-pro":{maxTokens:65536},"imagen-4.0-generate-001":{},"veo-3.0-generate-preview":{}}},pro:{default:"gemini-2.0-flash-lite",models:{"gemini-1.5-flash-8b":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192}}},[M]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}},[U]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}},[L]:{default:"gemini-2.5-flash",models:{"gemini-2.0-flash":{maxTokens:8192},"gemini-2.0-flash-lite":{maxTokens:8192},"gemini-2.5-flash":{maxTokens:16e3}}}};var gt={codex:{runner:se,clean:Ce},claude:{runner:ne,clean:Ae},gemini:{runner:ie,clean:Ne}},ke=gt;var Pe=async({config:e,apiThrottle:t,apiToken:r})=>{let o=ke[e.runner];if(!o)throw new Error(`${e.runner} is not supported`);let n=ht({apiToken:r});fe(n),console.log(`Starting agent runner ${e.runner}`,{id:e.id,sessionId:e.sessionId,prompt:e.prompt,hasRepo:e.hasRepo});let s=e.useGateway?await he({netlify:n}):void 0;e.validateAgent&&e.errorLogsPath&&console.log("Validation will use error logs file",{path:e.errorLogsPath});let a=Te(({steps:u=[],duration:p})=>{let l=[...u];return u.length=0,J(e.id,e.sessionId,{steps:l,duration:p})},t),i;return e.hasRepo?e.sha?i=e.sha:(console.log("No sha in runner, marking the latest as the one"),i=await we(n),await X(e.id,{sha:i})):(console.log("Zip project"),i=await Se(n)),console.log("Resolved sha to",i),{aiGateway:s,context:n,persistSteps:a,runner:o,sha:i,stopDev:()=>{}}},ht=({apiToken:e})=>({constants:{NETLIFY_API_HOST:Q.env.NETLIFY_API_HOST||"api.netlify.com",NETLIFY_API_TOKEN:e||Q.env.NETLIFY_API_TOKEN,SITE_ID:Q.env.SITE_ID,FUNCTIONS_DIST:Q.env.FUNCTIONS_DIST||"netlify/functions"},utils:{run:xe}});var ve=async({cliPath:e,config:t,context:r,runner:o,persistSteps:n,aiGateway:s})=>{let{prompt:a}=await q({cliPath:e,config:t,netlify:r}),i={...t,prompt:a},u=await o({aiGateway:s,config:i,netlify:r,persistSteps:n});if(u.error)throw console.error("Runner failed",{stepsCount:u.steps.length,duration:u.duration,error:u.error}),new Error(u.error);return{runnerResult:u}};var Re=async(e,t,r)=>{try{console.log("Running netlify build...");let o=["build","--context","deploy-preview"];r&&o.push("--filter",r);let n=await t.utils.run(e,o);return console.log("Build completed successfully"),{success:!0,stdout:n?.stdout||"",stderr:n?.stderr||""}}catch(o){return console.log("Build failed:",o.message),{success:!1,stdout:o.stdout||"",stderr:o.stderr||"",error:o.message}}},_t=e=>{if(e.success)return"";let t=[];return e.error&&t.push(`Build Error: ${e.error}`),e.stderr&&t.push(`Build stderr:
|
|
110
110
|
${e.stderr}`),e.stdout&&t.push(`Build stdout:
|
|
111
111
|
${e.stdout}`),t.join(`
|
|
112
112
|
|