Class: AgUi::EventBridge
- Inherits:
-
Object
- Object
- AgUi::EventBridge
- Defined in:
- lib/ag_ui/event_bridge.rb
Overview
The seam between brute's turn pipeline and the AG-UI SSE stream.
Brute middleware and terminal procs push {type:, data:} events into
env; an EventBridge is that sink, translating each event into
the matching typed SSE emitter as it arrives — the browser sees deltas
mid-turn, not after.
pipeline.start(, events: AgUi::EventBridge.new(stream))
Unknown event types (brute's own :log, :tool_result telemetry, etc.) are ignored — only the AG-UI vocabulary reaches the wire.
Constant Summary collapse
- TRANSLATIONS =
{ text_message_start: :translate_text_start, text_message_content: :translate_text_content, text_message_end: :translate_text_end, tool_call_start: :translate_tool_call_start, tool_call_args: :translate_tool_call_args, tool_call_end: :translate_tool_call_end, tool_call_result: :translate_tool_call_result, activity_snapshot: :translate_activity_snapshot, reasoning_start: :translate_reasoning_start, reasoning_message_start: :translate_reasoning_message_start, reasoning_message_content: :translate_reasoning_message_content, reasoning_message_end: :translate_reasoning_message_end, reasoning_end: :translate_reasoning_end, }.freeze
Instance Method Summary collapse
- #<<(event) ⇒ Object
-
#initialize(stream) ⇒ EventBridge
constructor
A new instance of EventBridge.
Constructor Details
#initialize(stream) ⇒ EventBridge
Returns a new instance of EventBridge.
35 36 37 |
# File 'lib/ag_ui/event_bridge.rb', line 35 def initialize(stream) @stream = stream end |
Instance Method Details
#<<(event) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/ag_ui/event_bridge.rb', line 39 def <<(event) handler = TRANSLATIONS[event[:type]] if handler send(handler, event[:data] || {}) end self end |