#[non_exhaustive]#[repr(u8)]pub enum ContentTrustLevel {
Trusted = 0,
LocalUntrusted = 1,
ExternalUntrusted = 2,
}Expand description
Trust tier assigned to content entering the agent context.
Drives spotlighting intensity: Trusted content passes
through unchanged; ExternalUntrusted receives
the strongest warning header.
The tier is typically derived automatically from ContentSourceKind::default_trust_level,
but can be overridden via ContentSource::with_trust_level when the call-site has
more context about the actual origin of the content.
§Examples
use zeph_sanitizer::{ContentTrustLevel, ContentSource, ContentSourceKind};
// Web scrapes default to the strongest warning level.
let source = ContentSource::new(ContentSourceKind::WebScrape);
assert_eq!(source.trust_level, ContentTrustLevel::ExternalUntrusted);
// Trust level can be overridden.
let elevated = source.with_trust_level(ContentTrustLevel::Trusted);
assert_eq!(elevated.trust_level, ContentTrustLevel::Trusted);Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Trusted = 0
System prompt, hardcoded instructions, direct user input. No wrapping applied.
LocalUntrusted = 1
Tool results from local executors (shell, file I/O). Lighter warning.
ExternalUntrusted = 2
External sources: web scrape, MCP, A2A, memory retrieval. Strongest warning.
Implementations§
Source§impl ContentTrustLevel
impl ContentTrustLevel
Sourcepub fn as_str(self) -> &'static str
pub fn as_str(self) -> &'static str
Returns the snake_case identifier string for this trust level.
Used for SQLite/Qdrant persistence (issue #6490 write-time provenance tagging),
mirroring ContentSourceKind::as_str.
§Examples
use zeph_sanitizer::ContentTrustLevel;
assert_eq!(ContentTrustLevel::Trusted.as_str(), "trusted");
assert_eq!(ContentTrustLevel::ExternalUntrusted.as_str(), "external_untrusted");Sourcepub fn from_str_opt(s: &str) -> Option<ContentTrustLevel>
pub fn from_str_opt(s: &str) -> Option<ContentTrustLevel>
Parse a &str into a ContentTrustLevel.
Returns None for unrecognized strings so callers can fall back to a conservative
default and log a warning instead of failing deserialization.
§Examples
use zeph_sanitizer::ContentTrustLevel;
assert_eq!(ContentTrustLevel::from_str_opt("local_untrusted"), Some(ContentTrustLevel::LocalUntrusted));
assert_eq!(ContentTrustLevel::from_str_opt("unknown"), None);Sourcepub fn from_ordinal(ordinal: u8) -> ContentTrustLevel
pub fn from_ordinal(ordinal: u8) -> ContentTrustLevel
Reconstruct from the u8 discriminant.
Used by turn-scoped trust-tier trackers (issue #6490) that store the tier as a bare
u8 in a lock-free slot (AtomicU8/RwLock<u8>) for cheap ratcheting via
fetch_max/max. Values ≥ 2 saturate to ExternalUntrusted
(the most conservative tier) rather than panicking, so a slot value from a future added
variant fails safe instead of undefined behavior.
§Examples
use zeph_sanitizer::ContentTrustLevel;
assert_eq!(ContentTrustLevel::from_ordinal(0), ContentTrustLevel::Trusted);
assert_eq!(ContentTrustLevel::from_ordinal(2), ContentTrustLevel::ExternalUntrusted);
assert_eq!(ContentTrustLevel::from_ordinal(255), ContentTrustLevel::ExternalUntrusted);Trait Implementations§
Source§impl Clone for ContentTrustLevel
impl Clone for ContentTrustLevel
Source§fn clone(&self) -> ContentTrustLevel
fn clone(&self) -> ContentTrustLevel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ContentTrustLevel
Source§impl Debug for ContentTrustLevel
impl Debug for ContentTrustLevel
Source§impl<'de> Deserialize<'de> for ContentTrustLevel
impl<'de> Deserialize<'de> for ContentTrustLevel
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ContentTrustLevel, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ContentTrustLevel, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for ContentTrustLevel
Source§impl Hash for ContentTrustLevel
impl Hash for ContentTrustLevel
Source§impl Ord for ContentTrustLevel
impl Ord for ContentTrustLevel
Source§fn cmp(&self, other: &ContentTrustLevel) -> Ordering
fn cmp(&self, other: &ContentTrustLevel) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for ContentTrustLevel
impl PartialEq for ContentTrustLevel
Source§impl PartialOrd for ContentTrustLevel
impl PartialOrd for ContentTrustLevel
Source§impl Serialize for ContentTrustLevel
impl Serialize for ContentTrustLevel
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for ContentTrustLevel
Auto Trait Implementations§
impl Freeze for ContentTrustLevel
impl RefUnwindSafe for ContentTrustLevel
impl Send for ContentTrustLevel
impl Sync for ContentTrustLevel
impl Unpin for ContentTrustLevel
impl UnsafeUnpin for ContentTrustLevel
impl UnwindSafe for ContentTrustLevel
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,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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> 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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request