pub type AppResult = miette::Result<Option<u8>>;
#[async_trait::async_trait]
pub trait AppSession: Clone + Send + Sync {
async fn startup(&mut self) -> AppResult {
Ok(None)
}
async fn analyze(&mut self) -> AppResult {
Ok(None)
}
async fn execute(&mut self) -> AppResult {
Ok(None)
}
async fn shutdown(&mut self) -> AppResult {
Ok(None)
}
}