Skip to main content

AgentMemory

Struct AgentMemory 

Source
pub struct AgentMemory { /* private fields */ }
Expand description

Unified memory interface for AI agents.

Provides access to three memory subsystems:

  • semantic: Long-term knowledge (vector storage; graph linkage planned)
  • episodic: Event timeline with temporal context
  • procedural: Learned patterns and action sequences

§Enhanced Features

  • TTL management for automatic expiration
  • Snapshot/restore for state persistence
  • Temporal indexing for efficient time-based queries
  • Configurable eviction policies

Implementations§

Source§

impl AgentMemory

Source

pub fn new(db: Arc<Database>) -> Result<Self, AgentMemoryError>

Creates a new AgentMemory instance from a Database.

Initializes or connects to the three memory subsystem collections:

  • _semantic_memory: For knowledge facts
  • _episodic_memory: For event timeline
  • _procedural_memory: For learned patterns

Uses the default embedding dimension (384).

§Errors

Returns an error when one of the underlying memory subsystems cannot be initialized.

Source

pub fn with_dimension( db: Arc<Database>, dimension: usize, ) -> Result<Self, AgentMemoryError>

Creates a new AgentMemory with a custom embedding dimension.

§Errors

Returns an error when one of the underlying memory subsystems cannot be initialized.

Source

pub fn with_eviction_config(self, config: EvictionConfig) -> Self

Configures eviction policies for automatic memory cleanup.

Source

pub fn with_snapshots(self, snapshot_dir: &str, max_snapshots: usize) -> Self

Enables snapshot management with a storage directory.

§Arguments
  • snapshot_dir - Directory path for storing snapshots
  • max_snapshots - Maximum number of snapshots to retain
Source

pub fn semantic(&self) -> &SemanticMemory

Returns a reference to the semantic memory subsystem.

Source

pub fn episodic(&self) -> &EpisodicMemory

Returns a reference to the episodic memory subsystem.

Source

pub fn procedural(&self) -> &ProceduralMemory

Returns a reference to the procedural memory subsystem.

Source

pub fn set_semantic_ttl(&self, id: u64, ttl_seconds: u64)

Sets TTL for a semantic memory entry (in-memory only; lost on restart).

Use Self::set_semantic_ttl_durable to persist the expiry.

Source

pub fn set_episodic_ttl(&self, id: u64, ttl_seconds: u64)

Sets TTL for an episodic memory entry (in-memory only; lost on restart).

Use Self::set_episodic_ttl_durable to persist the expiry.

Source

pub fn set_procedural_ttl(&self, id: u64, ttl_seconds: u64)

Sets TTL for a procedural memory entry (in-memory only; lost on restart).

Use Self::set_procedural_ttl_durable to persist the expiry.

Source

pub fn set_semantic_ttl_durable( &self, id: u64, ttl_seconds: u64, ) -> Result<(), AgentMemoryError>

Durably sets the TTL of an existing semantic fact: the expiry is persisted to the reserved _veles_expires_at payload field and survives a restart.

§Errors

Returns NotFound when no fact with id exists, or CollectionError when persistence fails.

Source

pub fn set_episodic_ttl_durable( &self, id: u64, ttl_seconds: u64, ) -> Result<(), AgentMemoryError>

Durably sets the TTL of an existing episodic event: the expiry is persisted to the reserved _veles_expires_at payload field and survives a restart.

§Errors

Returns NotFound when no event with id exists, or CollectionError when persistence fails.

Source

pub fn set_procedural_ttl_durable( &self, id: u64, ttl_seconds: u64, ) -> Result<(), AgentMemoryError>

Durably sets the TTL of an existing procedure: the expiry is persisted to the reserved _veles_expires_at payload field and survives a restart.

§Errors

Returns NotFound when no procedure with id exists, or CollectionError when persistence fails.

Source

pub fn auto_expire(&self) -> Result<ExpireResult, AgentMemoryError>

Performs automatic expiration of entries that have exceeded their TTL.

This method should be called periodically to clean up expired entries. It also handles consolidation of old episodic memories to semantic memory based on the configured eviction policy.

§Returns

Statistics about the expiration operation.

§Errors

Returns an error when consolidation operations fail.

Source

pub fn evict_low_confidence_procedures( &self, min_confidence: f32, ) -> Result<usize, AgentMemoryError>

Evicts procedures with confidence below the threshold.

§Arguments
  • min_confidence - Minimum confidence threshold (0.0 - 1.0)
§Returns

Number of procedures evicted.

§Errors

Returns an error when listing or deleting procedures fails.

Source

pub fn snapshot(&self) -> Result<u64, AgentMemoryError>

Creates a snapshot of the current memory state.

§Returns

The version number of the created snapshot.

§Errors

Returns an error when snapshot manager is not configured or snapshot persistence fails.

Source

pub fn load_latest_snapshot(&self) -> Result<u64, AgentMemoryError>

Loads the most recent snapshot.

§Returns

The version number of the loaded snapshot.

§Errors

Returns an error when snapshot manager is not configured, loading fails, or state restoration fails.

Source

pub fn load_snapshot_version( &self, version: u64, ) -> Result<(), AgentMemoryError>

Loads a specific snapshot version.

§Errors

Returns an error when snapshot manager is not configured, loading fails, or state restoration fails.

Source

pub fn list_snapshot_versions(&self) -> Result<Vec<u64>, AgentMemoryError>

Lists all available snapshot versions.

§Errors

Returns an error when snapshot manager is not configured or listing fails.

Source

pub fn query_semantic( &self, sql: &str, params: &HashMap<String, Value>, ) -> Result<Vec<SearchResult>, AgentMemoryError>

Executes a VelesQL query against the semantic memory collection.

Delegates to Collection::execute_query_str on the _semantic_memory collection. Use standard VelesQL syntax including WHERE vector NEAR $v, payload filters, ORDER BY, and WITH options. TTL-expired entries are filtered from the results, matching the native query APIs.

§Errors

Returns an error if the collection is missing or the query fails.

Source

pub fn query_episodic( &self, sql: &str, params: &HashMap<String, Value>, ) -> Result<Vec<SearchResult>, AgentMemoryError>

Executes a VelesQL query against the episodic memory collection.

Delegates to Collection::execute_query_str on the _episodic_memory collection. Supports payload field filters like WHERE timestamp > N, ORDER BY timestamp DESC, and similarity search via NEAR. TTL-expired entries are filtered from the results, matching the native query APIs.

§Errors

Returns an error if the collection is missing or the query fails.

Source

pub fn query_procedural( &self, sql: &str, params: &HashMap<String, Value>, ) -> Result<Vec<SearchResult>, AgentMemoryError>

Executes a VelesQL query against the procedural memory collection.

Delegates to Collection::execute_query_str on the _procedural_memory collection. Supports payload field filters like WHERE confidence > 0.7, ORDER BY confidence DESC, and scan queries. TTL-expired entries are filtered from the results, matching the native query APIs.

§Errors

Returns an error if the collection is missing or the query fails.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Paint for T
where T: ?Sized,

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more