from pydantic import BaseModel from typing import Dict, List, Optional, Any import uuid from datetime import datetime class AgentConfig(BaseModel): """Configuration for an individual agent""" name: str enabled: bool = True max_iterations: int = 10 timeout_seconds: int = 300 model_name: str = "local-model" class Task(BaseModel): """Represents a task for an agent to execute""" id: str = str(uuid.uuid4()) type: str description: str priority: int = 1 # 1-5, 5 being highest status: str = "pending" # pending, running, completed, failed assigned_agent: Optional[str] = None created_at: datetime = datetime.now() completed_at: Optional[datetime] = None result: Optional[Dict[str, Any]] = None metadata: Dict[str, Any] = {} class AgentMessage(BaseModel): """Message exchanged between agents""" sender: str recipient: str content: str timestamp: datetime = datetime.now() message_type: str = "info" # info, warning, error, task correlation_id: Optional[str] = None class SEOData(BaseModel): """SEO-specific data structure""" domain: str keywords: List[str] = [] backlinks: List[Dict[str, Any]] = [] content_pages: List[Dict[str, Any]] = [] technical_issues: List[Dict[str, Any]] = [] analytics_data: Dict[str, Any] = {} conversion_metrics: Dict[str, Any] = {}