use adk_core::{Content, Result};
use async_trait::async_trait;
use chrono::{DateTime, Utc};
#[derive(Debug, Clone)]
pub struct MemoryEntry {
pub content: Content,
pub author: String,
pub timestamp: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct SearchRequest {
pub query: String,
pub user_id: String,
pub app_name: String,
pub limit: Option<usize>,
pub min_score: Option<f32>,
}
#[derive(Debug, Clone)]
pub struct SearchResponse {
pub memories: Vec<MemoryEntry>,
}
#[async_trait]
pub trait MemoryService: Send + Sync {
async fn add_session(
&self,
app_name: &str,
user_id: &str,
session_id: &str,
entries: Vec<MemoryEntry>,
) -> Result<()>;
async fn search(&self, req: SearchRequest) -> Result<SearchResponse>;
async fn delete_user(&self, app_name: &str, user_id: &str) -> Result<()> {
let _ = (app_name, user_id);
Err(adk_core::AdkError::memory("delete_user not implemented"))
}
async fn delete_session(&self, app_name: &str, user_id: &str, session_id: &str) -> Result<()> {
let _ = (app_name, user_id, session_id);
Err(adk_core::AdkError::memory("delete_session not implemented"))
}
async fn add_entry(&self, app_name: &str, user_id: &str, entry: MemoryEntry) -> Result<()> {
let _ = (app_name, user_id, entry);
Err(adk_core::AdkError::memory("add_entry not implemented"))
}
async fn delete_entries(&self, app_name: &str, user_id: &str, query: &str) -> Result<u64> {
let _ = (app_name, user_id, query);
Err(adk_core::AdkError::memory("delete_entries not implemented"))
}
async fn health_check(&self) -> Result<()> {
Ok(())
}
}