Skip to main content

drain_event_queue

Function drain_event_queue 

Source
pub fn drain_event_queue(
    queue: &EventQueue,
    messages: &mut Vec<Arc<Value>>,
    pending_events: &mut Vec<String>,
    busy: bool,
    steer_tx: Option<&UnboundedSender<String>>,
) -> Vec<DrainedEvent>
Expand description

Drain every event currently in queue.

For each event:

  • busy (streaming or compact running):
    • try to steer via steer_tx; on success → Steered
    • if no live channel → Buffered (pushed to pending_events)
  • idle: inject as a role=user SharedMessage → Injected

Formatting is always done via the existing format_event_for_agent so canonical output is produced in exactly one place.