pub struct LoopState {Show 20 fields
pub iteration: u32,
pub consecutive_failures: u32,
pub cumulative_cost: f64,
pub started_at: Instant,
pub last_hat: Option<HatId>,
pub consecutive_blocked: u32,
pub last_blocked_hat: Option<HatId>,
pub task_block_counts: HashMap<String, u32>,
pub abandoned_tasks: Vec<String>,
pub abandoned_task_redispatches: u32,
pub consecutive_malformed_events: u32,
pub completion_requested: bool,
pub hat_activation_counts: HashMap<HatId, u32>,
pub exhausted_hats: HashSet<HatId>,
pub last_checkin_at: Option<Instant>,
pub last_active_hat_ids: Vec<HatId>,
pub seen_topics: HashSet<String>,
pub last_emitted_signature: Option<EventSignature>,
pub consecutive_same_signature: u32,
pub cancellation_requested: bool,
}Expand description
Current state of the event loop.
Fields§
§iteration: u32Current iteration number (1-indexed).
consecutive_failures: u32Number of consecutive failures.
cumulative_cost: f64Cumulative cost in USD (if tracked).
started_at: InstantWhen the loop started.
last_hat: Option<HatId>The last hat that executed.
consecutive_blocked: u32Consecutive blocked events from the same hat.
last_blocked_hat: Option<HatId>Hat that emitted the last blocked event.
task_block_counts: HashMap<String, u32>Per-task block counts for task-level thrashing detection.
abandoned_tasks: Vec<String>Tasks that have been abandoned after 3+ blocks.
abandoned_task_redispatches: u32Count of times planner dispatched an already-abandoned task.
consecutive_malformed_events: u32Consecutive malformed JSONL lines encountered (for validation backpressure).
completion_requested: boolWhether a completion event has been observed in JSONL.
hat_activation_counts: HashMap<HatId, u32>Per-hat activation counts (used for max_activations).
exhausted_hats: HashSet<HatId>Hats for which <hat_id>.exhausted has been emitted.
last_checkin_at: Option<Instant>When the last Telegram check-in message was sent.
None means no check-in has been sent yet.
last_active_hat_ids: Vec<HatId>Hat IDs that were active in the last iteration.
Used to inject default_publishes when agent writes no events.
seen_topics: HashSet<String>Topics seen during the loop’s lifetime (for event chain validation).
last_emitted_signature: Option<EventSignature>The last event signature emitted (for stale loop detection).
consecutive_same_signature: u32Consecutive times the same event signature was emitted (for stale loop detection).
cancellation_requested: boolSet to true when a loop.cancel event is detected.
Implementations§
Source§impl LoopState
impl LoopState
Sourcepub fn record_event(&mut self, event: &Event)
pub fn record_event(&mut self, event: &Event)
Record that an event has been seen during this loop run.
Also tracks consecutive same-signature emissions for stale loop detection.
Sourcepub fn missing_required_events<'a>(
&self,
required: &'a [String],
) -> Vec<&'a String>
pub fn missing_required_events<'a>( &self, required: &'a [String], ) -> Vec<&'a String>
Check if all required topics have been seen.