1use adk_core::{Content, Result};
2use async_trait::async_trait;
3use chrono::{DateTime, Utc};
4
5#[derive(Debug, Clone)]
6pub struct MemoryEntry {
7 pub content: Content,
8 pub author: String,
9 pub timestamp: DateTime<Utc>,
10}
11
12#[derive(Debug, Clone)]
13pub struct SearchRequest {
14 pub query: String,
15 pub user_id: String,
16 pub app_name: String,
17 pub limit: Option<usize>,
19 pub min_score: Option<f32>,
22}
23
24#[derive(Debug, Clone)]
25pub struct SearchResponse {
26 pub memories: Vec<MemoryEntry>,
27}
28
29#[async_trait]
30pub trait MemoryService: Send + Sync {
31 async fn add_session(
32 &self,
33 app_name: &str,
34 user_id: &str,
35 session_id: &str,
36 entries: Vec<MemoryEntry>,
37 ) -> Result<()>;
38 async fn search(&self, req: SearchRequest) -> Result<SearchResponse>;
39
40 async fn delete_user(&self, app_name: &str, user_id: &str) -> Result<()> {
45 let _ = (app_name, user_id);
46 Err(adk_core::AdkError::Memory("delete_user not implemented".into()))
47 }
48
49 async fn delete_session(&self, app_name: &str, user_id: &str, session_id: &str) -> Result<()> {
51 let _ = (app_name, user_id, session_id);
52 Err(adk_core::AdkError::Memory("delete_session not implemented".into()))
53 }
54
55 async fn health_check(&self) -> Result<()> {
60 Ok(())
61 }
62}