Skip to main content

oxios_memory/memory/
quota.rs

1#![allow(missing_docs)]
2//! Memory budget and curation types.
3
4use serde::{Deserialize, Serialize};
5
6use crate::memory::types::MemoryType;
7
8/// Budget for memory curation — limits per type.
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct MemoryBudget {
11    /// Maximum entries per memory type.
12    pub max_per_type: usize,
13}
14
15impl Default for MemoryBudget {
16    fn default() -> Self {
17        Self { max_per_type: 100 }
18    }
19}
20
21/// A single candidate for removal during curation.
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct CurationCandidate {
24    /// Memory entry ID.
25    pub id: String,
26    /// Memory type.
27    pub memory_type: MemoryType,
28    /// Effective importance score (lower = more likely removed).
29    pub effective_importance: f32,
30}
31
32/// Report from a curation run.
33#[derive(Debug, Default, Clone, Serialize, Deserialize)]
34pub struct CurationReport {
35    /// Total entries before curation.
36    pub total_before: usize,
37    /// Total entries after curation.
38    pub total_after: usize,
39    /// Number of entries actually removed.
40    pub removed: usize,
41    /// Candidates identified for removal.
42    pub candidates_for_removal: Vec<CurationCandidate>,
43}