# `Raxol.AgentClientProtocol.Schema.AgentTypes.SessionCapabilities`
[🔗](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/agent_types.ex#L1618)

Session-lifecycle capabilities the agent supports, including the unstable
`list`/`fork`/`resume` extensions.

`delete`/`close` (`SessionDeleteCapabilities`/`SessionCloseCapabilities`)
are not in f1729; ported from the pinned v1.19.0 oracle schema
(`priv/schema-oracle/v1/schema.json`, `$defs/SessionCapabilities.delete` +
`.close`) so that `session/delete` and `session/close` gate on a real
struct leaf (see `MethodTable`'s ORACLE-DIVERGENCE note). No upstream
attribution for `delete`/`close`/`SessionDeleteCapabilities`/
`SessionCloseCapabilities`.

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

# `t`

```elixir
@type t() :: %Raxol.AgentClientProtocol.Schema.AgentTypes.SessionCapabilities{
  _meta: map(),
  close:
    Raxol.AgentClientProtocol.Schema.AgentTypes.SessionCloseCapabilities.t()
    | nil,
  delete:
    Raxol.AgentClientProtocol.Schema.AgentTypes.SessionDeleteCapabilities.t()
    | nil,
  fork:
    Raxol.AgentClientProtocol.Schema.Unstable.SessionForkCapabilities.t() | nil,
  list:
    Raxol.AgentClientProtocol.Schema.Unstable.SessionListCapabilities.t() | nil,
  modes: boolean(),
  resume:
    Raxol.AgentClientProtocol.Schema.Unstable.SessionResumeCapabilities.t()
    | nil
}
```

# `from_json`

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

# `new`

```elixir
@spec new() :: t()
```

# `to_json`

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

---

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