1use crate::provider::{GenerationRequest, GenerationResponse};
2use std::sync::Arc;
3
4pub trait EngineObserver: Send + Sync {
6 fn on_start(&self, id: &str, template: &str, slot: &str, request: &GenerationRequest);
8
9 fn on_success(&self, id: &str, response: &GenerationResponse);
11
12 fn on_healing_step(&self, id: &str, attempt: u32, error: &str);
14
15 fn on_failure(&self, id: &str, error: &str);
17
18 fn on_metadata(&self, _id: &str, _key: &str, _value: serde_json::Value) {}
20}
21
22pub type ObserverPtr = Arc<dyn EngineObserver>;