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