import type { Command } from "commander"; import type { CommandSpec } from "../internals/plan.js"; /** Capability commands (repo/workstation mutators), dry-run by default. */ export declare const CAPABILITIES: CommandSpec[]; /** * Commands registered with the non-mutating aih executor surface. `live` normally runs * read-only Codex/Claude modes, but its explicitly acknowledged Kimi path is non-read-only. */ export declare const READONLY: CommandSpec[]; export declare const ALL_COMMANDS: CommandSpec[]; /** Parent command groups registered below as bare commander groups (not CommandSpecs). */ export declare const PARENT_GROUPS: readonly ["workspace", "capability", "trust", "skill", "pack", "marketplace", "policy", "evidence", "truth"]; export declare const GROUPED_COMMAND_SPECS: { readonly workspace: readonly [CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec]; readonly capability: readonly [CommandSpec, CommandSpec]; readonly trust: readonly [CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec]; readonly skill: readonly [CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec]; readonly pack: readonly [CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec]; readonly marketplace: readonly [CommandSpec, CommandSpec, CommandSpec]; readonly policy: readonly [CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec, CommandSpec]; readonly evidence: readonly [CommandSpec, CommandSpec]; readonly truth: readonly [CommandSpec, CommandSpec]; }; /** Every built-in CommandSpec, including nested specs under parent groups. */ export declare const ALL_COMMAND_SPECS: CommandSpec[]; /** Stable command paths for the spec registry completeness guard. */ export declare const ALL_COMMAND_SPEC_PATHS: ReadonlyArray; /** * Every top-level name the core CLI claims: ALL_COMMANDS' names AND their * deprecated aliases (an old name stays reserved for its whole grace window — * see CommandSpec.deprecatedAliases), plus the parent group names * (`workspace` is both a CommandSpec and a group — the Set folds it) plus * commander's own reserved `help`/`version`. The plugin registry refuses any * external spec colliding with one of these, so a plugin can never shadow * `doctor`, capture the `marketplace` group, impersonate `help`, or squat on * a deprecated old name mid-migration. `specs` is a test seam (defaults to * ALL_COMMANDS) so the alias reservation is provable while zero built-ins * carry one. */ export declare function builtinCommandNames(specs?: readonly CommandSpec[]): ReadonlySet; /** * Flags shared by every subcommand (placed on the subcommand so `aih certs * --apply` works). Exported as the authoritative shared-flag surface: the * plugin registry's SHARED_FLAG_TOKENS mirror (src/plugins/registry.ts) is * pinned against this exact registration by tests, so the two cannot drift. */ export declare function addSharedFlags(cmd: Command): Command; /** * Register every command on the program. `extra` carries EXTERNAL plugin specs * (see src/plugins/registry.ts, already gated + collision-free): they flow * through the IDENTICAL registerSpec path as the built-ins — same shared * flags, same optional `[root]` positional, same runCapability action (posture * resolution, dirty-worktree gate, run ledger). TOP-LEVEL specs only: a plugin * cannot contribute subcommands to a parent group (trust/skill/pack/…) in v1. * * Containment: built-ins register OUTSIDE any try/catch — a throw there is a * core bug that must crash loudly. Each plugin spec registers inside its own * try/catch: a Commander throw (e.g. a flag conflict the structural gate * cannot predict) drops THAT spec with a warning pushed to the `warnings` * sink, and every other command stays live. */ export declare function registerCommands(program: Command, extra?: CommandSpec[], warnings?: string[]): void;