pub struct DeepSummarizationMiddleware { /* private fields */ }Expand description
Middleware that auto-summarizes conversation history when approaching the token limit.
Before each model call, estimates the token count. If it exceeds
max_input_tokens * threshold_fraction, older messages are summarized by the model
and the full history is offloaded to a file in the backend.
Implementations§
Trait Implementations§
Source§impl AgentMiddleware for DeepSummarizationMiddleware
impl AgentMiddleware for DeepSummarizationMiddleware
Source§fn before_model<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 mut ModelRequest,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before_model<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 mut ModelRequest,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called before each model invocation. Can modify the request.
Source§fn before_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 mut Vec<Message>,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn before_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 mut Vec<Message>,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Called once when the agent starts executing.
Source§fn after_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 mut Vec<Message>,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn after_agent<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 mut Vec<Message>,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Called once when the agent finishes executing.
Source§fn after_model<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_request: &'life1 ModelRequest,
_response: &'life2 mut ModelResponse,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn after_model<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_request: &'life1 ModelRequest,
_response: &'life2 mut ModelResponse,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Called after each model invocation. Can modify the response.
Source§fn wrap_model_call<'life0, 'life1, 'async_trait>(
&'life0 self,
request: ModelRequest,
next: &'life1 dyn ModelCaller,
) -> Pin<Box<dyn Future<Output = Result<ModelResponse, SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn wrap_model_call<'life0, 'life1, 'async_trait>(
&'life0 self,
request: ModelRequest,
next: &'life1 dyn ModelCaller,
) -> Pin<Box<dyn Future<Output = Result<ModelResponse, SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Wraps the model call. Override to intercept or replace the model invocation.
Source§fn wrap_tool_call<'life0, 'life1, 'async_trait>(
&'life0 self,
request: ToolCallRequest,
next: &'life1 dyn ToolCaller,
) -> Pin<Box<dyn Future<Output = Result<Value, SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn wrap_tool_call<'life0, 'life1, 'async_trait>(
&'life0 self,
request: ToolCallRequest,
next: &'life1 dyn ToolCaller,
) -> Pin<Box<dyn Future<Output = Result<Value, SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Wraps a tool call. Override to intercept or replace tool execution.
Source§fn before_file_op<'life0, 'life1, 'async_trait>(
&'life0 self,
_op: &'life1 FileOp,
) -> Pin<Box<dyn Future<Output = Result<FileOpDecision, SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn before_file_op<'life0, 'life1, 'async_trait>(
&'life0 self,
_op: &'life1 FileOp,
) -> Pin<Box<dyn Future<Output = Result<FileOpDecision, SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Called before a file operation. Return
Deny to block it.Source§fn after_file_op<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_op: &'life1 FileOp,
_result: &'life2 FileOpResult,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn after_file_op<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_op: &'life1 FileOp,
_result: &'life2 FileOpResult,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Called after a file operation completes.
Source§fn before_command<'life0, 'life1, 'async_trait>(
&'life0 self,
_cmd: &'life1 CommandOp,
) -> Pin<Box<dyn Future<Output = Result<CommandDecision, SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn before_command<'life0, 'life1, 'async_trait>(
&'life0 self,
_cmd: &'life1 CommandOp,
) -> Pin<Box<dyn Future<Output = Result<CommandDecision, SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Called before a shell command. Return
Deny to block it.Source§fn after_command<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_cmd: &'life1 CommandOp,
_result: &'life2 CommandResult,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn after_command<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_cmd: &'life1 CommandOp,
_result: &'life2 CommandResult,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Called after a shell command completes.
Auto Trait Implementations§
impl !Freeze for DeepSummarizationMiddleware
impl !RefUnwindSafe for DeepSummarizationMiddleware
impl Send for DeepSummarizationMiddleware
impl Sync for DeepSummarizationMiddleware
impl Unpin for DeepSummarizationMiddleware
impl UnsafeUnpin for DeepSummarizationMiddleware
impl !UnwindSafe for DeepSummarizationMiddleware
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more