# `Raxol.AgentClientProtocol.Schema.AvailableCommandsUpdate`
[🔗](https://github.com/DROOdotFOO/raxol-agent/blob/raxol_agent_client_protocol-v0.1.0/packages/raxol_agent_client_protocol/lib/raxol/agent_client_protocol/schema/session_update.ex#L287)

Payload for the `SessionUpdate` `available_commands_update` variant: the
set of commands the agent can execute has changed. `available_commands`
is decode-lenient, matching the oracle schema's
`x-deserialize-default-on-error` + `x-deserialize-skip-invalid-items`: a
missing/wrong-typed list defaults to `[]`, and items that individually
fail to decode are skipped rather than aborting the whole update.

Ported from the MIT `f1729/agent_client_protocol` (c) 2025 f1729; see NOTICE.md.

# `t`

```elixir
@type t() :: %Raxol.AgentClientProtocol.Schema.AvailableCommandsUpdate{
  _meta: map(),
  available_commands: [Raxol.AgentClientProtocol.Schema.AvailableCommand.t()]
}
```

# `from_json`

```elixir
@spec from_json(term()) :: {:ok, t()}
```

Total: never raises, even for a non-map argument -- matches `Plan.from_json/1`'s leniency.

# `new`

```elixir
@spec new([Raxol.AgentClientProtocol.Schema.AvailableCommand.t()]) :: t()
```

# `to_json`

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

---

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