# `AgentSessionManager.Core.ProviderError`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.8.0/lib/agent_session_manager/core/provider_error.ex#L1)

Shared normalization for provider-specific errors.

Adapters pass provider-native error payloads and receive a stable
`provider_error` map plus provider-specific `details`.

# `provider`

```elixir
@type provider() :: :codex | :amp | :claude | :gemini | :unknown
```

Supported provider identifiers.

# `t`

```elixir
@type t() :: %{
  provider: provider(),
  kind: atom(),
  message: String.t(),
  exit_code: integer() | nil,
  stderr: String.t() | nil,
  truncated?: boolean() | nil
}
```

Normalized provider error payload.

# `normalize`

```elixir
@spec normalize(atom(), map(), keyword()) :: {t(), map()}
```

Normalizes provider-specific attributes into a stable provider error map.

Returns `{provider_error, details}` where:
- `provider_error` follows the cross-provider contract
- `details` contains provider-specific extras with duplicate error fields removed

# `truncate_text`

```elixir
@spec truncate_text(String.t() | nil, integer() | nil, integer() | nil) ::
  {String.t() | nil, boolean()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
