# `ASM.Event`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.9.2/lib/asm/event.ex#L1)

Run-scoped envelope around normalized core runtime events.

`%ASM.Event{}` preserves the `CliSubprocessCore.Event` in `:core_event` while
adding ASM run/session scope plus observability metadata such as lane,
backend, and execution mode.

# `kind`

```elixir
@type kind() :: CliSubprocessCore.Event.kind() | :run_completed
```

# `payload`

```elixir
@type payload() ::
  CliSubprocessCore.Event.payload() | ASM.Control.RunLifecycle.t() | map() | nil
```

# `t`

```elixir
@type t() :: %ASM.Event{
  causation_id: String.t() | nil,
  core_event: CliSubprocessCore.Event.t() | nil,
  correlation_id: String.t() | nil,
  extra: map(),
  id: String.t(),
  kind: kind(),
  metadata: map(),
  payload: payload(),
  provider: atom() | nil,
  provider_session_id: String.t() | nil,
  run_id: String.t(),
  sequence: non_neg_integer() | nil,
  session_id: String.t(),
  timestamp: DateTime.t()
}
```

# `assistant_text`

```elixir
@spec assistant_text(t()) :: String.t() | nil
```

# `core?`

```elixir
@spec core?(t()) :: boolean()
```

# `generate_id`

```elixir
@spec generate_id() :: String.t()
```

# `generate_id_at`

```elixir
@spec generate_id_at(non_neg_integer()) :: String.t()
```

# `kinds`

```elixir
@spec kinds() :: [kind()]
```

# `legacy_payload`

```elixir
@spec legacy_payload(t()) :: term()
```

# `new`

```elixir
@spec new(kind(), payload(), keyword() | map()) :: t()
```

# `parse`

```elixir
@spec parse(keyword() | map()) ::
  {:ok, t()}
  | {:error, {:invalid_asm_event, CliSubprocessCore.Schema.error_detail()}}
```

# `parse!`

```elixir
@spec parse!(keyword() | map()) :: t()
```

# `result_usage`

```elixir
@spec result_usage(t()) :: map() | nil
```

# `text_delta`

```elixir
@spec text_delta(t()) :: String.t() | nil
```

# `to_map`

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

# `wrap_core`

```elixir
@spec wrap_core(map(), CliSubprocessCore.Event.t()) :: t()
```

---

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