Skip to main content

locus_sdk/application/
memory_schema.rs

1use crate::domain::memory::MemorySchemaResult;
2
3pub struct MemorySchemaService;
4
5impl MemorySchemaService {
6    pub fn new() -> Self {
7        Self
8    }
9
10    pub fn execute(&self) -> MemorySchemaResult {
11        MemorySchemaResult {
12            schema_version: "locus-sdk.memory.v1".to_string(),
13            sort_fields: vec![
14                "timestamp".to_string(),
15                "updated_at".to_string(),
16                "psi".to_string(),
17                "rho".to_string(),
18                "kappa".to_string(),
19            ],
20            filter_fields: vec![
21                "has_embedding".to_string(),
22                "embedding_model".to_string(),
23                "psi".to_string(),
24                "rho".to_string(),
25                "kappa".to_string(),
26                "text_contains".to_string(),
27            ],
28            group_by_fields: vec![
29                "session_id".to_string(),
30                "tier".to_string(),
31                "embedding_model".to_string(),
32                "date_day".to_string(),
33            ],
34            fallback_policies: vec![
35                "never".to_string(),
36                "on_empty".to_string(),
37                "always".to_string(),
38            ],
39            strictness_modes: vec![
40                "precision".to_string(),
41                "balanced".to_string(),
42                "recall".to_string(),
43            ],
44            transform_operations: vec![
45                "embed_backfill".to_string(),
46                "reindex_embeddings".to_string(),
47            ],
48        }
49    }
50}
51
52impl Default for MemorySchemaService {
53    fn default() -> Self {
54        Self::new()
55    }
56}
57
58#[cfg(test)]
59mod tests {
60    use super::MemorySchemaService;
61
62    #[test]
63    fn schema_contains_expected_core_fields() {
64        let service = MemorySchemaService::new();
65        let schema = service.execute();
66
67        assert_eq!(schema.schema_version, "locus-sdk.memory.v1");
68        assert!(schema.sort_fields.contains(&"timestamp".to_string()));
69        assert!(schema.group_by_fields.contains(&"session_id".to_string()));
70        assert!(schema.fallback_policies.contains(&"on_empty".to_string()));
71        assert!(schema
72            .transform_operations
73            .contains(&"embed_backfill".to_string()));
74    }
75}