# `SuperPi.UI.Pending`
[🔗](https://github.com/oleksandr/super-pi-beam/blob/v0.1.0/lib/super_pi/ui/pending.ex#L1)

Hands a decision from `before_tool` to `wrap_tool` for the same tool call.

`before_tool` runs in the conversation machine, `wrap_tool` in the tool task, and the machine
must not block on a human (it would stop answering `cancel`, `steer`, `get_state` and `compact`).
So a plugin that wants an answer from a human lets the call through in `before_tool`, leaves a note
here and asks in `wrap_tool`, which runs in the task. The note is keyed by conversation and tool
call id. `take/2` removes it. A note that nobody takes (a later plugin blocked the call) expires
after ten minutes and is dropped on the next `put/3`.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `put`

```elixir
@spec put(integer(), term(), term()) :: :ok
```

Leaves a note for the tool call.

# `start_link`

# `take`

```elixir
@spec take(integer(), term()) :: term() | nil
```

Removes and returns the note of the tool call, or `nil`.

---

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