import { type Registry } from "@cotal-ai/core"; /** Options a composition root passes to {@link runCli}. */ export interface RunCliOptions { /** Load operator-installed extensions (`cotal ext add …`) into the surface: help/completion see * manifest-cached stubs (no import), dispatch imports the owning package lazily with LIVE * specs. OFF by default — library composition roots keep the explicit-import model; only the * published binary opts in. */ extensions?: boolean; } /** * Dispatch `argv` against the commands self-registered in a {@link Registry}. The single entry point * a composition root calls — no hardcoded command list. * * It runs in two phases. The front end reads only local metadata: it resolves the command by exact * name or alias (never a prefix), answers help and version, and parses a built-in command's flags * against its declared specs. Only an invocation that passed it reaches the effects: the connector * seed, provider materialization, target preparation and `run`. So a usage error seeds, writes and * launches nothing. An extension command's flags are parsed after the seed, because its live specs * come from importing a package the seed keeps current. */ export declare function runCli(registry: Registry, argv: string[], opts?: RunCliOptions): Promise; //# sourceMappingURL=command.d.ts.map