simple_agents_core/
middleware.rs1use async_trait::async_trait;
4use simple_agent_type::prelude::{
5 CompletionRequest, CompletionResponse, Result, SimpleAgentsError,
6};
7use std::time::Duration;
8
9#[async_trait]
11pub trait Middleware: Send + Sync {
12 async fn before_request(&self, _request: &CompletionRequest) -> Result<()> {
14 Ok(())
15 }
16
17 async fn after_response(
19 &self,
20 _request: &CompletionRequest,
21 _response: &CompletionResponse,
22 _latency: Duration,
23 ) -> Result<()> {
24 Ok(())
25 }
26
27 async fn on_cache_hit(
29 &self,
30 _request: &CompletionRequest,
31 _response: &CompletionResponse,
32 ) -> Result<()> {
33 Ok(())
34 }
35
36 async fn on_error(
38 &self,
39 _request: &CompletionRequest,
40 _error: &SimpleAgentsError,
41 _latency: Duration,
42 ) -> Result<()> {
43 Ok(())
44 }
45
46 fn name(&self) -> &str {
48 "middleware"
49 }
50}