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

Exact text execution contract carried by a model route.

# `t`

```elixir
@type t() :: %MingaAgent.ModelSelection.TextExecution{
  base_url: String.t(),
  family: String.t(),
  path: String.t(),
  provider_model_id: String.t(),
  supported: true,
  transport: String.t(),
  wire_protocol: String.t()
}
```

# `encode`

```elixir
@spec encode(t()) :: map()
```

Encodes the execution contract for secret-free persistence.

# `new`

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

Builds and validates a complete text execution contract.

# `normalize_base_url`

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

Normalizes an HTTP(S) base URL and rejects credential-bearing forms.

---

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