#[non_exhaustive]pub enum ProviderEvent {
Show 14 variants
Start {
partial: Arc<AssistantMessage>,
},
TextStart {
content_index: usize,
partial: Arc<AssistantMessage>,
},
TextDelta {
content_index: usize,
delta: String,
partial: Arc<AssistantMessage>,
},
TextEnd {
content_index: usize,
content: String,
partial: Arc<AssistantMessage>,
},
ThinkingStart {
content_index: usize,
partial: Arc<AssistantMessage>,
},
ThinkingDelta {
content_index: usize,
delta: String,
partial: Arc<AssistantMessage>,
},
ThinkingEnd {
content_index: usize,
content: String,
partial: Arc<AssistantMessage>,
},
ToolCallStart {
content_index: usize,
tool_call_id: Option<String>,
tool_name: Option<String>,
partial: Arc<AssistantMessage>,
},
ToolCallDelta {
content_index: usize,
delta: String,
partial: Arc<AssistantMessage>,
},
ToolCallEnd {
content_index: usize,
tool_call: ToolCall,
partial: Arc<AssistantMessage>,
},
Done {
reason: StopReason,
message: AssistantMessage,
},
Error {
reason: StopReason,
error: AssistantMessage,
},
FallbackStart {
from_model: String,
to_model: String,
reason: FallbackReason,
},
FallbackExhausted {
models_tried: Vec<String>,
final_error: String,
},
}Expand description
Provider trait, streaming options, and provider registry. Streaming events emitted by providers
Note: We use crate::AssistantMessage directly to avoid type alias conflicts
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Start
Stream started with partial assistant message.
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
TextStart
Text content block started.
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
TextDelta
Incremental text delta received.
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
TextEnd
Text content block finished.
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
ThinkingStart
Thinking content block started.
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
ThinkingDelta
Incremental thinking delta received.
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
ThinkingEnd
Thinking content block finished.
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
ToolCallStart
Tool call block started.
Fields
tool_call_id: Option<String>The tool call ID from the provider, if available at start time.
Providers that only surface the ID later (in deltas/end) leave this None.
partial: Arc<AssistantMessage>Partial assistant message state.
ToolCallDelta
Tool call delta received (partial JSON arguments).
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
ToolCallEnd
Tool call block finished.
Fields
partial: Arc<AssistantMessage>Partial assistant message state.
Done
Stream completed successfully.
Fields
reason: StopReasonWhy the model stopped generating.
message: AssistantMessageThe final assistant message.
Error
Stream ended with an error.
Fields
reason: StopReasonThe stop reason at time of error.
error: AssistantMessageError details in assistant message form.
FallbackStart
Model fallback occurred — primary model replaced by fallback.
Emitted by MultiProvider when it switches from one model to another
in the candidate list due to errors, circuit breaker opens, etc.
Fields
reason: FallbackReasonReason for the fallback.
FallbackExhausted
Fallback chain exhausted — all models failed.
Emitted by MultiProvider when all candidates in the fallback chain
have been exhausted without success.
Implementations§
Source§impl ProviderEvent
impl ProviderEvent
Sourcepub fn partial(&self) -> Option<&AssistantMessage>
pub fn partial(&self) -> Option<&AssistantMessage>
Extract the partial assistant message if present
Sourcepub fn is_fallback(&self) -> bool
pub fn is_fallback(&self) -> bool
Check if this is a fallback event
Sourcepub fn is_fallback_exhausted(&self) -> bool
pub fn is_fallback_exhausted(&self) -> bool
Check if this is a fallback exhausted event
Trait Implementations§
Source§impl Clone for ProviderEvent
impl Clone for ProviderEvent
Source§fn clone(&self) -> ProviderEvent
fn clone(&self) -> ProviderEvent
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more