pub mod buffer;
pub mod chat_history;
pub mod conversation;
pub mod entity;
pub mod hybrid;
pub mod knowledge_graph;
pub mod summary;
pub mod summary_buffer;
pub mod token_buffer;
pub mod vector;
pub mod window;
pub use buffer::ConversationBufferMemory;
pub use chat_history::{
prune_by_count, prune_by_token_count, ChatHistoryMemory, ChatHistoryStore, FileChatHistory,
InMemoryChatHistory,
};
pub use conversation::{
BufferMemory, ConversationMessage, ConversationStore, MemorySearch, MemoryStats, MessageRole,
SummaryMemory, TokenBufferMemory as ConvTokenBufferMemory, WindowMemory,
};
pub use entity::{Entity, EntityMemory, EntityStore, InMemoryEntityStore};
pub use hybrid::{ConversationTokenBufferMemory, HybridMemory, HybridMemoryBuilder};
pub use knowledge_graph::{
KnowledgeGraph, KnowledgeGraphMemory, KnowledgeGraphMemoryBuilder, KnowledgeTriple,
RegexTripleExtractor, TripleExtractor,
};
pub use summary::ConversationSummaryMemory;
pub use summary_buffer::{
SimpleSummarizer, Summarizer, SummaryBufferMemory, SummaryBufferMemoryBuilder, SummaryStrategy,
TemplateSummarizer,
};
pub use token_buffer::{
CharBasedTokenCounter, SimpleTokenCounter, TokenBufferMemory, TokenBufferMemoryBuilder,
TokenCounter,
};
pub use vector::VectorStoreMemory;
pub use window::ConversationWindowMemory;
use std::collections::HashMap;
use async_trait::async_trait;
use cognis_core::error::Result;
use cognis_core::messages::Message;
use serde_json::Value;
#[async_trait]
pub trait BaseMemory: Send + Sync {
async fn load_memory_variables(&self) -> Result<HashMap<String, Value>>;
async fn save_context(&self, input: &Message, output: &Message) -> Result<()>;
async fn clear(&self) -> Result<()>;
fn memory_key(&self) -> &str {
"history"
}
}