Structured error returned by providers for transport/API failures.
Every provider wraps failures in this struct so callers can pattern-match on a
single shape instead of opaque tuples. ExAgent.run/3 surfaces it (wrapped in
{:error, {:model_request_failed, %RequestError{}}}) rather than raising.
Summary
Types
@type t() :: %ExAgent.RequestError{ body: term() | nil, provider: atom(), reason: :http_error | :provider_error | :request_failed | :timeout | :missing_credentials, status: pos_integer() | nil }