pub mod api;
pub mod attribution;
pub mod checkpoint;
mod completion;
mod episode;
pub mod filters;
mod init;
mod learning;
mod management;
mod monitoring;
pub mod pattern_api;
mod pattern_search;
pub mod playbook;
mod queries;
pub mod query_api;
pub mod relationship_query;
mod relationships;
mod retrieval;
pub mod step_buffer;
mod tags;
#[cfg(test)]
mod tests;
pub mod types;
pub mod validation;
use crate::embeddings::SemanticService;
use crate::types::MemoryConfig;
use std::sync::Arc;
pub use pattern_search::{PatternSearchResult, ScoreBreakdown, SearchConfig};
pub use types::SelfLearningMemory;
impl Default for SelfLearningMemory {
fn default() -> Self {
Self::new()
}
}
impl SelfLearningMemory {
#[must_use]
pub fn new() -> Self {
init::with_config(MemoryConfig::default())
}
#[must_use]
pub fn with_config(config: MemoryConfig) -> Self {
init::with_config(config)
}
pub fn with_storage(
config: MemoryConfig,
turso: Arc<dyn crate::storage::StorageBackend>,
cache: Arc<dyn crate::storage::StorageBackend>,
) -> Self {
init::with_storage(config, turso, cache)
}
#[must_use]
pub fn with_semantic_config(
config: MemoryConfig,
semantic_config: crate::embeddings::EmbeddingConfig,
) -> Self {
init::with_semantic_config(config, semantic_config)
}
#[must_use]
pub fn enable_async_extraction(
self,
queue_config: crate::learning::queue::QueueConfig,
) -> Self {
init::enable_async_extraction(self, queue_config)
}
pub async fn start_workers(&self) {
init::start_workers(self).await;
}
#[must_use]
pub fn semantic_service(&self) -> Option<&Arc<SemanticService>> {
self.semantic_service.as_ref()
}
#[must_use]
pub fn batch_config(&self) -> Option<&step_buffer::BatchConfig> {
self.config.batch_config.as_ref()
}
#[must_use]
pub fn quality_threshold(&self) -> f32 {
self.config.quality_threshold
}
}