# `PromptRunner.Rendering`
[🔗](https://github.com/nshkrdotcom/prompt_runner_sdk/blob/v0.12.1/lib/prompt_runner/rendering.ex#L1)

Renders prompt-runner canonical event streams through a pluggable renderer and sink pipeline.

# `command`

```elixir
@type command() :: {:set_view, map()} | {:renderer, renderer_spec()}
```

What a boundary hook may ask the pipeline to do after an event.

`{:set_view, view}` reaches the live renderer through
`c:PromptRunner.Rendering.Renderer.set_view/2`; `{:renderer, spec}` replaces
the renderer outright, which is what a `log_mode` change means.

# `opts`

```elixir
@type opts() :: [
  renderer: renderer_spec(),
  sinks: [sink_spec()],
  boundary: (map() -&gt; [command()])
]
```

# `renderer_spec`

```elixir
@type renderer_spec() :: {module(), PromptRunner.Rendering.Renderer.opts()}
```

# `sink_spec`

```elixir
@type sink_spec() :: {module(), PromptRunner.Rendering.Sink.opts()}
```

# `stream`

```elixir
@spec stream(Enumerable.t(), opts()) :: :ok | {:error, term()}
```

---

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