hirn_engine/admission/
candidate.rs1use hirn_core::episodic::{EntityRef, EpisodicRecord};
4use hirn_core::id::MemoryId;
5use hirn_core::metadata::Metadata;
6use hirn_core::types::{AgentId, Namespace};
7
8#[derive(Debug, Clone)]
12pub struct MemoryCandidate {
13 pub id: MemoryId,
15 pub content: String,
17 pub entities: Vec<EntityRef>,
19 pub embedding: Option<Vec<f32>>,
21 pub agent_id: AgentId,
23 pub namespace: Namespace,
25 pub importance: f32,
27 pub surprise: f32,
29 pub metadata: Metadata,
31}
32
33impl MemoryCandidate {
34 pub fn from_record(record: &EpisodicRecord) -> Self {
36 Self {
37 id: record.id,
38 content: record.content.clone(),
39 entities: record.entities.clone(),
40 embedding: record.embedding.clone(),
41 agent_id: record.provenance.created_by.clone(),
42 namespace: record.namespace.clone(),
43 importance: record.importance,
44 surprise: record.surprise,
45 metadata: record.metadata.clone(),
46 }
47 }
48}