# `ASM.Extensions.Rendering`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.9.2/lib/asm/extensions/rendering.ex#L2)

Public rendering extension API.

This domain consumes `%ASM.Event{}` streams and dispatches renderer output
to one or more sinks, keeping output concerns outside the run loop.

# `renderer_spec`

```elixir
@type renderer_spec() :: {module(), keyword()}
```

# `sink_spec`

```elixir
@type sink_spec() :: {module(), keyword()}
```

# `callback_sink`

```elixir
@spec callback_sink(keyword()) :: sink_spec()
```

# `compact_renderer`

```elixir
@spec compact_renderer(keyword()) :: renderer_spec()
```

# `file_sink`

```elixir
@spec file_sink(keyword()) :: sink_spec()
```

# `jsonl_sink`

```elixir
@spec jsonl_sink(keyword()) :: sink_spec()
```

# `stream`

```elixir
@spec stream(
  Enumerable.t(),
  keyword()
) :: :ok | {:error, ASM.Error.t()}
```

# `tty_sink`

```elixir
@spec tty_sink(keyword()) :: sink_spec()
```

# `verbose_renderer`

```elixir
@spec verbose_renderer(keyword()) :: renderer_spec()
```

---

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