# `AgentSessionManager.Persistence.ExecutionState`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.8.0/lib/agent_session_manager/persistence/execution_state.ex#L1)

In-memory execution state used while a run is in progress.

# `execution_result`

```elixir
@type execution_result() :: %{
  session: AgentSessionManager.Core.Session.t(),
  run: AgentSessionManager.Core.Run.t(),
  events: [AgentSessionManager.Core.Event.t()],
  provider_metadata: map()
}
```

# `t`

```elixir
@type t() :: %AgentSessionManager.Persistence.ExecutionState{
  events: [AgentSessionManager.Core.Event.t()],
  provider_metadata: map(),
  run: AgentSessionManager.Core.Run.t(),
  sequence_counter: non_neg_integer(),
  session: AgentSessionManager.Core.Session.t()
}
```

# `append_event`

```elixir
@spec append_event(t(), AgentSessionManager.Core.Event.t()) :: t()
```

# `cache_provider_metadata`

```elixir
@spec cache_provider_metadata(t(), map()) :: t()
```

# `finalized_events`

```elixir
@spec finalized_events(t()) :: [AgentSessionManager.Core.Event.t()]
```

# `new`

```elixir
@spec new(AgentSessionManager.Core.Session.t(), AgentSessionManager.Core.Run.t()) ::
  t()
```

# `to_result`

```elixir
@spec to_result(t()) :: execution_result()
```

# `update_run`

```elixir
@spec update_run(t(), (AgentSessionManager.Core.Run.t() -&gt;
                   AgentSessionManager.Core.Run.t())) :: t()
```

# `update_session`

```elixir
@spec update_session(t(), (AgentSessionManager.Core.Session.t() -&gt;
                       AgentSessionManager.Core.Session.t())) ::
  t()
```

---

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