Class: Brute::Events::Handler
- Inherits:
-
Object
- Object
- Brute::Events::Handler
- Defined in:
- lib/brute/events/handler.rb
Overview
EXAMPLES: class TerminalOutput < Brute::Events::Handler
def <<(event)
h = event.to_h
case h[:type]
when :content then write(h[:data])
when :tool_result then write(" ✓ #{h[:data][:name]}\n")
when :log then write("[#{h[:data]}]\n")
end
super # forward to whatever's wrapped underneath
end
private
def write(text); $stderr.write(text); $stderr.flush; end
end
class JsonlTrace < Brute::Events::Handler
def initialize(inner, path:)
super(inner)
@file = File.open(path, "a")
end
def <<(event)
@file.puts(JSON.generate(event.to_h))
@file.flush
super
end
end
class FilterNoise < Brute::Events::Handler
# Drop reasoning chunks before they reach the terminal
def <<(event)
return self if event.to_h[:type] == :reasoning
super
end
end
pipeline = Brute::Pipeline.new do
use Brute::Middleware::EventHandler, handler_class: JsonlTrace, path: "trace.jsonl"
use Brute::Middleware::EventHandler, handler_class: FilterNoise
use Brute::Middleware::EventHandler, handler_class: TerminalOutput
end
Direct Known Subclasses
Instance Method Summary collapse
-
#<<(event) ⇒ Object
Default: pass through.
-
#initialize(inner) ⇒ Handler
constructor
A new instance of Handler.
Constructor Details
#initialize(inner) ⇒ Handler
Returns a new instance of Handler.
52 53 54 |
# File 'lib/brute/events/handler.rb', line 52 def initialize(inner) @inner = inner end |
Instance Method Details
#<<(event) ⇒ Object
Default: pass through. Subclasses override <<, do their thing, then super (or don’t, to swallow the event).
58 59 60 61 62 |
# File 'lib/brute/events/handler.rb', line 58 def <<(event) tap do @inner << event if @inner end end |