Skip to main content

Message

Struct Message 

Source
pub struct Message {
    pub role: String,
    pub content: String,
    pub id: Option<String>,
    pub source_id: Option<String>,
    pub inserted_by: Option<ContextInsertion>,
}

Fields§

§role: String§content: String§id: Option<String>

Stable identity for this message, minted by the runtime as msg_ followed by a uuid-v7 simple form. A uuid-v7 carries its own millisecond timestamp, so there is no separate created-at field to keep in step with it.

This is not a content hash. An id must never repeat, even for two messages whose content is byte-identical; a content hash must repeat whenever the content does. The two answer different questions and are never interchangeable.

Stripped before the wire payload is built — see the note on source-id. Minted once, at the message’s creation site, and preserved everywhere after: an id on a message a hook hands back is kept, and so is the id a message reloaded from the conversation record carries. The runtime mints one only for a message that arrives without one.

§source_id: Option<String>

Opaque join key back to whatever produced this content — a corpus record, a compaction summary, reloaded history. Recorded verbatim and never parsed, exactly like resource-id in tool metadata: the runtime makes no claim about its shape and reads no meaning out of it.

Both id and source-id are stripped before the driver wire payload is built. A uuid sitting at the head of a cached prefix is volatile content, and would defeat provider prompt-prefix caching on every request. A source-id a hook supplies is carried verbatim; the key is absent when the hook supplied none.

§inserted_by: Option<ContextInsertion>

Which hook output put this message into the conversation. Set only by the runtime, at the moment it commits that output, and read from the conversation record wherever the message is served back.

none means no hook output inserted the message: it is a person’s or a delegating caller’s task message, a model turn, a tool result, or a runtime marker, and role tells those apart. The mark is independent of role, so a summary returned as "assistant" or "user" carries it all the same.

A message a hook hands back unchanged keeps the mark it already had: its id names a message in the context the hook was handed, and its role and content equal that message’s. Any other message a hook returns is marked with the output it came in through. A value a hook sets on a message it returns is ignored.

Stripped before the driver wire payload is built, like id and source-id.

Trait Implementations§

Source§

impl Clone for Message

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 ComponentType for Message

Source§

impl Debug for Message

Source§

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

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

impl Lift for Message

Source§

impl Lower for Message

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
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