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 after_stream(&self, _request: &CompletionRequest, _latency: Duration) -> Result<()> {
29 Ok(())
30 }
31
32 async fn on_cache_hit(
34 &self,
35 _request: &CompletionRequest,
36 _response: &CompletionResponse,
37 ) -> Result<()> {
38 Ok(())
39 }
40
41 async fn on_error(
43 &self,
44 _request: &CompletionRequest,
45 _error: &SimpleAgentsError,
46 _latency: Duration,
47 ) -> Result<()> {
48 Ok(())
49 }
50
51 fn name(&self) -> &str {
53 "middleware"
54 }
55}