#[non_exhaustive]pub enum FinishReason {
NoMoreToolCalls,
BudgetExceeded,
ProviderStop(String),
Stuck {
repeated_call: String,
repeats: usize,
},
TranscriptLimit {
chars: usize,
limit: usize,
},
PlanPending,
}Expand description
Why the agent’s run terminated.
§Variants
NoMoreToolCalls: Model produced a response without tool calls (natural completion).BudgetExceeded: Ran out of steps (hitmax_steps). Agent likely unfinished.ProviderStop(reason): LLM provider stopped unexpectedly.reasonmay be “length” (truncated by token limit), “stop”/“end_turn”, or a provider-specific code.Stuck: Agent got stuck calling the same tool repeatedly with the same arguments.repeated_callis the tool name,repeatsis how many times before stopping.TranscriptLimit: Transcript size hitmax_transcript_charshard limit before compaction could reduce it further. Agent cannot continue.charsis final size,limitis the configured maximum.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
NoMoreToolCalls
Model generated final response without requesting more tools.
BudgetExceeded
Agent exceeded the maximum number of steps allowed.
ProviderStop(String)
LLM provider stopped with a specific reason or status code.
Stuck
Agent detected repeated identical tool calls (stuck loop).
TranscriptLimit
Transcript size exceeded hard limit and cannot be reduced further.
PlanPending
Agent proposed a plan (PlanFirst mode) and is waiting for confirmation.
Trait Implementations§
Source§impl Clone for FinishReason
impl Clone for FinishReason
Source§fn clone(&self) -> FinishReason
fn clone(&self) -> FinishReason
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for FinishReason
impl Debug for FinishReason
Source§impl<'de> Deserialize<'de> for FinishReason
impl<'de> Deserialize<'de> for FinishReason
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for FinishReason
impl PartialEq for FinishReason
Source§fn eq(&self, other: &FinishReason) -> bool
fn eq(&self, other: &FinishReason) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for FinishReason
impl Serialize for FinishReason
impl Eq for FinishReason
impl StructuralPartialEq for FinishReason
Auto Trait Implementations§
impl Freeze for FinishReason
impl RefUnwindSafe for FinishReason
impl Send for FinishReason
impl Sync for FinishReason
impl Unpin for FinishReason
impl UnsafeUnpin for FinishReason
impl UnwindSafe for FinishReason
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.