use std::collections::BTreeMap;
use hirn_core::id::MemoryId;
use hirn_core::metadata::Metadata;
use hirn_core::types::{EdgeRelation, EventType, Namespace};
#[derive(Debug, Clone)]
pub struct StoreRequest {
pub content: String,
pub event_type: Option<EventType>,
pub importance: Option<f32>,
pub embedding: Option<Vec<f32>>,
pub namespace: Option<Namespace>,
pub metadata: Option<Metadata>,
pub entities: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default)]
pub struct RecallOptions {
pub limit: Option<usize>,
pub namespace: Option<Namespace>,
}
#[derive(Debug, Clone)]
pub struct RecallRecord {
pub id: MemoryId,
pub content: String,
pub score: f64,
pub metadata: BTreeMap<String, String>,
}
#[derive(Debug, Clone)]
pub struct UpdateRequest {
pub id: MemoryId,
pub content: Option<String>,
pub metadata: Option<Metadata>,
pub importance: Option<f32>,
}
#[derive(Debug, Clone)]
pub struct LinkRequest {
pub source_id: MemoryId,
pub target_id: MemoryId,
pub relation: EdgeRelation,
pub weight: Option<f32>,
pub metadata: Option<Metadata>,
}
#[derive(Debug, Clone)]
pub struct IntrospectionResult {
pub total_memories: u64,
pub episodic_count: u64,
pub semantic_count: u64,
pub procedural_count: u64,
pub working_count: u64,
pub edge_count: u64,
pub edges: Vec<EdgeInfo>,
}
#[derive(Debug, Clone)]
pub struct EdgeInfo {
pub source: MemoryId,
pub target: MemoryId,
pub relation: EdgeRelation,
pub weight: f32,
}