# `MingaAgent.ModelSelection.Policy`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_agent/model_selection/policy.ex#L1)

Minga-owned reasoning, limit, capability, and cost policy.

# `capabilities`

```elixir
@type capabilities() :: MingaAgent.ModelSelection.Policy.Capabilities.t()
```

# `capability`

```elixir
@type capability() :: MingaAgent.ModelSelection.Policy.Capabilities.capability()
```

# `limits`

```elixir
@type limits() :: MingaAgent.ModelSelection.Policy.Limits.t()
```

# `reasoning`

```elixir
@type reasoning() :: MingaAgent.ModelSelection.Policy.Reasoning.t()
```

# `t`

```elixir
@type t() :: %MingaAgent.ModelSelection.Policy{
  capabilities: capabilities(),
  cost: map(),
  limits: limits(),
  reasoning: reasoning()
}
```

# `new`

```elixir
@spec new(map()) :: {:ok, t()} | {:error, :invalid_policy}
```

Builds validated model policy.

# `with_reasoning`

```elixir
@spec with_reasoning(t(), String.t()) :: {:ok, t()} | {:error, :unsupported_reasoning}
```

Returns policy with a validated reasoning choice.

---

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