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[];