# `PtcRunner.SubAgent.Namespace.ExecutionHistory`
[🔗](https://github.com/andreasronge/ptc_runner/blob/main/lib/ptc_runner/sub_agent/namespace/execution_history.ex#L1)

Renders tool call history and println output.

# `render_output`

```elixir
@spec render_output([String.t()], non_neg_integer(), boolean()) :: String.t() | nil
```

Render println output from successful turns.

Returns `nil` when `has_println` is false (no output section needed),
otherwise a formatted list with header and output lines wrapped in
an untrusted data envelope.

## Examples

    iex> PtcRunner.SubAgent.Namespace.ExecutionHistory.render_output([], 15, false)
    nil

    iex> result = PtcRunner.SubAgent.Namespace.ExecutionHistory.render_output(["hello", "world"], 15, true)
    iex> result =~ "hello\nworld"
    true
    iex> result =~ "untrusted_ptc_output"
    true

# `render_tool_calls`

```elixir
@spec render_tool_calls([map()], non_neg_integer()) :: String.t()
```

Render tool calls made during successful turns.

Returns `;; No tool calls made` for empty list, otherwise formatted list
with header and entries.

## Examples

    iex> PtcRunner.SubAgent.Namespace.ExecutionHistory.render_tool_calls([], 20)
    ";; No tool calls made"

    iex> call = %{name: "search", args: %{query: "hello"}}
    iex> PtcRunner.SubAgent.Namespace.ExecutionHistory.render_tool_calls([call], 20)
    ";; Tool calls made:\n;   search({:query \"hello\"})"

    iex> call = %{name: "search", args: %{query: "test", _token: "secret123"}}
    iex> PtcRunner.SubAgent.Namespace.ExecutionHistory.render_tool_calls([call], 20)
    ";; Tool calls made:\n;   search({:_token \"secret123\" :query \"test\"})"

---

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