fix: distinguish permanent and retryable token validation failures
Refs #7537.
Token validation mapped every API status other than 401/403 to TokenValidationError("server error"), so a permanent failure such as a malformed request got the same "try again later" advice as a transient one.
This keeps the HTTP status and splits the result into retryable (for example 5xx) and permanent, so the guidance matches. Nothing else about validation changes.
The API's error detail is intentionally not surfaced: it can echo the token. So this covers the HTTP status and the retryable vs permanent split only, not the API's own explanation from the issue. That part of #7537 is left open, which is why this says "Refs" and not "Closes".
Added tests in tests/units/reflex_cli/utils/test_hosting.py, including checks that the token does not appear in the error. An independent review environment ran them with the existing unit suite (790 passed); I did not run them myself. I did not run lint or the full CI matrix locally; CI will.
News fragment included.
All Submissions:
- Have you followed the guidelines stated in CONTRIBUTING.md file?
- Have you checked to ensure there aren't any other open Pull Requests for the desired changed?
Type of change
- Bug fix (non-breaking change which fixes an issue)