Prompt for a single field, re-prompting until the input is valid.
Masks passwords, applies the fieldβs default on empty input, validates the
port is numeric, and exits cleanly if the user interrupts with Ctrl-C.
With the users specified AdGuard details, verify the connection.
Returns Err on a failed connection (so the caller can retry); exits on
rejected auth or an unsupported version, which retrying wouldnβt fix.
Run an async operation, retrying on error up to attempts times, delay apart.
Each failure is reported; the last error is returned once attempts are exhausted.