#[non_exhaustive]pub enum HookCallback {
PreTurn(Box<dyn Fn(&PreTurnContext) -> HookResult + 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) -> Option<String> + 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. Mirroring the SDK’s hook contracts:
PreTurn and PreToolCallDecide
are deciding hooks that return a HookResult to allow or deny the turn /
tool call; OnToolError is a transform hook that
returns the error representation the model should see (None = use the
harness’s default formatting); all other variants are fire-and-forget
observers.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
PreTurn(Box<dyn Fn(&PreTurnContext) -> HookResult + Send + Sync>)
Callback invoked before each agent turn.
Returns a HookResult so it can allow or deny the turn before the
model runs (SDK PreTurnHook, a DecideHook[Content]).
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) -> Option<String> + Send + Sync>)
Callback invoked when a tool call produces an error.
Returns the error representation the model should see, or None to let
the harness use its default error formatting (SDK OnToolErrorHook, a
TransformHook[Exception, Any]).
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.