Skip to main content

StreamEventMessage

Struct StreamEventMessage 

Source
pub struct StreamEventMessage {
    pub event: Value,
    pub parent_tool_use_id: Option<String>,
    pub uuid: String,
    pub session_id: String,
    pub ttft_ms: Option<u64>,
    pub user_message_uuid: Option<String>,
    pub user_message_uuids: Vec<String>,
    pub resume_reason: Option<String>,
    pub thinking_display: Option<String>,
    pub abandoned_blocks: Option<AbandonedBlocks>,
    pub api_message_id: Option<String>,
    pub text_runs_joined: Option<bool>,
}

Fields§

§event: Value§parent_tool_use_id: Option<String>§uuid: String§session_id: String§ttft_ms: Option<u64>§user_message_uuid: Option<String>

Client uuid of the user message that triggered this turn, stamped on the turn’s first non-ping stream event so a consumer can bind the reply stream to the send it answers. Since CLI 2.1.269 the turn’s first complete assistant message is stamped too, independently, so the same uuid may appear on both frames. Absent on later stream events, on synthetic/scheduled turns, and from CLIs before 2.1.259.

§user_message_uuids: Vec<String>

Client uuids of every user message whose prompt this turn has consumed so far, in consumption order. Always contains user_message_uuid; at most 64 entries. Present exactly when user_message_uuid is; absent from CLIs before 2.1.259 (fall back to user_message_uuid).

§resume_reason: Option<String>

Why this frame’s turn is the automatic re-run of a turn a worker restart interrupted: the host’s CLAUDE_CODE_RESUME_REASON when it set one, else interrupted_turn. Stamped on the same reply frames as user_message_uuid, so a consumer can tell the re-run’s first reply from the interrupted attempt’s. Absent on every other turn, on thinking_tokens frames, and from CLIs before 2.1.268.

§thinking_display: Option<String>

The thinking.display value Claude Code put in the API request body for the response this event belongs to — i.e. which display the thinking text was requested with, not how to show it. Set on message_start, on a thinking block’s content_block_start and on thinking_delta events when the request body had a display; absent on every other event, on Remote Control sessions and from CLIs before 2.1.283. Two responses of one turn can differ. Marked @internal upstream, so treat the value set as open.

§abandoned_blocks: Option<AbandonedBlocks>

Set on a message_stop that Claude Code produced itself after it stopped reading a response because the API’s stream failed, stalled or ended early: that response’s content blocks from AbandonedBlocks::from_block_index up have no assistant message and never will, so a consumer that drew them from stream events can remove them. Absent on every other message_stop, on Remote Control sessions and from CLIs before 2.1.292. Marked @internal upstream.

§api_message_id: Option<String>

The API’s id (msg_…) of the response this event belongs to: event.message.id on its message_start, message.id on its assistant messages. Not a message uuid. Set on every event from a response’s message_start to its message_stop, so a consumer that missed the message_start can still tell responses apart; a replayed message_start can make two responses share an id. Absent on pings, on Remote Control sessions, on some plugin-produced events and from CLIs before 2.1.295. An absent key states nothing about which response the event belongs to. Marked @internal upstream.

§text_runs_joined: Option<bool>

Always true when present. Set on a response’s message_start when CLAUDE_CODE_WEBSEARCH_CITATIONS is on in a non-interactive session: each run of adjacent text blocks then arrives as one assistant message with one joined text block, whose non-web_search_result_location citations carry span_start/span_end (Unicode code points, end exclusive) into the joined text. The content_block_* events still show each block by its own index. Absent from CLIs before 2.1.295. Marked @internal upstream.

Trait Implementations§

Source§

impl Clone for StreamEventMessage

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StreamEventMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for StreamEventMessage

Source§

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 Serialize for StreamEventMessage

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.