use std::sync::Arc;
use zeph_llm::any::AnyProvider;
use zeph_llm::mock::MockProvider;
use crate::embedding_store::EmbeddingStore;
use crate::error::MemoryError;
use crate::in_memory_store::InMemoryVectorStore;
use crate::semantic::SemanticMemory;
use crate::store::SqliteStore;
use crate::token_counter::TokenCounter;
pub async fn mock_semantic_memory() -> Result<Arc<SemanticMemory>, MemoryError> {
let mut mock = MockProvider::default();
mock.supports_embeddings = true;
mock.embedding = vec![0.1_f32; 384];
let provider = AnyProvider::Mock(mock);
let sqlite = SqliteStore::with_pool_size(":memory:", 1).await?;
let pool = sqlite.pool().clone();
let qdrant = Some(Arc::new(EmbeddingStore::with_store(
Box::new(InMemoryVectorStore::new()),
pool,
)));
Ok(Arc::new(SemanticMemory::from_parts(
sqlite,
qdrant,
provider,
"mock-embed",
0.7,
0.3,
Arc::new(TokenCounter::new()),
)))
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn mock_semantic_memory_creates_successfully() {
let memory = mock_semantic_memory().await;
assert!(memory.is_ok(), "mock_semantic_memory should not fail");
}
}