locus_sdk/application/
memory_schema.rs1use 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}