# `PtcRunner.SubAgent.ProgressRenderer`
[🔗](https://github.com/andreasronge/ptc_runner/blob/main/lib/ptc_runner/sub_agent/progress_renderer.ex#L1)

Renders a markdown checklist from plan steps and summaries.

Used to show the LLM its progress through a plan as user feedback messages.
This is the default progress renderer used when no custom `progress_fn` is
set on the agent definition. Custom `progress_fn` implementations can call
`render/2` directly if they want to include the checklist as part of their output.

Plan steps render as pending by default. Steps are checked off when
`(step-done "id" "summary")` is called with a matching ID. This is
optional — plans work as display-only labels without any step-done calls.

Step-done entries whose IDs don't appear in the plan are collected
under an "Out-of-Plan Steps" section.

# `render`

```elixir
@spec render([{String.t(), String.t()}], map()) :: String.t()
```

Render a progress checklist.

## Parameters

- `plan` - Normalized plan list of `{id, description}` tuples
- `summaries` - Summaries map from step-done calls

## Returns

A markdown string with the progress checklist, or empty string if no plan.

---

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