# `Raxol.AgentClientProtocol.Schema.Plan`
[🔗](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/plan.ex#L102)

An execution plan for accomplishing complex tasks: an ordered list of
`PlanEntry` structs. Per the ACP schema, `entries` is decode-lenient
at both levels: a missing/wrong-typed `entries` field defaults to `[]`
(never fails the whole plan), and entries that individually fail to
decode are skipped rather than aborting the list
(`x-deserialize-skip-invalid-items`).

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

# `t`

```elixir
@type t() :: %Raxol.AgentClientProtocol.Schema.Plan{
  _meta: map(),
  entries: [Raxol.AgentClientProtocol.Schema.PlanEntry.t()]
}
```

# `from_json`

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

Total: never raises, even for a non-map argument -- a value that isn't a
wire object decodes as an empty plan with no `_meta`, since `entries`
alone already tolerates every other malformed shape.

# `new`

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

# `to_json`

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

---

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