use std::path::Path; use uuid::Uuid; use crate::state_paths::peer_id_path; pub const FEATURE_LIBRARY_DELTA: &str = "library-delta-v1"; pub const FEATURE_LIBRARY_SNAPSHOT: &str = "library-snapshot-v1"; pub fn load_or_create_peer_id(state_dir: &Path) -> eyre::Result { let path = peer_id_path(state_dir); if let Ok(existing) = std::fs::read_to_string(&path) { let trimmed = existing.trim(); if !trimmed.is_empty() { return Ok(trimmed.to_string()); } } let peer_id = Uuid::now_v7().simple().to_string(); if let Some(parent) = path.parent() { std::fs::create_dir_all(parent)?; } std::fs::write(&path, peer_id.as_bytes())?; Ok(peer_id) } pub fn default_features() -> Vec { vec![ FEATURE_LIBRARY_DELTA.to_string(), FEATURE_LIBRARY_SNAPSHOT.to_string(), ] }