UNPKG

eve

Version:

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

1 lines 1.92 kB
import{headlessSetupContinuation,serializeHeadlessSetupEvent}from"./setup-headless.js";import{createPrompter}from"#setup/prompter.js";import{createHeadlessPrompter}from"#setup/headless.js";import{mergeRegistrySetupCompletions}from"#setup/registry-setup-completion.js";async function runDeclaredSetups(e){let t={facts:[]};if(e.setups===void 0)return t;let n=await e.dependencies.loadSetupCommandRunner(),r=e.options.prompter??(e.options.nonInteractive?createHeadlessPrompter(e.logger.log):createPrompter());try{for(let i of e.setups){let a=await n(e.appRoot,{...i,args:[...i.args,...e.options.yes?[`--yes`]:[],...e.options.force&&i.package===`eve`&&i.bin===`eve`&&i.args[0]===`integration`&&i.args[1]===`setup`?[`--force`]:[],...e.options.nonInteractive?[`--non-interactive`]:[],...Object.entries(e.options.answers??{}).flatMap(([e,t])=>[`--answer`,`${e}=${JSON.stringify(t)}`])]},e.item,{prompter:r,signal:e.options.signal});if(a.kind===`cancelled`)return e.logger.log(e.cancelledReminder),!1;if(a.kind===`blocked`){if(!e.options.nonInteractive)throw Error(`Setup requires more input.`);return e.logger.error(serializeHeadlessSetupEvent({version:1,type:`blocked`,item:e.item,installed:!0,completedItems:[],...a.blocker,next:headlessSetupContinuation({item:e.item,installed:!0,answers:e.options.answers,question:a.blocker.status===`input_required`?a.blocker.question:void 0})})),process.exitCode=2,!1}if(e.options.silent!==!0)for(let t of a.facts)e.logger.log(`${t.label}: ${t.value}`);t=mergeRegistrySetupCompletions(t,a)}return t}catch(t){let n=t instanceof Error?t.message:String(t);if(e.options.nonInteractive)return e.logger.error(serializeHeadlessSetupEvent({version:1,type:`failed`,item:e.item,completedItems:[],message:n,next:headlessSetupContinuation({item:e.item,installed:!0,answers:e.options.answers})})),process.exitCode=1,!1;throw Error(`${n} Try again with \`${e.resumeCommand}\`.`)}}export{runDeclaredSetups};