Skip to main content

simple_agents_core/
middleware.rs

1//! Middleware hooks for SimpleAgents core.
2
3use async_trait::async_trait;
4use simple_agent_type::prelude::{
5    CompletionRequest, CompletionResponse, Result, SimpleAgentsError,
6};
7use std::time::Duration;
8
9/// Middleware hooks for request lifecycle events.
10#[async_trait]
11pub trait Middleware: Send + Sync {
12    /// Called before a request is executed.
13    async fn before_request(&self, _request: &CompletionRequest) -> Result<()> {
14        Ok(())
15    }
16
17    /// Called after a response is received.
18    async fn after_response(
19        &self,
20        _request: &CompletionRequest,
21        _response: &CompletionResponse,
22        _latency: Duration,
23    ) -> Result<()> {
24        Ok(())
25    }
26
27    /// Called when a response is served from cache.
28    async fn on_cache_hit(
29        &self,
30        _request: &CompletionRequest,
31        _response: &CompletionResponse,
32    ) -> Result<()> {
33        Ok(())
34    }
35
36    /// Called when a request fails.
37    async fn on_error(
38        &self,
39        _request: &CompletionRequest,
40        _error: &SimpleAgentsError,
41        _latency: Duration,
42    ) -> Result<()> {
43        Ok(())
44    }
45
46    /// Middleware name for diagnostics.
47    fn name(&self) -> &str {
48        "middleware"
49    }
50}