agentLoopContinue function

AgentEventStream agentLoopContinue({
  1. required Context context,
  2. required AgentLoopConfig config,
  3. required StreamFunction streamFunction,
  4. required ToolExecutor toolExecutor,
  5. CancelToken? cancelToken,
})

Continues an agent loop from context without adding a new message.

Used for retries — the context already ends with a user or tool-result message the model can respond to. Throws ConfigException synchronously if context has no messages or ends with an assistant message (pi validation).

Implementation

AgentEventStream agentLoopContinue({
  required Context context,
  required AgentLoopConfig config,
  required StreamFunction streamFunction,
  required ToolExecutor toolExecutor,
  CancelToken? cancelToken,
}) {
  if (context.messages.isEmpty) {
    throw const ConfigException('Cannot continue: no messages in context');
  }
  if (context.messages.last.role == 'assistant') {
    throw const ConfigException('Cannot continue from message role: assistant');
  }

  final stream = AgentEventStream();
  _drive(
    stream,
    runAgentLoopContinue(
      context: context,
      config: config,
      emit: stream.push,
      streamFunction: streamFunction,
      toolExecutor: toolExecutor,
      cancelToken: cancelToken,
    ),
  );
  return stream;
}