Class: DebugAgent::SseCallback
- Inherits:
-
ChatCallback
- Object
- ChatCallback
- DebugAgent::SseCallback
- Defined in:
- lib/debug_agent/middleware.rb
Overview
SSE callback that collects events for both buffered and streaming modes. In streaming mode, events are yielded in real-time via an Enumerator.
Instance Method Summary collapse
- #events ⇒ Object
-
#initialize ⇒ SseCallback
constructor
A new instance of SseCallback.
- #on_complete ⇒ Object
- #on_content(chunk) ⇒ Object
- #on_context_compressed(original, compressed, removed_rounds) ⇒ Object
- #on_error(message) ⇒ Object
- #on_tool_result(tool_name, result) ⇒ Object
- #on_tool_start(tool_name, args) ⇒ Object
-
#streaming_enum ⇒ Object
Real-time streaming Enumerator: yields SSE-formatted lines as events arrive.
Constructor Details
#initialize ⇒ SseCallback
Returns a new instance of SseCallback.
8 9 10 11 12 |
# File 'lib/debug_agent/middleware.rb', line 8 def initialize @events = [] @queue = Queue.new @done = false end |
Instance Method Details
#events ⇒ Object
14 15 16 |
# File 'lib/debug_agent/middleware.rb', line 14 def events @events end |
#on_complete ⇒ Object
33 34 35 36 37 38 |
# File 'lib/debug_agent/middleware.rb', line 33 def on_complete @events << ['done', ''] @queue << ['done', ''] @done = true @queue.close end |
#on_content(chunk) ⇒ Object
18 19 20 21 |
# File 'lib/debug_agent/middleware.rb', line 18 def on_content(chunk) @events << ['content', JSON.generate(chunk)] @queue << ['content', JSON.generate(chunk)] end |
#on_context_compressed(original, compressed, removed_rounds) ⇒ Object
47 48 49 50 51 |
# File 'lib/debug_agent/middleware.rb', line 47 def on_context_compressed(original, compressed, removed_rounds) info = JSON.generate({ originalTokens: original, compressedTokens: compressed, removedRounds: removed_rounds }) @events << ['context_compressed', info] @queue << ['context_compressed', info] end |
#on_error(message) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/debug_agent/middleware.rb', line 40 def on_error() @events << ['error', ] @queue << ['error', ] @done = true @queue.close end |
#on_tool_result(tool_name, result) ⇒ Object
28 29 30 31 |
# File 'lib/debug_agent/middleware.rb', line 28 def on_tool_result(tool_name, result) @events << ['tool_result', "#{tool_name}: #{result}"] @queue << ['tool_result', "#{tool_name}: #{result}"] end |
#on_tool_start(tool_name, args) ⇒ Object
23 24 25 26 |
# File 'lib/debug_agent/middleware.rb', line 23 def on_tool_start(tool_name, args) @events << ['tool_start', tool_name] @queue << ['tool_start', tool_name] end |
#streaming_enum ⇒ Object
Real-time streaming Enumerator: yields SSE-formatted lines as events arrive.
54 55 56 57 58 59 60 61 |
# File 'lib/debug_agent/middleware.rb', line 54 def streaming_enum Enumerator.new do |yielder| while (item = @queue.pop) event_type, data = item yielder << "event: #{event_type}\ndata: #{data}\n\n" end end end |