# `LlmCore.Agent.ToolDispatch.Components.FanOutParallel`
[🔗](https://github.com/fosferon/llm_core/blob/v0.3.0/lib/llm_core/agent/tool_dispatch/components/fan_out_parallel.ex#L1)

Composer that fans out one dispatch event into N parallel call events.

Each emitted event carries one parallel step to execute. With `count: N`
on the subsequent `ExecuteOneCall` stage, these events are processed
concurrently across GenStage workers (in async mode).

If there are no parallel steps, the event passes through unchanged —
the pipeline structure exists but acts as a pass-through.

## ALF Composer Contract

Returns `{events, memo}` where `events` is a list of `Event` structs,
one per parallel step. Memo is unused (`nil`).

# `call`

```elixir
@spec call(LlmCore.Agent.ToolDispatch.Event.t(), nil, keyword()) ::
  {[LlmCore.Agent.ToolDispatch.Event.t()], nil}
```

Fan-out function for the ALF Composer.

## Parameters

  * `event` — `%Event{}` with `plan.parallel` steps
  * `memo` — Composer memo (unused, always `nil`)
  * `opts` — ALF composer options (unused)

## Returns

  `{[Event.t()], nil}` — One event per parallel step, or the original
  event wrapped in a list if there are no parallel steps.

---

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