eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
61 lines (60 loc) • 2.97 kB
TypeScript
import type { Prompter } from "./prompter.js";
import type { AnySetupBox } from "./runner.js";
import type { EvePackageContract } from "./scaffold/index.js";
import type { ArgsHeadlessAiGateway, ArgsHeadlessProject, ChannelKind, ChatPreference, SetupMode, SetupState } from "./state.js";
/**
* Options for {@link composeOnboardingBoxes}. These carry exactly what the
* create flow's options carried: the preset answers that let each box resolve
* without prompting, plus the directory and headless dispatch decisions.
*/
export interface OnboardingBoxesOptions {
prompter: Prompter;
/** Skip the name prompt and use this value. */
presetName?: string;
/** Skip the setup-mode prompt and use this value. */
presetMode?: SetupMode;
/** Skip the model prompt and use this value. */
presetModel?: string;
/** Skip the channels prompt and use these kinds. */
presetChannels?: ChannelKind[];
/** Skip the connections picker and scaffold these catalog slugs. */
presetConnections?: string[];
/** Skip the "Create slackbot?" prompt inside the add-to-agent step. */
presetCreateSlackbot?: boolean;
/** Headless-only Vercel provisioning flags. Ignored on the interactive path. */
provisioning?: {
project: ArgsHeadlessProject;
aiGateway: ArgsHeadlessAiGateway;
};
/** Skip the chat-preference prompt and use this value. */
presetChatPreference?: ChatPreference;
/** Parent directory the project folder is created inside. Defaults to cwd. */
targetDirectory?: string;
/** Scaffold into cwd or targetDirectory instead of creating a child directory. */
inPlace?: boolean;
/** Allow the in-place scaffold to replace eve scaffold files that already exist. */
overwriteExisting?: boolean;
/** Skip the post-channel Vercel deployment entirely. */
presetNoDeploy?: boolean;
/**
* Headless mode: never prompt or spawn an interactive Vercel command. Boxes
* needing a human/browser action throw `HumanActionRequiredError`. Slack
* setup remains an interactive/onboarding handoff, not a headless flow.
*/
headless?: boolean;
/** eve package metadata baked into the scaffolded `package.json`. */
evePackage?: EvePackageContract;
}
/**
* Composes the full programmatic onboarding flow.
*
* 1. The interview phase: name, then the agent itself (model, channels,
* connections), then where it runs (the provisioning plans).
* 2. Input preflight before filesystem writes.
* 3. The scaffold box writes or reuses the agent template.
* 4. Project and gateway facts are detected and executed from the plans.
* 5. Channel setup writes Web/Slack surfaces and returns setup facts.
* 6. Deploy runs once when Slack was added (the connector needs a public URL).
* 7. Chat preference is picked from the final channel state.
*/
export declare function composeOnboardingBoxes(options: OnboardingBoxesOptions): AnySetupBox<SetupState>[];