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

Session aggregate root for run admission, approval routing, and cost totals.

# `cancel_run`

```elixir
@spec cancel_run(GenServer.server(), String.t()) :: :ok | {:error, ASM.Error.t()}
```

# `checkpoint`

```elixir
@spec checkpoint(GenServer.server()) :: {:ok, map() | nil} | {:error, ASM.Error.t()}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `get_state`

```elixir
@spec get_state(GenServer.server()) :: ASM.Session.State.t()
```

# `intervene`

```elixir
@spec intervene(GenServer.server(), String.t(), String.t(), keyword()) ::
  {:ok, String.t(), pid() | :queued} | {:error, ASM.Error.t()}
```

# `pause_run`

```elixir
@spec pause_run(GenServer.server(), String.t()) :: :ok | {:error, ASM.Error.t()}
```

# `resolve_approval`

```elixir
@spec resolve_approval(GenServer.server(), String.t(), :allow | :deny) ::
  :ok | {:error, ASM.Error.t()}
```

# `resume_run`

```elixir
@spec resume_run(GenServer.server(), String.t(), keyword()) ::
  {:ok, String.t(), pid() | :queued} | {:error, ASM.Error.t()}
```

# `start_link`

```elixir
@spec start_link(keyword()) :: GenServer.on_start()
```

# `submit_run`

```elixir
@spec submit_run(GenServer.server(), String.t(), keyword()) ::
  {:ok, String.t(), pid() | :queued} | {:error, ASM.Error.t()}
```

---

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