use hirn_core::episodic::{EntityRef, EpisodicRecord};
use hirn_core::id::MemoryId;
use hirn_core::metadata::Metadata;
use hirn_core::types::{AgentId, Namespace};
#[derive(Debug, Clone)]
pub struct MemoryCandidate {
pub id: MemoryId,
pub content: String,
pub entities: Vec<EntityRef>,
pub embedding: Option<Vec<f32>>,
pub agent_id: AgentId,
pub namespace: Namespace,
pub importance: f32,
pub surprise: f32,
pub metadata: Metadata,
}
impl MemoryCandidate {
pub fn from_record(record: &EpisodicRecord) -> Self {
Self {
id: record.id,
content: record.content.clone(),
entities: record.entities.clone(),
embedding: record.embedding.clone(),
agent_id: record.provenance.created_by.clone(),
namespace: record.namespace.clone(),
importance: record.importance,
surprise: record.surprise,
metadata: record.metadata.clone(),
}
}
}