Minimal menu model shared by CLI prompts and richer TUIs.
This is intentionally a supporting structure, not a UI framework. Callers build small serializable menus; frontends decide how to render them.