pub struct CompositionTracker { /* private fields */ }Expand description
Tracks tool dispatch sequences and discovers composition patterns.
Thread-safe via internal mutex (call recording is fast, analysis is done on demand).
Implementations§
Source§impl CompositionTracker
impl CompositionTracker
Sourcepub fn new(config: CompositionConfig) -> Self
pub fn new(config: CompositionConfig) -> Self
Create a new composition tracker with the given config.
Sourcepub fn with_defaults() -> Self
pub fn with_defaults() -> Self
Create a tracker with default configuration.
Sourcepub fn record(&self, tool_name: &str)
pub fn record(&self, tool_name: &str)
Record a tool dispatch.
Call this after each tool is dispatched. The tool name is appended to the sliding window of recent calls.
Sourcepub fn discover(&self) -> Vec<CompositionPattern>
pub fn discover(&self) -> Vec<CompositionPattern>
Discover composition patterns from the recent dispatch history.
Scans the sliding window for all subsequences of length
min_pattern_len..=max_pattern_len and returns those that
appear at least min_frequency times.
Also updates the internal pattern store.
Sourcepub fn top_patterns(&self, n: usize) -> Vec<CompositionPattern>
pub fn top_patterns(&self, n: usize) -> Vec<CompositionPattern>
Get the most frequent patterns (top N).
Sourcepub fn suggest_next(&self, last_n: usize) -> Vec<String>
pub fn suggest_next(&self, last_n: usize) -> Vec<String>
Suggest the next tool(s) based on the recent dispatch history.
Given the last N tool calls, finds patterns that start with those tools and returns the most likely continuation.
Sourcepub fn window_count(&self) -> usize
pub fn window_count(&self) -> usize
Get the current number of recorded dispatches in the window.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for CompositionTracker
impl RefUnwindSafe for CompositionTracker
impl Send for CompositionTracker
impl Sync for CompositionTracker
impl Unpin for CompositionTracker
impl UnsafeUnpin for CompositionTracker
impl UnwindSafe for CompositionTracker
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
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