synaptic_condenser/
middleware.rs1use std::sync::Arc;
2
3use async_trait::async_trait;
4use synaptic_core::SynapticError;
5use synaptic_middleware::{AgentMiddleware, ModelRequest};
6
7use crate::Condenser;
8
9pub struct CondenserMiddleware {
11 condenser: Arc<dyn Condenser>,
12}
13
14impl CondenserMiddleware {
15 pub fn new(condenser: Arc<dyn Condenser>) -> Self {
16 Self { condenser }
17 }
18}
19
20#[async_trait]
21impl AgentMiddleware for CondenserMiddleware {
22 async fn before_model(&self, request: &mut ModelRequest) -> Result<(), SynapticError> {
23 request.messages = self.condenser.condense(request.messages.clone()).await?;
24 Ok(())
25 }
26}