Enum SessionUpdateEvent
pub enum SessionUpdateEvent {
AgentMessageChunk {
session_id: String,
text: String,
},
AgentThoughtChunk {
session_id: String,
text: String,
},
ToolCall {
session_id: String,
tool_call_id: String,
name: String,
raw_input: Value,
},
ToolResult {
session_id: String,
tool_call_id: String,
name: String,
raw_output: String,
},
ApprovalRequest {
session_id: String,
request_id: String,
tool_name: String,
arguments_summary: String,
timeout_secs: u64,
},
ContextUsage {
session_id: String,
input_tokens: Option<u64>,
input_tokens_source: Option<TokenCountSource>,
max_context_tokens: Option<u64>,
model_context_window: Option<u64>,
},
Plan {
session_id: String,
entries: Vec<PlanEntry>,
},
TurnComplete {
session_id: String,
outcome: TurnCompletionOutcome,
content: String,
client_turn_generation: Option<u64>,
message_count: Option<usize>,
safeguard_fallback: Option<SafeguardFallbackWire>,
usage: Option<Box<TurnUsageTotals>>,
},
BudgetWarning {
session_id: String,
current_usd: f64,
limit_usd: f64,
period: BudgetWarningPeriod,
},
HistoryTrimmed {
session_id: String,
dropped_messages: usize,
dropped_turns: usize,
kept_turns: usize,
reason: String,
token_budget: Option<u64>,
tokens_before: Option<u64>,
tokens_after: Option<u64>,
tokens_before_source: Option<TokenCountSource>,
tokens_after_source: Option<TokenCountSource>,
unsatisfiable_floor: Option<bool>,
},
}Expand description
Typed session update events pushed via session/update notifications.
Replaces the hand-built notification_for_turn_event function.
Variants§
AgentMessageChunk
AgentThoughtChunk
ToolCall
ToolResult
ApprovalRequest
Fields
ContextUsage
Per-LLM-call token usage. input_tokens is the cumulative context size
for this turn. max_context_tokens is the preemptive-trim budget (the
resolved effective_context_budget), preserving its original meaning as
the value the meter fills toward. model_context_window is the model’s
full context window (provider context_window), exposed distinctly so a
client can render capacity and budget separately. Any may be absent when
the provider doesn’t report usage or the value can’t be resolved.
input_tokens_source states where input_tokens came from. It is
provider for a provider-reported count and estimate when the
provider omitted usage and the runtime substituted a local estimate so
the meter still has a numerator. Clients should render an estimated
value as approximate. It is absent when input_tokens is absent.
Fields
input_tokens_source: Option<TokenCountSource>Plan
Emitted when the TodoWrite tool produces a plan. The entries array
carries the normalized PlanEntry values (content, status, priority,
optional activeForm) so the client can render the live tracker.
TurnComplete
Terminal event for a turn. Replaces the response of session/prompt.
outcome distinguishes a clean finish from a user-initiated cancel.
Fields
outcome: TurnCompletionOutcomecontent: StringFinal assistant text (Completed) or partial accumulated text at cancel point (Cancelled).
client_turn_generation: Option<u64>Optional client-local turn identity, echoed from session/prompt.
Absent for legacy callers that do not send one.
message_count: Option<usize>Authoritative projected conversation-entry count after this turn. Absent for legacy or missing-session terminal events.
safeguard_fallback: Option<SafeguardFallbackWire>Structured safeguard-fallback attribution for a completed turn.
content keeps its rendered footer for clients that predate this
field. Only model names cross the wire, never the classifier
category.
usage: Option<Box<TurnUsageTotals>>Token, cost, and context totals for the turn. Absent when the turn never reached a model call (refusals, missing sessions).
BudgetWarning
Recorded spend reached cost.warn_at_percent of a shared daily or
monthly limit. Non-blocking and at most once per turn; the turn
continues. period is "day" or "month".
HistoryTrimmed
Emitted whenever older whole turns were dropped from structured history
to fit a token budget or message cap. Surfaces a user-visible “context
was cut here” marker so trimming is never silent. dropped_messages is
the count of conversation messages removed; dropped_turns and
kept_turns describe the user-facing whole-turn accounting.
Fields
token_budget: Option<u64>Configured context token budget in effect at trim time. None for
message-limit trims, which carry no token accounting.
tokens_before_source: Option<TokenCountSource>Provenance of tokens_before (“provider”, “estimate”, “calibrated”).
tokens_after_source: Option<TokenCountSource>Provenance of tokens_after (“provider”, “estimate”, “calibrated”).
unsatisfiable_floor: Option<bool>The retained provider-facing request cannot be brought under the
configured budget (protected newest turn plus schemas). History MAY
have been trimmed on the way to that floor, so this flag — not
dropped_messages == 0 — is the authoritative “unsatisfiable”
signal. Absent for ordinary trims.
Trait Implementations§
Source§impl Clone for SessionUpdateEvent
impl Clone for SessionUpdateEvent
Source§fn clone(&self) -> SessionUpdateEvent
fn clone(&self) -> SessionUpdateEvent
1.0.0 (const: unstable) · §fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SessionUpdateEvent
impl Debug for SessionUpdateEvent
Source§impl<'de> Deserialize<'de> for SessionUpdateEvent
impl<'de> Deserialize<'de> for SessionUpdateEvent
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>,
Auto Trait Implementations§
impl Freeze for SessionUpdateEvent
impl RefUnwindSafe for SessionUpdateEvent
impl Send for SessionUpdateEvent
impl Sync for SessionUpdateEvent
impl Unpin for SessionUpdateEvent
impl UnsafeUnpin for SessionUpdateEvent
impl UnwindSafe for SessionUpdateEvent
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more