runAgentLoopContinue function

Future<List<Message>> runAgentLoopContinue({
  1. required Context context,
  2. required AgentLoopConfig config,
  3. required StreamFunction streamFunction,
  4. required ToolExecutor toolExecutor,
  5. required AgentEventSink emit,
  6. CancelToken? cancelToken,
})

Continues an agent loop from context, delivering events to emit.

Emit-based core beneath agentLoopContinue (pi's runAgentLoopContinue). Throws ConfigException synchronously if context has no messages or ends with an assistant message (pi validation).

Implementation

Future<List<Message>> runAgentLoopContinue({
  required Context context,
  required AgentLoopConfig config,
  required StreamFunction streamFunction,
  required ToolExecutor toolExecutor,
  required AgentEventSink emit,
  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');
  }

  return _runAgentLoop(
    prompts: const [],
    context: context,
    config: config,
    emit: emit,
    streamFunction: streamFunction,
    toolExecutor: toolExecutor,
    cancelToken: cancelToken,
  );
}