eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.31 kB
JavaScript
import{detectProjectResolution,mergeProjectResolution}from"../project-resolution.js";import{requireProjectPath}from"../state.js";import{linkProject,unresolvedProject}from"../vercel-project.js";import{createPromptCommandOutput}from"#setup/cli/index.js";function linkVercelProject(e){let t=e.deps??{linkProject,detectProjectResolution,unresolvedProject};return{id:`link-project`,shouldRun(e){return e.vercelProject.kind!==`none`},async gather(){return null},async perform({state:n,signal:r}){let i=n.vercelProject;if(i.kind===`none`)return t.unresolvedProject();let a=requireProjectPath(n),o=createPromptCommandOutput(e.prompter.log),s=await t.linkProject(e.prompter,a,i,o,e.headless?{signal:r,headless:!0}:{signal:r});if(r?.throwIfAborted(),!s)throw Error("Vercel project provisioning did not complete. Run `vercel link` manually, or re-run and choose not to deploy to Vercel.");let c=await t.detectProjectResolution(a,{signal:r});if(c.kind===`unresolved`)throw Error(`Linked the directory, but could not resolve the Vercel project from its link metadata.`);if(c.projectId!==s.projectId)throw Error(`The linked project does not match the selected project: expected ${s.projectId}, found ${c.projectId}.`);return c},apply(e,t){return{...e,project:mergeProjectResolution(e.project,t)}}}}export{linkVercelProject};