pub struct ShadowEventStore { /* private fields */ }Expand description
Persistent storage for the safety shadow event stream.
Thin wrapper around DbPool for the safety_shadow_events table.
Methods are async and return typed errors.
Implementations§
Source§impl ShadowEventStore
impl ShadowEventStore
Sourcepub async fn record(&self, event: &SentinelEvent) -> Result<(), AgentError>
pub async fn record(&self, event: &SentinelEvent) -> Result<(), AgentError>
Persist a shadow event to the database.
The id field of the event is ignored; the database assigns a new row id.
§Errors
Returns AgentError on database failure.
Sourcepub async fn get_trajectory(
&self,
session_id: &str,
limit: usize,
) -> Result<Vec<SentinelEvent>, AgentError>
pub async fn get_trajectory( &self, session_id: &str, limit: usize, ) -> Result<Vec<SentinelEvent>, AgentError>
Retrieve the last limit events for a session in ascending time order.
Used to build the trajectory context for probe evaluation.
§Errors
Returns AgentError on database failure.
Sourcepub async fn get_tool_history(
&self,
tool_id: &str,
exclude_session_id: &str,
limit: usize,
) -> Result<Vec<SentinelEvent>, AgentError>
pub async fn get_tool_history( &self, tool_id: &str, exclude_session_id: &str, limit: usize, ) -> Result<Vec<SentinelEvent>, AgentError>
Retrieve the last limit events for a specific tool from sessions OTHER than
exclude_session_id.
Used for cross-session pattern detection. The exclusion is applied in SQL (not just
filtered client-side afterward) so that a session with heavy recent activity for
tool_id cannot crowd its own rows into the LIMIT clip and starve genuinely
cross-session rows out of the result.
§Errors
Returns AgentError on database failure.
Trait Implementations§
Source§impl Clone for ShadowEventStore
impl Clone for ShadowEventStore
Source§fn clone(&self) -> ShadowEventStore
fn clone(&self) -> ShadowEventStore
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for ShadowEventStore
impl !UnwindSafe for ShadowEventStore
impl Freeze for ShadowEventStore
impl Send for ShadowEventStore
impl Sync for ShadowEventStore
impl Unpin for ShadowEventStore
impl UnsafeUnpin for ShadowEventStore
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<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