bruteSourceBruteAgent

class Agent

An agent is a Pipeline configured for LLM turns. It carries the provider/model/tools configuration and shapes env from a Session (the conversation message log).

Usage:

agent = Brute::Agent.new( provider: Brute.provider, model: "claude-sonnet-4-20250514", tools: Brute::Tools::ALL, ) do use Brute::Middleware::EventHandler, handler_class: TerminalOutput use Brute::Middleware::SystemPrompt use Brute::Middleware::MaxIterations use Brute::Middleware::Question use Brute::Middleware::ToolCall run Brute::Middleware::LLMCall.new end

session = Brute::Session.new session.user("fix the failing tests") agent.call(session)

Definitions

def call(session, events: NullSink.new)

Run one turn against the given session. The session is mutated in place (assistant + tool messages appended). Returns the env hash so callers can access metadata (timing, tokens, etc.).

Implementation

def call(session, events: NullSink.new)
  env = {
    messages:          session,
    provider:          @provider,
    model:             @model,
    tools:             @tools,
    events:            events,
    metadata:          {},
    system_prompt:     DEFAULT_SYSTEM_PROMPT,
    current_iteration: 1,
  }
  super(env)
  env
end