#[derive(Default)]
pub(crate) struct MemoryExtractionState {
pub(crate) document_config: crate::config::DocumentConfig,
pub(crate) graph_config: crate::config::GraphConfig,
pub(crate) rpe_router: Option<std::sync::Mutex<zeph_memory::RpeRouter>>,
pub(crate) goal_text: Option<String>,
pub(crate) persona_config: zeph_config::PersonaConfig,
pub(crate) trajectory_config: zeph_config::TrajectoryConfig,
pub(crate) category_config: zeph_config::CategoryConfig,
}
impl MemoryExtractionState {
pub(crate) fn apply_graph_config(&mut self, config: crate::config::GraphConfig) {
if config.enabled {
tracing::warn!(
"graph-memory is enabled: extracted entities are stored without PII redaction. \
Do not use with sensitive personal data until redaction is implemented."
);
}
if config.rpe.enabled {
self.rpe_router = Some(std::sync::Mutex::new(zeph_memory::RpeRouter::new(
config.rpe.threshold,
config.rpe.max_skip_turns,
)));
} else {
self.rpe_router = None;
}
self.graph_config = config;
}
}