# `HuggingfaceClient.ProviderRegistry`
[🔗](https://github.com/huggingface/huggingface_client/blob/v0.1.0/lib/huggingface_client/inference/provider_registry.ex#L1)

Lookup table mapping `{provider_id, task}` pairs to provider module atoms.

## Usage

    {:ok, HuggingfaceClient.Provider.Groq} = ProviderRegistry.get("groq", "conversational")
    {:error, %InputError{}}               = ProviderRegistry.get("groq", "image-segmentation")

# `provider`

```elixir
@type provider() :: String.t()
```

# `task`

```elixir
@type task() :: String.t() | nil
```

# `all`

```elixir
@spec all() :: [{provider(), task()}]
```

Returns all registered `{provider_id, task}` pairs.

# `get`

```elixir
@spec get(provider(), task()) ::
  {:ok, module()} | {:error, HuggingfaceClient.Error.InputError.t()}
```

Resolves a `{provider, task}` pair to a provider module atom.

Special cases:
- `"auto"` or `nil` → always resolves to `HfInference` (any task including nil)
- `"hf-inference"` + nil task → `HfInference`
- unknown provider → `{:error, InputError}`
- known provider + unsupported task → `{:error, InputError}`

# `providers`

```elixir
@spec providers() :: [String.t()]
```

Returns a deduplicated, sorted list of all known provider ID strings.

---

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