/** * The menu roster — the single declaration site for what the menu offers * (interactive-cli-menu/AC-32, interactive-cli-menu/AC-33, * interactive-cli-menu/AC-15, interactive-cli-menu/AC-16). * * Data only, no logic. Two properties are pinned by tests rather than by * convention: array order IS display order, and every top-level command on the * program appears in exactly one of `ROSTER` (by first path segment) or * `EXCLUSIONS`. * * Labels are curated here rather than read from commander. Several * `.description()` strings read poorly as menu labels — `doctor`'s is 76 * characters, and `add`/`knowledge` describe a group rather than an action — so * descriptions serve as secondary hint text only. * * @module */ /** Lifecycle stage an entry belongs to; drives visual grouping only. */ export type MenuBucket = 'setup' | 'begin' | 'resume' | 'inspect' | 'maintain'; export interface MenuEntry { /** Command path from the program root: `['start']`, `['knowledge','query']`. */ readonly path: readonly string[]; /** Curated label — never commander's `.description()`. */ readonly label: string; readonly bucket: MenuBucket; /** * Skip menu-side prompting for required positionals and let the command run * its own wizard. `start` only (interactive-cli-menu/AC-35). */ readonly delegatesArgs?: true; } /** * The 14 menu entries, in display order: setup → begin → resume → inspect → * maintain (interactive-cli-menu/AC-32). */ export declare const ROSTER: readonly MenuEntry[]; /** * Every top-level command deliberately kept out of the menu, with its reason * (interactive-cli-menu/AC-33). Excluded commands stay fully usable by typing * them; there is no "more" entry. * * The exclusion criterion is **not** whether a command is a group — it is * whether its bare invocation does something useful. `cost` is a group *and* a * useful bare report, so it is rostered. `knowledge` must be listed even though * `knowledge query` is rostered, because the contract test compares top-level * names and `knowledge` is one. */ export declare const EXCLUSIONS: Readonly>; /** Bucket order for grouping; matches the order entries appear in `ROSTER`. */ export declare const BUCKET_ORDER: readonly MenuBucket[]; //# sourceMappingURL=roster.d.ts.map