# `Pixir.ACP.RuntimeMode`
[🔗](https://github.com/Ranvier-Technologies/pixir/blob/main/lib/pixir/acp/runtime_mode.ex#L1)

Live producer for agent-initiated plan→build (#520).

`Pixir.ACP.Server.runtime_config_change/3` is the presenter wire. This module
is the caller: when a plan-mode Turn records a plan, Pixir advertises `build`
so the client picker moves without a `session/set_mode` round-trip.

CLI and other non-ACP Turns have no `acp_runtime` binding and are a no-op.
A Turn that is already in build does not emit a no-op flip. The Server helper
also drops an unchanged advertised mode, so a second `update_plan` in the same
plan-mode Turn does not duplicate the wire update.

# `acp_runtime`

```elixir
@type acp_runtime() :: %{server: GenServer.server(), acp_sid: String.t()}
```

# `leave_plan`

```elixir
@spec leave_plan(map()) :: :ok | {:ok, :queued} | {:error, map()}
```

Advertise plan→build for the ACP session bound on this tool context.

Called from `Pixir.Tools.UpdatePlan` after a plan is recorded. Returns
`{:ok, :queued}` when a change was handed to the Server, or `:ok` when there
is no ACP binding or the Turn is not in plan mode.

---

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