import type { CommandSpec } from "../internals/plan.js"; /** * One repo-scoped capability folded into `aih init`, paired with the human-facing * headline printed before its actions. `init` does not re-implement any of these — * it calls each `command.plan(ctx)` and concatenates the result, so the bootstrap * stays in lock-step with the leaf capabilities. */ export interface InitPhase { /** The leaf capability whose `plan(ctx)` supplies this phase's actions. */ readonly command: CommandSpec; /** Short doc header emitted immediately before the phase's actions. */ readonly headline: string; } /** * The fixed bootstrap order: profile → superpowers → bootstrap-ai → scaffold → * secrets → guardrails → mcp → contract → sandbox → usage. Profiling detects the stack * (Cursor rules); Superpowers installs the default ECC-adjacent agent baseline for the * selected CLIs; bootstrap-ai lays the Layer-2 canon (the SOLE writer of root bootloaders + * RULE_ROUTER); scaffolding lays the context dir the router points at; secrets + * guardrails fence the repo before MCP wiring lands on top; contract runs AFTER mcp so * first-run synthesis sees the planned `.mcp.json` surface (init threads it via * `ctx.plannedMcpServers` — disk alone would say "none" until a second run); the sandbox * and usage recorder land last. Each * file has exactly one writer, so the composed plan dedupes to one write per path. * * ECC is deliberately NOT a phase: `aih ecc` runs ECC's own network installer * (`npx ecc-install` / a git checkout), so it stays a separate gated step rather * than something `aih init --apply` runs silently. `initPlan` points at it. */ export declare const INIT_PHASES: readonly InitPhase[];