File size: 1,394 Bytes
a3cdad5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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] = {}