# `ASM.Session.State`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.9.2/lib/asm/session/state.ex#L1)

Aggregate state owned by `ASM.Session.Server`.

# `queued_run`

```elixir
@type queued_run() :: %{run_id: String.t(), prompt: String.t(), opts: keyword()}
```

# `t`

```elixir
@type t() :: %ASM.Session.State{
  active_runs: %{optional(String.t()) =&gt; pid()},
  checkpoint: map() | nil,
  cost: %{
    input_tokens: non_neg_integer(),
    output_tokens: non_neg_integer(),
    cost_usd: float()
  },
  options: keyword(),
  pending_approval_index: %{optional(String.t()) =&gt; pid()},
  provider: ASM.Provider.t(),
  provider_profile: ASM.Provider.Profile.t(),
  run_monitors: %{optional(pid()) =&gt; reference()},
  run_queue: term(),
  session_id: String.t(),
  status: :ready | :stopped
}
```

# `new`

```elixir
@spec new(String.t(), ASM.Provider.t(), keyword()) :: t()
```

---

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