Runtime Elixir evaluation with captured IO, timeouts, and session state.
Eval is Vibe's main control plane for agents. The model-facing eval tool can
call ordinary Elixir APIs inside the running Vibe VM, which keeps the external
tool surface small while still exposing commands, telemetry, storage, plugins,
sessions, subagents, AST, and LSP helpers.
Use run/2 when evaluation should persist variables, aliases, imports, and
requires for a session. Use once/2 for one-off in-process evaluation that
should not keep state. Eval sessions preload aliases such as Cmd for
Vibe.Command and MD for Vibe.MD.
Summary
Types
@type result() :: {:ok, Vibe.Eval.Result.t()} | {:error, String.t()}
Functions
@spec bindings(String.t()) :: {:ok, [Vibe.Eval.Evaluator.binding_info()]} | {:error, String.t()}
@spec cancel(String.t()) :: :ok