#[non_exhaustive]pub enum HandlerEvent {
SessionEvent {
session_id: SessionId,
event: SessionEvent,
},
PermissionRequest {
session_id: SessionId,
request_id: RequestId,
data: PermissionRequestData,
},
UserInput {
session_id: SessionId,
question: String,
choices: Option<Vec<String>>,
allow_freeform: Option<bool>,
},
ExternalTool {
invocation: ToolInvocation,
},
ElicitationRequest {
session_id: SessionId,
request_id: RequestId,
request: ElicitationRequest,
},
ExitPlanMode {
session_id: SessionId,
data: ExitPlanModeData,
},
AutoModeSwitch {
session_id: SessionId,
error_code: Option<String>,
retry_after_seconds: Option<u64>,
},
}Expand description
Events dispatched by the SDK session event loop to the handler.
The handler returns a HandlerResponse indicating how the SDK should
respond to the CLI. For fire-and-forget events (SessionEvent), the
response is ignored.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
SessionEvent
Informational session event from the timeline (e.g. assistant.message_delta,
session.idle, tool.execution_start). Fire-and-forget — return HandlerResponse::Ok.
Fields
event: SessionEventThe event payload.
PermissionRequest
The CLI requests permission for an action. Return HandlerResponse::Permission(..).
Fields
data: PermissionRequestDataPermission request payload.
UserInput
The CLI requests user input. Return HandlerResponse::UserInput(..).
The handler may block (e.g. awaiting a UI dialog) — this is expected.
Fields
ExternalTool
The CLI requests execution of a client-defined tool.
Return HandlerResponse::ToolResult(..).
Fields
invocation: ToolInvocationThe tool call to execute.
ElicitationRequest
The CLI broadcasts an elicitation request for the provider to handle.
Return HandlerResponse::Elicitation(..).
Fields
request: ElicitationRequestThe elicitation request payload.
ExitPlanMode
The CLI requests exiting plan mode. Return HandlerResponse::ExitPlanMode(..).
AutoModeSwitch
The CLI asks whether to switch to auto model when an eligible rate
limit is hit. Return HandlerResponse::AutoModeSwitch.