# `Omni.Tools.Repl`
[🔗](https://github.com/aaronrussell/omni_tools/blob/v0.1.0/lib/omni/tools/repl.ex#L1)

An `Omni.Tool` for executing Elixir code in a sandboxed peer node.

Each invocation runs in a fresh Erlang peer node with a clean slate.
IO output is captured and returned alongside the expression result.

    tool = Omni.Tools.Repl.new()
    tool = Omni.Tools.Repl.new(timeout: 30_000, max_output: 10_000)

## Extensions

Extensions inject code and/or documentation into the sandbox. Pass
module-based extensions as `{module, opts}` tuples, or use inline
extensions via `Omni.Tools.Repl.Extension.new/1`.

    alias Omni.Tools.Repl.Extension

    tool = Omni.Tools.Repl.new(
      extensions: [
        {MyApp.ReplExtension, api_key: "sk-..."},
        Extension.new(description: "Req and Jason are available.")
      ]
    )

See `Omni.Tools.Repl.Extension` for the full extension API.

## Options

- `:timeout` — execution timeout in milliseconds. Default `60_000`.
- `:max_output` — output truncation limit in bytes. Default `50_000`.
- `:extensions` — list of extensions (module tuples or `%Extension{}`).

# `new`

Builds a `%Omni.Tool{}` struct with a bound handler.

---

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