pub async fn run_cli(args: Cli) -> Result<()>
Dispatch table for the CLI subcommands. Lives in the library so we can drive it from tests without invoking the binary.