pub struct LoopDetector { /* private fields */ }Expand description
Tracks repeated tool calls within a time window to detect and throttle agent loops.
Implementations§
Source§impl LoopDetector
impl LoopDetector
Sourcepub fn with_config(cfg: &LoopDetectionConfig) -> Self
pub fn with_config(cfg: &LoopDetectionConfig) -> Self
Creates a loop detector with custom thresholds from config.
Sourcepub fn record_call(
&mut self,
tool: &str,
args_fingerprint: &str,
) -> ThrottleResult
pub fn record_call( &mut self, tool: &str, args_fingerprint: &str, ) -> ThrottleResult
Records a tool call and returns the throttle result based on repetition count.
Sourcepub fn record_search(
&mut self,
tool: &str,
args_fingerprint: &str,
search_pattern: Option<&str>,
) -> ThrottleResult
pub fn record_search( &mut self, tool: &str, args_fingerprint: &str, search_pattern: Option<&str>, ) -> ThrottleResult
Record a search-category call and check the cross-tool search group limit.
search_pattern is the extracted query/regex the agent is looking for (if available).
Sourcepub fn is_search_tool(tool: &str) -> bool
pub fn is_search_tool(tool: &str) -> bool
Returns true if the tool name is a known search tool (ctx_search, etc.).
Sourcepub fn is_search_shell_command(command: &str) -> bool
pub fn is_search_shell_command(command: &str) -> bool
Returns true if the shell command starts with a search tool (grep, rg, find, etc.).
Sourcepub fn fingerprint(args: &Value) -> String
pub fn fingerprint(args: &Value) -> String
Computes a deterministic hash fingerprint of JSON tool arguments.
Trait Implementations§
Source§impl Clone for LoopDetector
impl Clone for LoopDetector
Source§fn clone(&self) -> LoopDetector
fn clone(&self) -> LoopDetector
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for LoopDetector
impl Debug for LoopDetector
Auto Trait Implementations§
impl Freeze for LoopDetector
impl RefUnwindSafe for LoopDetector
impl Send for LoopDetector
impl Sync for LoopDetector
impl Unpin for LoopDetector
impl UnsafeUnpin for LoopDetector
impl UnwindSafe for LoopDetector
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
Mutably borrows from an owned value. Read more
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>
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 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>
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