pub mod entities;
pub mod import;
pub mod memory;
pub mod requests;
pub mod responses;
pub mod sources;
pub use entities::{
Entity, EntityDetail, EntitySearchResult, EntitySuggestion, Observation, Relation,
RelationWithEntity,
};
pub use memory::{
AgentActivityRow, AgentConnection, DomainInfo, HomeStats, IndexedFileInfo, MemoryItem,
MemoryStats, MemoryVersionItem, Profile, RejectionRecord, SearchResult, SessionSnapshot,
SnapshotCapture, SnapshotCaptureWithContent, Space, TopMemory, TypeBreakdown,
};
pub use sources::{MemoryType, RawDocument, SourceType, StabilityTier, SyncStatus};
pub fn version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn version_is_set() {
assert!(!version().is_empty());
}
#[test]
fn memory_type_roundtrip() {
for variant in [
MemoryType::Identity,
MemoryType::Preference,
MemoryType::Decision,
MemoryType::Fact,
MemoryType::Goal,
] {
let s = variant.to_string();
let parsed: MemoryType = s.parse().unwrap();
assert_eq!(parsed, variant);
}
}
#[test]
fn search_result_serializes() {
let sr = SearchResult {
id: "1".into(),
content: "test".into(),
source: "memory".into(),
source_id: "mem_abc".into(),
title: "Test".into(),
url: None,
chunk_index: 0,
last_modified: 1000,
score: 0.9,
chunk_type: None,
language: None,
semantic_unit: None,
memory_type: Some("fact".into()),
domain: None,
source_agent: None,
confidence: Some(0.8),
confirmed: Some(true),
stability: None,
supersedes: None,
summary: None,
entity_id: None,
entity_name: None,
quality: None,
is_archived: false,
is_recap: false,
structured_fields: None,
retrieval_cue: None,
source_text: None,
raw_score: 0.0,
};
let json = serde_json::to_string(&sr).unwrap();
assert!(json.contains("mem_abc"));
assert!(!json.contains("entity_id"));
}
#[test]
fn raw_document_default() {
let doc = RawDocument::default();
assert_eq!(doc.enrichment_status, "raw");
assert_eq!(doc.supersede_mode, "hide");
assert!(!doc.pending_revision);
assert!(!doc.is_recap);
}
#[test]
fn stability_tier_mapping() {
use sources::stability_tier;
assert_eq!(stability_tier(Some("identity")), StabilityTier::Protected);
assert_eq!(stability_tier(Some("preference")), StabilityTier::Protected);
assert_eq!(stability_tier(Some("fact")), StabilityTier::Standard);
assert_eq!(stability_tier(Some("decision")), StabilityTier::Standard);
assert_eq!(stability_tier(Some("goal")), StabilityTier::Ephemeral);
assert_eq!(stability_tier(None), StabilityTier::Ephemeral);
}
}