/** * Contrato central del proyecto (PRD §5): cada runtime implementa un Adapter * que declara DÓNDE va cada cosa y CÓMO se escribe. Los componentes * (src/components/) iteran (componente × adapter) sin switches por runtime. */ type RuntimeId = "claude-code" | "codex" | "opencode" | "pi"; interface OperationScope { section: "all" | "skills" | "config" | "agents"; agent?: string; } type Action = "install" | "update" | "doctor" | "uninstall"; type CleanUnit = "residues" | "backups"; type Option = { value: string; label: string; }; interface MenuOperations { detect(): RuntimeId[]; agents(): string[]; operate(action: Action, scope: OperationScope, runtimes: RuntimeId[]): Promise; edit(runtime: RuntimeId, agent: string, route: string): Promise; managed?(): RuntimeId[]; clean(unit: CleanUnit, ui: MenuUI): Promise; } interface MenuUI { select(route: string, options: Option[]): Promise; confirm(message: string): Promise; info(message: string): void; } declare function runMenu(operations: MenuOperations, ui: MenuUI, tty: boolean): Promise; export { type MenuOperations, type MenuUI, runMenu };