pub struct ThinkingMessageStream<'a, P: EventProducer<StateT>, StateT: AgentState = JsonValue> { /* private fields */ }Expand description
Helper for streaming thinking content (extended thinking / chain-of-thought).
This struct manages the lifecycle of streaming thinking content. Unlike
MessageStream, thinking messages don’t have IDs as they’re ephemeral.
§Example
ⓘ
let thinking = ThinkingMessageStream::start(&producer).await?;
thinking.content("Let me analyze this...").await?;
thinking.content("The key factors are...").await?;
thinking.end().await?;Implementations§
Source§impl<'a, P: EventProducer<StateT>, StateT: AgentState> ThinkingMessageStream<'a, P, StateT>
impl<'a, P: EventProducer<StateT>, StateT: AgentState> ThinkingMessageStream<'a, P, StateT>
Sourcepub async fn start(producer: &'a P) -> Result<Self, ServerError>
pub async fn start(producer: &'a P) -> Result<Self, ServerError>
Start a new thinking message stream.
Emits a ThinkingTextMessageStart event.
Sourcepub async fn content(&self, delta: impl Into<String>) -> Result<(), ServerError>
pub async fn content(&self, delta: impl Into<String>) -> Result<(), ServerError>
Append content to the thinking message.
Emits a ThinkingTextMessageContent event with the given delta.
Unlike regular messages, empty deltas are allowed for thinking content.
Sourcepub async fn end(self) -> Result<(), ServerError>
pub async fn end(self) -> Result<(), ServerError>
End the thinking message stream.
Emits a ThinkingTextMessageEnd event.
Consumes the stream to prevent further content being added.
Auto Trait Implementations§
impl<'a, P, StateT> Freeze for ThinkingMessageStream<'a, P, StateT>
impl<'a, P, StateT> RefUnwindSafe for ThinkingMessageStream<'a, P, StateT>where
P: RefUnwindSafe,
StateT: RefUnwindSafe,
impl<'a, P, StateT> Send for ThinkingMessageStream<'a, P, StateT>
impl<'a, P, StateT> Sync for ThinkingMessageStream<'a, P, StateT>
impl<'a, P, StateT> Unpin for ThinkingMessageStream<'a, P, StateT>where
StateT: Unpin,
impl<'a, P, StateT> UnsafeUnpin for ThinkingMessageStream<'a, P, StateT>
impl<'a, P, StateT> UnwindSafe for ThinkingMessageStream<'a, P, StateT>where
P: RefUnwindSafe,
StateT: UnwindSafe,
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