pub struct Event {
pub kind: String,
pub trust: TrustTag,
pub payload: Vec<u8>,
}Expand description
A single conversation event: a kind tag, a TrustTag provenance
capability, and an opaque encoded payload.
kind is a short string discriminator (e.g. "user_msg",
"planner_decision", "tool_call"). payload is opaque to this crate —
it is the buffa-encoded body of whichever events.proto message the kind
names, stored and replayed byte-for-byte. trust is the CaMeL-style trust
tag assigned at ingress (see TrustTag); it travels with the event
through the durable log so a data-flow policy can reason over provenance
without re-decoding payloads.
The position (turn/seq ordering) is not carried in the event itself: the journal assigns each appended event a monotonically increasing position, and the physical journal adapter yields events in that append order. See the adapter’s documentation for the ordering contract.
Fields§
§kind: StringDiscriminator naming the payload’s schema (e.g. "tool_call").
trust: TrustTagProvenance/trust capability assigned at ingress.
payload: Vec<u8>Opaque, buffa-encoded payload bytes. Round-tripped verbatim.
Implementations§
Source§impl Event
impl Event
Sourcepub fn new(kind: impl Into<String>, payload: Vec<u8>) -> Self
pub fn new(kind: impl Into<String>, payload: Vec<u8>) -> Self
Construct an unclassified (TrustTag::Unspecified) event from a
kind and an owned payload — for control/marker events that carry no
external content provenance.
Sourcepub fn trusted(kind: impl Into<String>, payload: Vec<u8>) -> Self
pub fn trusted(kind: impl Into<String>, payload: Vec<u8>) -> Self
Construct a TrustTag::TrustedUser event — an authenticated
principal’s own message.
Sourcepub fn quarantined(kind: impl Into<String>, payload: Vec<u8>) -> Self
pub fn quarantined(kind: impl Into<String>, payload: Vec<u8>) -> Self
Construct a TrustTag::QuarantinedContent event — tool output,
fetched content, or otherwise untrusted inbound content.
Trait Implementations§
Source§impl EncodeSize for Event
impl EncodeSize for Event
Source§fn encode_size(&self) -> usize
fn encode_size(&self) -> usize
Source§fn encode_inline_size(&self) -> usize
fn encode_inline_size(&self) -> usize
BufsMut::push
during Write::write_bufs. Used to size the working buffer for inline
writes. Override alongside Write::write_bufs for types where large
Bytes fields go via push; failing to do so will over-allocate.impl Eq for Event
Source§impl Read for Event
impl Read for Event
impl StructuralPartialEq for Event
Source§impl Write for Event
impl Write for Event
Source§fn write_bufs(&self, buf: &mut impl BufsMut)
fn write_bufs(&self, buf: &mut impl BufsMut)
BufsMut, allowing existing Bytes chunks to be
appended via BufsMut::push instead of written inline. Must encode
to the same format as Write::write. Defaults to Write::write.Auto Trait Implementations§
impl Freeze for Event
impl RefUnwindSafe for Event
impl Send for Event
impl Sync for Event
impl Unpin for Event
impl UnsafeUnpin for Event
impl UnwindSafe for Event
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
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> Codec for T
Source§impl<T> Encode for Twhere
T: Write + EncodeSize,
impl<T> Encode for Twhere
T: Write + EncodeSize,
Source§impl<T> EncodeExt for Twhere
T: EncodeSize + Write,
impl<T> EncodeExt for Twhere
T: EncodeSize + Write,
Source§fn encode_with_pool_mut(&self, pool: &BufferPool) -> IoBufMut
fn encode_with_pool_mut(&self, pool: &BufferPool) -> IoBufMut
Source§fn encode_with_pool(&self, pool: &BufferPool) -> IoBufs
fn encode_with_pool(&self, pool: &BufferPool) -> IoBufs
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> 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