use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::sync::Arc;
use tokio::sync::RwLock;
use uuid::Uuid;
pub mod agents {
pub mod london_bdd;
pub mod byzantene;
}
pub mod coordination;
pub mod intelligence;
pub mod orchestration;
pub trait SpecializedAgent: Send + Sync {
fn id(&self) -> &str;
fn specialization(&self) -> AgentSpecialization;
fn execute(&self, context: &AgentContext) -> std::pin::Pin<Box<dyn std::future::Future<Output = AgentResult> + Send>>;
fn coordinate(&self, message: CoordinationMessage) -> std::pin::Pin<Box<dyn std::future::Future<Output = AgentResult> + Send>>;
fn status(&self) -> AgentStatus;
fn learn(&self, knowledge: AgentKnowledge) -> std::pin::Pin<Box<dyn std::future::Future<Output = AgentResult> + Send>>;
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum AgentSpecialization {
LondonBdd, Byzantene, QuantumOptimizer, SemanticAnalyst, MarketIntelligence, SecuritySentinel, TemplateArchitect, DependencyOracle, PerformanceGuardian, DocumentationSage, CiCdAutopilot, UserExperienceCatalyst, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentContext {
pub request_id: Uuid,
pub project_context: ProjectContext,
pub execution_environment: ExecutionEnvironment,
pub knowledge_graph: KnowledgeGraph,
pub performance_metrics: PerformanceMetrics,
pub user_preferences: UserPreferences,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProjectContext {
pub project_id: String,
pub project_type: ProjectType,
pub technology_stack: Vec<String>,
pub dependencies: Vec<Dependency>,
pub current_phase: ProjectPhase,
pub risk_level: RiskLevel,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionEnvironment {
pub available_resources: ResourceAllocation,
pub network_connectivity: NetworkStatus,
pub cache_status: CacheStatus,
pub external_services: Vec<ServiceStatus>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct KnowledgeGraph {
pub triples: Vec<RdfTriple>,
pub ontologies: Vec<String>,
pub inference_rules: Vec<String>,
pub last_updated: chrono::DateTime<chrono::Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceMetrics {
pub response_times: Vec<f64>,
pub error_rates: f64,
pub throughput: u64,
pub resource_utilization: ResourceUtilization,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserPreferences {
pub preferred_languages: Vec<String>,
pub interaction_style: InteractionStyle,
pub automation_level: AutomationLevel,
pub notification_preferences: NotificationSettings,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentResult {
pub success: bool,
pub output: Value,
pub confidence: f64,
pub execution_time_ms: u64,
pub recommendations: Vec<String>,
pub follow_up_actions: Vec<AgentAction>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CoordinationMessage {
pub from_agent: String,
pub to_agent: String,
pub message_type: MessageType,
pub payload: Value,
pub priority: Priority,
pub timestamp: chrono::DateTime<chrono::Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentKnowledge {
pub domain: String,
pub facts: Vec<String>,
pub rules: Vec<String>,
pub confidence: f64,
pub source: KnowledgeSource,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentStatus {
pub agent_id: String,
pub specialization: AgentSpecialization,
pub current_load: f64,
pub health_score: f64,
pub last_activity: chrono::DateTime<chrono::Utc>,
pub active_tasks: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ProjectType { Library, Application, Service, Tool, Framework }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ProjectPhase { Planning, Development, Testing, Deployment, Maintenance }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum RiskLevel { Low, Medium, High, Critical }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Dependency {
pub name: String,
pub version: String,
pub source: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceAllocation {
pub cpu_cores: u32,
pub memory_mb: u64,
pub disk_gb: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum NetworkStatus { Online, Limited, Offline }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceStatus {
pub name: String,
pub status: ServiceHealth,
pub response_time_ms: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ServiceHealth { Healthy, Degraded, Unhealthy }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceUtilization {
pub cpu_percent: f64,
pub memory_percent: f64,
pub disk_percent: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum InteractionStyle { Conversational, CommandLine, Visual, Automated }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AutomationLevel { Manual, SemiAutomated, FullyAutomated }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NotificationSettings {
pub email: bool,
pub push: bool,
pub in_app: bool,
pub frequency: NotificationFrequency,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum NotificationFrequency { RealTime, Hourly, Daily, Weekly }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentAction {
pub action_type: String,
pub target_agent: String,
pub parameters: HashMap<String, String>,
pub priority: Priority,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Priority { Low, Medium, High, Critical }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum MessageType {
Coordination,
StatusUpdate,
KnowledgeShare,
TaskDelegation,
ErrorReport,
PerformanceAlert,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum KnowledgeSource {
UserInput,
SystemObservation,
AgentInference,
ExternalSource,
HistoricalData,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RdfTriple {
pub subject: String,
pub predicate: String,
pub object: String,
}
use serde_json::Value;