# `Foresight.Reflect.LoopOptions`
[🔗](https://github.com/fosferon/foresight/blob/v0.3.2/lib/foresight/reflect/loop_options.ex#L1)

Guards the options reflect hands to `LlmCore.Agent.Loop`.

Reflect accumulates grounding (cited ids, tool calls, token usage) in the calling
process's dictionary while the loop runs its iteration pipeline synchronously in
that same process. An asynchronous pipeline would run the stages elsewhere and
silently lose every grounding write, so that configuration is refused up front.

# `assert_sync!`

```elixir
@spec assert_sync!(keyword()) :: :ok
```

Raise unless the pipeline runs synchronously (the default).

# `with_pipeline_opts`

```elixir
@spec with_pipeline_opts(
  keyword(),
  keyword() | nil
) :: keyword()
```

Attach caller-supplied pipeline options to the loop options, refusing async ones.

---

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