code_mesh_core/memory/
mod.rs

1//! Memory management for Code Mesh
2
3use async_trait::async_trait;
4use serde::{Deserialize, Serialize};
5use std::time::Duration;
6
7/// Memory trait for storing and retrieving data
8#[async_trait]
9pub trait Memory: Send + Sync {
10    /// Store a value with optional TTL
11    async fn store(&self, key: &str, value: MemoryValue, ttl: Option<Duration>) -> crate::Result<()>;
12    
13    /// Retrieve a value
14    async fn retrieve(&self, key: &str) -> crate::Result<Option<MemoryValue>>;
15    
16    /// Delete a value
17    async fn delete(&self, key: &str) -> crate::Result<()>;
18    
19    /// Search for values matching a pattern
20    async fn search(&self, pattern: &str, limit: usize) -> crate::Result<Vec<(String, MemoryValue)>>;
21    
22    /// List all keys in a namespace
23    async fn list_namespace(&self, namespace: &str) -> crate::Result<Vec<String>>;
24}
25
26/// Value stored in memory
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct MemoryValue {
29    pub data: serde_json::Value,
30    pub metadata: MemoryMetadata,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct MemoryMetadata {
35    pub created_at: chrono::DateTime<chrono::Utc>,
36    pub updated_at: chrono::DateTime<chrono::Utc>,
37    pub access_count: u64,
38    pub tags: Vec<String>,
39}