pub mod cycle;
pub mod events;
pub mod repo;
pub mod store;
pub use cycle::detect_cycle;
pub use events::CrossTeamEdgeEvent;
pub use repo::InMemoryEdgeRepo;
pub use store::InMemoryEdgeStore;
use chrono::{DateTime, Utc};
pub const VALID_EDGE_TYPES: &[&str] = &["delegates_to", "calls", "reads", "writes", "approves", "messages"];
#[derive(Debug, thiserror::Error)]
pub enum EdgeStoreError {
#[error("invalid edge type: {0:?}")]
InvalidEdgeType(String),
}
#[derive(Debug, Clone)]
pub struct NewEdge {
pub source_agent_id: [u8; 16],
pub target_agent_id: [u8; 16],
pub edge_type: String,
pub metadata: Option<serde_json::Value>,
}
#[derive(Debug, Clone)]
pub struct EdgeRecord {
pub id: i64,
pub source_agent_id: [u8; 16],
pub target_agent_id: [u8; 16],
pub edge_type: String,
pub created_at: DateTime<Utc>,
pub metadata: Option<serde_json::Value>,
}