#[non_exhaustive]pub enum HookCallback {
PreTurn(Box<dyn Fn(&PreTurnContext) + Send + Sync>),
PostTurn(Box<dyn Fn(&PostTurnContext) + Send + Sync>),
PreToolCallDecide(Box<dyn Fn(&PreToolCallDecideContext) -> HookResult + Send + Sync>),
PostToolCall(Box<dyn Fn(&PostToolCallContext) + Send + Sync>),
OnToolError(Box<dyn Fn(&OnToolErrorContext) + Send + Sync>),
OnSessionStart(Box<dyn Fn(&OnSessionStartContext) + Send + Sync>),
OnSessionEnd(Box<dyn Fn(&OnSessionEndContext) + Send + Sync>),
OnCompaction(Box<dyn Fn(&OnCompactionContext) + Send + Sync>),
OnInteraction(Box<dyn Fn(&OnInteractionContext) -> HookResult + Send + Sync>),
TransformToolInput(Box<dyn Fn(&PreToolCallDecideContext) -> Option<Value> + Send + Sync>),
}Expand description
A registered hook callback, keyed by hook point.
Each variant wraps a boxed closure that receives the strongly-typed context
for that hook point. PreToolCallDecide returns
a HookResult so it can approve or deny tool execution; all other
variants are fire-and-forget observers.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
PreTurn(Box<dyn Fn(&PreTurnContext) + Send + Sync>)
Callback invoked before each agent turn.
PostTurn(Box<dyn Fn(&PostTurnContext) + Send + Sync>)
Callback invoked after each agent turn completes.
PreToolCallDecide(Box<dyn Fn(&PreToolCallDecideContext) -> HookResult + Send + Sync>)
Callback invoked before deciding whether to execute a tool call.
PostToolCall(Box<dyn Fn(&PostToolCallContext) + Send + Sync>)
Callback invoked after a tool call completes.
OnToolError(Box<dyn Fn(&OnToolErrorContext) + Send + Sync>)
Callback invoked when a tool call produces an error.
OnSessionStart(Box<dyn Fn(&OnSessionStartContext) + Send + Sync>)
Callback invoked when a new agent session begins.
OnSessionEnd(Box<dyn Fn(&OnSessionEndContext) + Send + Sync>)
Callback invoked when an agent session ends.
OnCompaction(Box<dyn Fn(&OnCompactionContext) + Send + Sync>)
Callback invoked when conversation history is compacted.
OnInteraction(Box<dyn Fn(&OnInteractionContext) -> HookResult + Send + Sync>)
Callback invoked on each interaction event.
TransformToolInput(Box<dyn Fn(&PreToolCallDecideContext) -> Option<Value> + Send + Sync>)
Transform tool input arguments before execution.
The closure receives the pre-tool-call context and may return
Some(new_args) to replace the tool arguments, or None to
leave them unchanged. Multiple transform hooks are applied
sequentially — each receives the (possibly already-modified)
arguments from the previous transform.