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