| 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 |
| status: str = "pending" |
| 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" |
| 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] = {} |