# `MingaAgent.ProviderResolver`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_agent/provider_resolver.ex#L1)

Resolves which agent provider module to use based on configuration.

Provider declarations live in `MingaAgent.ProviderRegistry`. The resolver preserves the existing `:auto` and `:native` behavior while also accepting registered string provider ids for future provider packs.

# `preference`

```elixir
@type preference() :: :auto | :native | String.t()
```

Provider preference accepted by config and callers.

# `resolved`

```elixir
@type resolved() :: MingaAgent.ProviderResolver.Resolved.t()
```

Resolved provider information.

# `configured_model`

```elixir
@spec configured_model() :: String.t() | nil
```

Returns the configured model string, or nil to use the provider's default.

# `resolve`

```elixir
@spec resolve() :: resolved()
```

Resolves the provider module based on the current config.

The application `:test_provider_module` override keeps top precedence so tests can avoid mutating the daemon provider registry.

# `resolve`

```elixir
@spec resolve(
  preference(),
  keyword()
) :: resolved()
```

Resolves a specific provider preference.

---

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