Return a sorted list of available agent names from ~/.deepagents/.
Scans the user's .deepagents directory and returns each real
subdirectory that contains the AGENTS.md agent marker and is not an
app-reserved name. Fail-closed: bare directories, reserved app state
(bin/, plugins/, conversation_history/), symlinks, and hidden
entries are not agents.
Filesystem errors (missing parent, permission denied, broken entries) are logged and surfaced as an empty list rather than raised — the caller shows an empty modal instead of crashing mid-render.