Skip to main content

oxios_kernel/memory/
budget.rs

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