Skip to main content

codelens_engine/memory/
mod.rs

1//! Project and global memory management.
2//!
3//! Memory is organised in two tiers:
4//! - Project: `<project>/.codelens/memories/`
5//! - Global: `$HOME/.codelens/memories/`
6//!
7//! The public API is intentionally flat (`codelens_engine::memory::*`) while
8//! the implementation is split by responsibility to keep policy, path
9//! resolution, persistence, archive, audit, and frontmatter logic independent.
10
11mod archive;
12mod audit;
13mod frontmatter;
14mod paths;
15mod policy;
16mod store;
17
18/// Current Unix time in seconds. Shared time util kept at module root so
19/// neither `paths` nor `policy` depend on each other for it
20/// (breaks the former paths↔policy import cycle).
21pub(crate) fn now_secs() -> u64 {
22    use std::time::{SystemTime, UNIX_EPOCH};
23    SystemTime::now()
24        .duration_since(UNIX_EPOCH)
25        .map(|d| d.as_secs())
26        .unwrap_or(0)
27}
28
29pub use archive::{
30    archive_memory, archive_memory_rec, list_archived, restore_archived, restore_archived_rec,
31};
32pub use audit::{AuditRecorder, MemoryAuditEvent, NullRecorder};
33pub use frontmatter::{MemoryFrontmatter, MemoryMetadata, parse_frontmatter, strip_frontmatter};
34pub use paths::{
35    MemoryLocation, MemoryTier, global_memory_dir, resolve_memory_path, resolve_memory_tier,
36};
37pub use policy::MemoryPolicy;
38pub use store::{
39    delete_memory, delete_memory_tiered, delete_memory_tiered_rec, list_all_memory_names,
40    list_memory_names, list_memory_names_with_policy, read_memory, read_memory_from_tier,
41    read_memory_with_metadata, read_policy, rename_memory, write_memory, write_memory_tiered,
42    write_memory_tiered_rec,
43};
44
45#[cfg(test)]
46mod tests;