Skip to contents

Handles a single user turn. Accepts either a CodeagentClient (new style) or the legacy (chat, settings) pair.

Usage

agent_loop(
  user_input,
  client,
  settings = NULL,
  compaction_ctrl = CompactionController$new(),
  budget_tracker = BudgetTracker$new(),
  resource_state = ContentReplacementState$new(),
  hooks = NULL,
  cwd = NULL,
  session_id = NULL,
  iteration = 1L
)

Arguments

user_input

Character. User message.

client

A CodeagentClient (from codeagent_client()), or an ellmer::Chat for legacy use.

settings

Named list. Only needed in legacy mode (ignored when client is a CodeagentClient).

compaction_ctrl

A CompactionController R6 object.

budget_tracker

A BudgetTracker R6 object.

resource_state

A ContentReplacementState R6 object.

hooks

A HookRegistry R6 object or NULL.

cwd

Character. Working directory (for session save). Overrides client$settings$cwd when provided explicitly.

session_id

Character or NULL.

iteration

Integer. Current loop iteration.

Value

Named list: response, session_id, stop_reason.