Skip to main content

ReasoningItem

Enum ReasoningItem 

Source
pub enum ReasoningItem {
    Text {
        id: Option<String>,
        format: ReasoningFormat,
        index: Option<u32>,
        text: String,
        signature: Option<String>,
    },
    Summary {
        id: Option<String>,
        format: ReasoningFormat,
        index: Option<u32>,
        summary: String,
    },
    Encrypted {
        id: Option<String>,
        format: ReasoningFormat,
        index: Option<u32>,
        data: String,
    },
}
Expand description

One provider-emitted reasoning element.

Three variants cover every shape known across the major providers: readable reasoning text (with optional Anthropic-style signature), summary blurbs (OpenAI/Anthropic summaries), and fully-encrypted blobs (Gemini thoughtSignature, OpenAI encrypted_content, Anthropic redacted_thinking). Round-trip identity is the contract: every byte the provider emitted must come back unchanged on the next assistant message.

Variants§

§

Text

reasoning.text — visible reasoning content. The signature field is opaque and mandatory round-trip on providers that emit it (Anthropic).

Fields

§index: Option<u32>
§text: String
§signature: Option<String>
§

Summary

reasoning.summary — provider-emitted summary of internal reasoning; carries no signature, but still must replay verbatim to preserve token-cache continuity on some providers.

Fields

§index: Option<u32>
§summary: String
§

Encrypted

reasoning.encrypted — opaque base64 blob. Gemini’s thoughtSignature is delivered in this shape via OpenRouter; OpenAI’s encrypted_content and Anthropic’s redacted_thinking.data likewise. The bridge stores data byte-for-byte and the codec attaches it back to the right wire location for the originating provider.

Fields

§index: Option<u32>
§data: String

Implementations§

Source§

impl ReasoningItem

Source

pub fn format(&self) -> ReasoningFormat

Originating-provider tag.

Source

pub fn index(&self) -> Option<u32>

index if the provider supplied one. OpenRouter uses this to preserve order across heterogeneous variants when the provider emits text and encrypted blobs interleaved.

Source

pub fn carries_signed_payload(&self) -> bool

True iff this item carries a signature/encrypted payload the provider will reject if missing on replay. Used by ReasoningCodec to validate “did we receive what we need for the next turn?” without having to inspect the inner fields.

Source

pub fn from_openrouter_value(value: &Value) -> Option<Self>

Round-trip from a Value shaped exactly as OpenRouter’s reasoning_details[] item. Returns None if the input is not an object with a recognized type discriminator.

Source

pub fn to_openrouter_value(&self) -> Value

Serialize back to the OpenRouter wire shape. Round-trip fidelity: from_openrouter_value(v).unwrap().to_openrouter_value() == v for any well-formed input.

Trait Implementations§

Source§

impl Clone for ReasoningItem

Source§

fn clone(&self) -> ReasoningItem

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 ReasoningItem

Source§

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

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

impl<'de> Deserialize<'de> for ReasoningItem

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 PartialEq for ReasoningItem

Source§

fn eq(&self, other: &ReasoningItem) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for ReasoningItem

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
Source§

impl StructuralPartialEq for ReasoningItem

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

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