UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 3.15 kB
import{serializeHeadlessSetupEvent}from"./setup-headless.js";import{join}from"node:path";import{createPrompter}from"#setup/prompter.js";import{WizardCancelledError}from"#setup/step.js";import{cleanupCreatedConnectionConnector,setupConnectionConnector}from"#setup/connection-connector.js";import{ensureVercelProject}from"#setup/flows/ensure-vercel-project.js";import{createHeadlessPrompter}from"#setup/headless.js";import{SetupPrerequisiteRequired}from"#setup/integrations/shared/prerequisite.js";import{resolveIntegrationVercelProject}from"#setup/integrations/shared/vercel-project.js";import{readProjectLink}from"#setup/project-resolution.js";import{createRegistrySetupClient}from"#setup/registry-setup-client.js";import{updateConnectionConnectorUid}from"#setup/scaffold/update/update-connection-connector.js";const defaultDependencies={ensureVercelProject,readProjectLink,setupConnectionConnector,cleanupCreatedConnectionConnector,updateConnectionConnectorUid};async function runIntegrationConnect(e){let t={...defaultDependencies,...e.dependencies},n=e.options?.nonInteractive===!0,r=t.createPrompter?.()??(n?createHeadlessPrompter(()=>{}):createPrompter()),i=e.options?.signal;r.intro(`Set up ${e.slug}`);let a=await t.readProjectLink(e.appRoot);if(a===void 0){if(n)a=await resolveIntegrationVercelProject({appRoot:e.appRoot,integration:e.slug,signal:i,deps:{readProjectLink:t.readProjectLink}});else try{a=await t.ensureVercelProject({appRoot:e.appRoot,prompter:r,signal:i,teamSelectMessage:()=>`You need to link to a project to use ${e.slug} through Vercel Connect.\n\nSelect your team`,deps:t.ensureVercelProjectDeps})}catch(e){if(e instanceof WizardCancelledError)return;throw e}}let o={log:r.log,prompter:r,projectRoot:e.appRoot,slug:e.slug,service:e.service,creationType:e.options?.creationType,connectionMethod:e.options?.connectionMethod,principalType:e.options?.principalType,canonicalConnectorName:e.canonicalConnectorName??e.slug,project:a,signal:i},s=await t.setupConnectionConnector(o),c=join(e.appRoot,`agent`,`connections`,`${e.slug}.ts`);if(!(await t.updateConnectionConnectorUid(c,s.connectorUid)).patched)throw s.kind===`created`&&await t.cleanupCreatedConnectionConnector({log:r.log,projectRoot:e.appRoot,connectorId:s.connectorId,orgId:a.orgId}),Error(`Could not update the connector in agent/connections/${e.slug}.ts.`);r.outro(`Connection ${e.slug} set up.`)}async function runIntegrationConnectCommand(e,t,n,r,i,a={},o=defaultDependencies){let s=createRegistrySetupClient({signal:a.signal});try{await runIntegrationConnect({appRoot:t,slug:n,service:r,canonicalConnectorName:i,options:a,dependencies:{...o,createPrompter:()=>s?.prompter??(a.nonInteractive?createHeadlessPrompter(()=>{}):o.createPrompter?.()??createPrompter())}}),s?.complete()}catch(t){if(s?.fail(t),s!==void 0)return;if(a.nonInteractive&&t instanceof SetupPrerequisiteRequired){e.error(serializeHeadlessSetupEvent({version:1,type:`blocked`,status:`prerequisite_required`,prerequisite:t.prerequisite})),process.exitCode=2;return}e.error(t instanceof Error?t.message:String(t)),process.exitCode=1}}export{runIntegrationConnect,runIntegrationConnectCommand};