pub async fn drive_loop(
ctx: &mut RunCtx,
agent: &Agent,
input: &Value,
) -> Result<LoopOutcome, RuntimeError>Expand description
Runs the built-in agent loop over an already-begun run, returning the final
output (a LoopOutcome::Completed) or a park — but not recording the
terminal RunCompleted.
The second half of [drive], made public so an external driver can run an
agent loop inside a run it opened itself. The graph engine uses exactly
this: it opens the log with GraphRunStarted, records NodeEntered, calls
drive_loop (whose model and tool events land in the same log), records
NodeExited, and moves to the next node — recording the single terminal
RunCompleted only after its last node. Leaving the terminal to the caller
is the whole reason the completion moved out of the loop and into [drive].
input is the already-begun run’s input (what [begin] returned).
§Errors
Whatever the RunCtx operations surface: RuntimeError::Replay on
divergence, RuntimeError::Model on a live provider failure,
RuntimeError::Store on a persistence failure.