| ALLOWED_CAPABILITIES = [ |
| "analysis", |
| "api_development", |
| "architecture", |
| "automation", |
| "budgeting", |
| "change_management", |
| "chat", |
| "cloud_architecture", |
| "coaching", |
| "code_generation", |
| "code_review", |
| "coding", |
| "communication", |
| "compliance_check", |
| "contract_review", |
| "coordination", |
| "data_analysis", |
| "diagnosis", |
| "debugging", |
| "devops", |
| "diagnosis_support", |
| "documentation", |
| "economic_analysis", |
| "financial_analysis", |
| "financial_planning", |
| "healthcare_consulting", |
| "infrastructure_design", |
| "investment_strategy", |
| "knowledge_management", |
| "leadership_training", |
| "legal_analysis", |
| "legal_research", |
| "legal_writing", |
| "litigation_support", |
| "market_research", |
| "medical_analysis", |
| "medical_research", |
| "mentoring", |
| "monitoring", |
| "multi_agent_coordination", |
| "negotiation", |
| "orchestration", |
| "organizational_development", |
| "patient_care", |
| "performance_management", |
| "performance_optimization", |
| "planning", |
| "portfolio_management", |
| "presentation", |
| "project_management", |
| "quality_assurance", |
| "refactoring", |
| "regulatory_advice", |
| "reporting", |
| "research", |
| "resource_management", |
| "risk_assessment", |
| "security", |
| "software_architecture", |
| "strategy", |
| "system_integration", |
| "team_building", |
| "testing", |
| "translation", |
| "treatment_planning", |
| "writing", |
| ] |
|
|
| """ |
| SAAP Agent Schema Definition |
| Modular JSON-based agent configuration system |
| """ |
|
|
| from typing import Dict, List, Optional, Any, Literal |
| from pydantic import BaseModel, Field, validator |
| from datetime import datetime |
| from enum import Enum |
|
|
| class AgentStatus(str, Enum): |
| """Agent operational status""" |
| INACTIVE = "inactive" |
| STARTING = "starting" |
| ACTIVE = "active" |
| STOPPING = "stopping" |
| ERROR = "error" |
| MAINTENANCE = "maintenance" |
|
|
| class AgentType(str, Enum): |
| """Agent role classification""" |
| COORDINATOR = "coordinator" |
| DEVELOPER = "developer" |
| SPECIALIST = "specialist" |
| GENERALIST = "generalist" |
| TOOL_USER = "tool_user" |
| MONITOR = "monitor" |
|
|
| class MessageType(str, Enum): |
| """Supported message types for agent communication""" |
| REQUEST = "request" |
| RESPONSE = "response" |
| NOTIFICATION = "notification" |
| BROADCAST = "broadcast" |
| COORDINATION = "coordination" |
| SYSTEM_STATUS = "system_status" |
| AGENT_MANAGEMENT = "agent_management" |
|
|
| |
| ALLOWED_CAPABILITIES = { |
| |
| "system_coordination", "multi_agent_management", "architecture_planning", "decision_making", |
| "coordination", "orchestration", "workflow_management", "strategy", "architecture", |
| |
| |
| "code_generation", "debugging", "architecture_design", "code_review", "testing", "deployment", |
| "performance_optimization", "refactoring", "documentation", "development", "programming", |
| "software_engineering", "implementation", "coding", |
| |
| |
| "medical_analysis", "clinical_decision_support", "health_data_analysis", "medical_research", |
| "patient_care", "diagnosis_support", "medical_documentation", "healthcare", "clinical", |
| "health", "medical", "diagnosis", "treatment", |
| |
| |
| "financial_analysis", "market_research", "investment_strategy", "risk_assessment", |
| "fintech_development", "budget_planning", "cost_analysis", "financial_reporting", |
| "finance", "investment", "banking", "economic_analysis", |
| |
| |
| "legal_compliance", "gdpr_analysis", "contract_review", "regulatory_analysis", |
| "fintech_law", "data_protection", "privacy_assessment", "legal_documentation", |
| "legal", "compliance", "law", "regulation", |
| |
| |
| "system_administration", "infrastructure_deployment", "security_implementation", |
| "performance_optimization", "monitoring", "backup_management", "network_administration", |
| "system", "infrastructure", "security", "devops", |
| |
| |
| "team_coaching", "organizational_development", "process_optimization", "change_management", |
| "training", "mentoring", "team_building", "communication_facilitation", |
| "coaching", "organization", "team_development", |
| |
| |
| "data_analysis", "research", "communication", "project_management", "quality_assurance", |
| "user_support", "content_creation", "translation", "analysis", "reporting", |
| "problem_solving", "consulting", "advisory", "support", "assistance", |
| |
| |
| "multi_agent_coordination", "task_delegation", "workflow_orchestration", |
| "knowledge_management", "information_retrieval", "natural_language_processing", |
| "machine_learning", "artificial_intelligence", "automation", "integration", |
| "api_development", "database_management", "web_development", "mobile_development", |
| "cloud_computing", "distributed_systems", "microservices", "containerization", |
| "continuous_integration", "continuous_deployment", "version_control", |
| |
| |
| "business_analysis", "requirements_engineering", "product_management", |
| "customer_support", "sales", "marketing", "human_resources", "operations", |
| "supply_chain", "logistics", "manufacturing", "retail", "e_commerce", |
| |
| |
| "cybersecurity", "penetration_testing", "vulnerability_assessment", |
| "incident_response", "disaster_recovery", "business_continuity", |
| "performance_tuning", "load_balancing", "scalability", "high_availability" |
| } |
|
|
| |
|
|
| class AgentMetadata(BaseModel): |
| """Agent version and lifecycle metadata""" |
| version: str = Field(..., description="Agent configuration version") |
| created: datetime = Field(default_factory=datetime.utcnow) |
| updated: datetime = Field(default_factory=datetime.utcnow) |
| creator: Optional[str] = Field(None, description="Who created this agent") |
| tags: List[str] = Field(default_factory=list, description="Organizational tags") |
|
|
| class AgentAppearance(BaseModel): |
| """Agent appearance and visual configuration""" |
| color: str = Field(default="#6B7280", pattern=r'^#[0-9A-Fa-f]{6}$', description="Hex color code") |
| avatar_url: Optional[str] = Field(default=None, description="URL to agent avatar image") |
| avatar: Optional[str] = Field(default=None, description="Avatar identifier or URL") |
| display_name: Optional[str] = Field(default=None, description="Display name for UI") |
| subtitle: Optional[str] = Field(default=None, description="Subtitle or role description") |
| description: Optional[str] = Field(default=None, description="Visual description") |
| icon: Optional[str] = Field(default=None, description="Icon identifier") |
| theme: Optional[str] = Field(default="default", description="Visual theme") |
| class LLMConfig(BaseModel): |
| """LLM model configuration""" |
| model: str = Field(..., description="Ollama model name (e.g., 'phi3:mini')") |
| temperature: float = Field(0.7, ge=0.0, le=2.0, description="Response randomness") |
| max_tokens: int = Field(2048, ge=64, le=8192, description="Maximum response length") |
| top_p: float = Field(0.9, ge=0.0, le=1.0, description="Nucleus sampling threshold") |
| system_prompt: str = Field(..., min_length=10, description="Agent personality/instructions") |
| |
| |
| stop_sequences: List[str] = Field(default_factory=list, description="Stop generation at these sequences") |
| context_window: int = Field(4096, ge=512, le=32768, description="Context memory size") |
| |
| @validator('model') |
| def validate_model(cls, v): |
| """Ensure model name follows Ollama conventions""" |
| if not v or ':' not in v: |
| raise ValueError("Model must be in format 'name:version' (e.g., 'phi3:mini')") |
| return v.lower() |
|
|
| class CommunicationConfig(BaseModel): |
| """Message queue and communication settings""" |
| input_queue: str = Field(..., description="Redis queue for incoming messages") |
| output_queue: str = Field(..., description="Redis queue for outgoing messages") |
| message_types: List[MessageType] = Field(..., description="Supported message types") |
| |
| |
| max_queue_size: int = Field(1000, ge=10, le=10000, description="Maximum queued messages") |
| message_ttl: int = Field(3600, ge=60, le=86400, description="Message TTL in seconds") |
| priority_handling: bool = Field(True, description="Support priority message processing") |
|
|
| class UIComponents(BaseModel): |
| """Frontend component configuration""" |
| dashboard_widget: str = Field("AgentCard", description="Dashboard card component name") |
| detail_view: str = Field("AgentDetail", description="Detail view component name") |
| configuration_form: str = Field("AgentConfig", description="Configuration form component") |
| |
| |
| custom_css: Optional[str] = Field(None, description="Custom CSS classes") |
| icon: Optional[str] = Field(None, description="Icon identifier") |
|
|
| class AgentCapability(BaseModel): |
| """Individual capability definition""" |
| name: str = Field(..., description="Capability identifier") |
| display_name: str = Field(..., description="Human-readable capability name") |
| description: str = Field(..., description="Capability description") |
| confidence: float = Field(1.0, ge=0.0, le=1.0, description="Agent confidence in this capability") |
| |
| |
| category: str = Field("general", description="Capability category") |
| required_tools: List[str] = Field(default_factory=list, description="Required external tools") |
|
|
| |
|
|
| class SaapAgent(BaseModel): |
| """Complete SAAP Agent Definition""" |
| |
| |
| id: str = Field(..., pattern=r"^[a-z0-9_]{3,32}$", description="Unique agent identifier") |
| name: str = Field(..., min_length=1, max_length=64, description="Agent name") |
| type: AgentType = Field(..., description="Agent role classification") |
| status: AgentStatus = Field(AgentStatus.INACTIVE, description="Current operational status") |
| |
| |
| description: str = Field(..., min_length=1, max_length=512, description="Agent description (direct field)") |
| |
| |
| metadata: AgentMetadata = Field(..., description="Version and lifecycle information") |
| |
| |
| appearance: AgentAppearance = Field(..., description="Visual representation") |
| ui_components: UIComponents = Field(..., description="Frontend component configuration") |
| |
| |
| capabilities: List[str] = Field(..., min_items=1, description="Agent capability identifiers") |
| detailed_capabilities: Optional[List[AgentCapability]] = Field(None, description="Detailed capability definitions") |
| |
| |
| llm_config: LLMConfig = Field(..., description="Language model configuration") |
| |
| |
| communication: CommunicationConfig = Field(..., description="Message queue configuration") |
| |
| |
| custom_config: Dict[str, Any] = Field(default_factory=dict, description="Agent-specific custom configuration") |
| |
| |
| |
| @validator('id') |
| def validate_id(cls, v): |
| """Ensure agent ID follows naming conventions""" |
| if not v.islower(): |
| raise ValueError("Agent ID must be lowercase") |
| if v.startswith('_') or v.endswith('_'): |
| raise ValueError("Agent ID cannot start or end with underscore") |
| return v |
| |
| @validator('capabilities') |
| def validate_capabilities(cls, v): |
| """🔧 ENHANCED: Validate capabilities against expanded allowed list""" |
| if not v: |
| raise ValueError("Agent must have at least one capability") |
| |
| |
| normalized = [] |
| for cap in v: |
| if not isinstance(cap, str): |
| raise ValueError("All capabilities must be strings") |
| |
| |
| normalized_cap = cap.lower().replace(' ', '_').replace('-', '_') |
| |
| |
| if normalized_cap not in ALLOWED_CAPABILITIES: |
| |
| suggestions = [c for c in ALLOWED_CAPABILITIES if cap.lower() in c or c in cap.lower()] |
| if suggestions: |
| raise ValueError(f"Invalid capability: {cap}. Did you mean one of: {suggestions[:3]}?") |
| else: |
| |
| if len(cap) > 3 and '_' in cap or cap.isalpha(): |
| print(f"⚠️ Auto-allowing new capability: {cap}") |
| ALLOWED_CAPABILITIES.add(normalized_cap) |
| normalized.append(normalized_cap) |
| else: |
| raise ValueError(f"Invalid capability: {cap}. Must be one of the predefined capabilities or a valid new capability name.") |
| else: |
| normalized.append(normalized_cap) |
| |
| return normalized |
| |
| class Config: |
| """Pydantic configuration""" |
| use_enum_values = True |
| validate_assignment = True |
| extra = "forbid" |
| schema_extra = { |
| "example": { |
| "id": "jane_alesi_001", |
| "name": "Jane Alesi", |
| "type": "coordinator", |
| "status": "active", |
| "description": "Lead AI Coordinator responsible for system orchestration", |
| "metadata": { |
| "version": "1.0.0", |
| "created": "2025-01-28T10:30:00Z", |
| "tags": ["coordinator", "production"] |
| }, |
| "appearance": { |
| "color": "#8B5CF6", |
| "avatar": "/assets/agents/jane-alesi.svg", |
| "display_name": "Jane Alesi", |
| "subtitle": "Lead AI Coordinator" |
| }, |
| "capabilities": [ |
| "system_coordination", |
| "multi_agent_management", |
| "architecture_planning" |
| ], |
| "llm_config": { |
| "model": "phi3:mini", |
| "temperature": 0.7, |
| "max_tokens": 2048, |
| "system_prompt": "You are Jane Alesi, the lead AI coordinator responsible for orchestrating multi-agent operations and system architecture decisions." |
| }, |
| "communication": { |
| "input_queue": "jane_alesi_input", |
| "output_queue": "jane_alesi_output", |
| "message_types": ["coordination", "system_status", "agent_management"] |
| }, |
| "ui_components": { |
| "dashboard_widget": "AgentCoordinatorCard", |
| "detail_view": "AgentCoordinatorDetail", |
| "configuration_form": "AgentCoordinatorConfig" |
| } |
| } |
| } |
|
|
| |
|
|
| class AgentUtils: |
| """Utility methods for agent operations""" |
| |
| @staticmethod |
| def _safe_enum_value(enum_field): |
| """Safe enum value extraction with fallback to string conversion""" |
| try: |
| if hasattr(enum_field, 'value'): |
| return enum_field.value |
| else: |
| return str(enum_field) |
| except (AttributeError, ValueError): |
| return 'unknown' |
| |
| @staticmethod |
| def to_dict(agent): |
| """Convert SaapAgent to dictionary with safe field access""" |
| try: |
| return { |
| 'id': getattr(agent, 'id', getattr(agent, 'agent_id', None)), |
| 'agent_id': getattr(agent, 'agent_id', getattr(agent, 'id', None)), |
| 'name': getattr(agent, 'name', ''), |
| 'description': getattr(agent, 'description', ''), |
| 'agent_type': AgentUtils._safe_enum_value(getattr(agent, 'type', 'unknown')), |
| 'status': AgentUtils._safe_enum_value(getattr(agent, 'status', 'inactive')), |
| 'capabilities': getattr(agent, 'capabilities', []), |
| 'color': getattr(agent.appearance, 'color', '#6B7280') if hasattr(agent, 'appearance') and agent.appearance else '#6B7280', |
| 'llm_config': AgentUtils._safe_dict(getattr(agent, 'llm_config', {})), |
| 'appearance': AgentUtils._safe_dict(getattr(agent, 'appearance', {})), |
| 'personality': getattr(agent, 'personality', {}), |
| 'metrics': AgentUtils._safe_dict(getattr(agent, 'metrics', {})), |
| 'created_at': AgentUtils._safe_datetime(getattr(agent, 'created_at', None)), |
| 'updated_at': AgentUtils._safe_datetime(getattr(agent, 'updated_at', None)), |
| 'last_active': AgentUtils._safe_datetime(getattr(agent, 'last_active', None)), |
| 'tags': getattr(agent, 'tags', []), |
| 'metadata': getattr(agent, 'metadata', {}) |
| } |
| except Exception as e: |
| |
| return { |
| 'id': str(id(agent)), |
| 'agent_id': str(id(agent)), |
| 'name': str(agent) if hasattr(agent, '__str__') else 'Unknown Agent', |
| 'description': 'Agent description unavailable', |
| 'agent_type': 'unknown', |
| 'status': 'inactive', |
| 'capabilities': [], |
| 'color': '#6B7280', |
| 'error': str(e) |
| } |
| |
| @staticmethod |
| def _safe_dict(obj): |
| """Safely convert object to dict""" |
| if obj is None: |
| return {} |
| if isinstance(obj, dict): |
| return obj |
| if hasattr(obj, 'dict'): |
| try: |
| return obj.dict() |
| except: |
| pass |
| if hasattr(obj, '__dict__'): |
| return obj.__dict__ |
| return {} |
| |
| @staticmethod |
| def _safe_datetime(dt): |
| """Safely convert datetime to ISO string""" |
| if dt is None: |
| return None |
| try: |
| return dt.isoformat() if hasattr(dt, 'isoformat') else str(dt) |
| except: |
| return None |
| class AgentRegistry(BaseModel): |
| """Registry containing multiple agents""" |
| agents: List[SaapAgent] = Field(..., description="List of registered agents") |
| version: str = Field("1.0.0", description="Registry schema version") |
| updated: datetime = Field(default_factory=datetime.utcnow) |
| |
| def get_agent(self, agent_id: str) -> Optional[SaapAgent]: |
| """Retrieve agent by ID""" |
| return next((agent for agent in self.agents if agent.id == agent_id), None) |
| |
| def get_agents_by_type(self, agent_type: AgentType) -> List[SaapAgent]: |
| """Retrieve agents by type""" |
| return [agent for agent in self.agents if agent.type == agent_type] |
| |
| def get_active_agents(self) -> List[SaapAgent]: |
| """Retrieve all active agents""" |
| return [agent for agent in self.agents if agent.status == AgentStatus.ACTIVE] |
|
|
| class AgentStats(BaseModel): |
| """Real-time agent statistics""" |
| agent_id: str = Field(..., description="Agent identifier") |
| messages_processed: int = Field(0, ge=0, description="Total messages processed") |
| messages_sent: int = Field(0, ge=0, description="Total messages sent") |
| uptime: int = Field(0, ge=0, description="Uptime in seconds") |
| avg_response_time: float = Field(0.0, ge=0.0, description="Average response time in milliseconds") |
| error_count: int = Field(0, ge=0, description="Total errors encountered") |
| last_activity: Optional[datetime] = Field(None, description="Last message/activity timestamp") |
| |
| |
| cpu_usage: float = Field(0.0, ge=0.0, le=100.0, description="CPU usage percentage") |
| memory_usage: float = Field(0.0, ge=0.0, description="Memory usage in MB") |
| queue_depth: int = Field(0, ge=0, description="Current queue depth") |
|
|
| |
|
|
| class AgentTemplates: |
| """Predefined agent configuration templates""" |
| |
| @staticmethod |
| def jane_alesi() -> SaapAgent: |
| """Jane Alesi - Lead Coordinator Agent""" |
| return SaapAgent( |
| id="jane_alesi", |
| name="Jane Alesi", |
| type=AgentType.COORDINATOR, |
| description="Lead AI Coordinator responsible for orchestrating multi-agent operations and strategic decision-making.", |
| metadata=AgentMetadata(version="1.0.0", tags=["coordinator", "lead"]), |
| appearance=AgentAppearance( |
| color="#8B5CF6", |
| avatar=None, |
| display_name="Justus Alesi", |
| subtitle="Legal Specialist", |
| description="Justus Alesi - Legal Specialist" |
| ), |
| capabilities=[ |
| "system_coordination", |
| "multi_agent_management", |
| "architecture_planning", |
| "decision_making" |
| ], |
| llm_config=LLMConfig( |
| model="phi3:mini", |
| system_prompt="You are Jane Alesi, the lead AI coordinator responsible for orchestrating multi-agent operations and making strategic system architecture decisions." |
| ), |
| communication=CommunicationConfig( |
| input_queue="jane_alesi_input", |
| output_queue="jane_alesi_output", |
| message_types=[MessageType.COORDINATION, MessageType.SYSTEM_STATUS, MessageType.AGENT_MANAGEMENT] |
| ), |
| ui_components=UIComponents( |
| dashboard_widget="AgentCoordinatorCard", |
| detail_view="AgentCoordinatorDetail" |
| ) |
| ) |
| |
| @staticmethod |
| def john_alesi() -> SaapAgent: |
| """John Alesi - Developer Agent""" |
| return SaapAgent( |
| id="john_alesi", |
| name="John Alesi", |
| type=AgentType.DEVELOPER, |
| description="Senior Software Developer specializing in Python, JavaScript, system architecture and code generation.", |
| metadata=AgentMetadata(version="1.0.0", tags=["developer", "coding"]), |
| appearance=AgentAppearance( |
| color="#14B8A6", |
| avatar="/assets/agents/john-alesi.svg", |
| display_name="John Alesi", |
| subtitle="Senior Software Developer", |
| description="Senior Software Developer specializing in Python, JavaScript, system architecture and code generation." |
| ), |
| capabilities=[ |
| "code_generation", |
| "debugging", |
| "architecture_design", |
| "code_review" |
| ], |
| llm_config=LLMConfig( |
| model="codellama:7b", |
| temperature=0.3, |
| system_prompt="You are John Alesi, a senior software developer specializing in Python, JavaScript, and system architecture." |
| ), |
| communication=CommunicationConfig( |
| input_queue="john_alesi_input", |
| output_queue="john_alesi_output", |
| message_types=[MessageType.REQUEST, MessageType.RESPONSE] |
| ), |
| ui_components=UIComponents( |
| dashboard_widget="AgentDeveloperCard", |
| detail_view="AgentDeveloperDetail" |
| ) |
| ) |
| |
| @staticmethod |
| def lara_alesi() -> SaapAgent: |
| """Lara Alesi - Medical AI Specialist""" |
| return SaapAgent( |
| id="lara_alesi", |
| name="Lara Alesi", |
| type=AgentType.SPECIALIST, |
| description="Advanced Medical AI Assistant specializing in clinical analysis, diagnosis support and health system architecture.", |
| metadata=AgentMetadata(version="1.0.0", tags=["medical", "healthcare", "specialist"]), |
| appearance=AgentAppearance( |
| color="#EC4899", |
| avatar=None, |
| display_name="Luna Alesi", |
| subtitle="Coaching Specialist", |
| description="Luna Alesi - Coaching Specialist" |
| ), |
| capabilities=[ |
| "medical_analysis", |
| "clinical_decision_support", |
| "health_data_analysis", |
| "medical_research" |
| ], |
| llm_config=LLMConfig( |
| model="phi3:mini", |
| temperature=0.5, |
| system_prompt="You are Lara Alesi, a medical AI specialist focused on clinical analysis, health data interpretation, and medical research support." |
| ), |
| communication=CommunicationConfig( |
| input_queue="lara_alesi_input", |
| output_queue="lara_alesi_output", |
| message_types=[MessageType.REQUEST, MessageType.RESPONSE] |
| ), |
| ui_components=UIComponents( |
| dashboard_widget="AgentMedicalCard", |
| detail_view="AgentMedicalDetail" |
| ) |
| ) |
| |
| @staticmethod |
| def theo_alesi() -> SaapAgent: |
| """Theo Alesi - Financial Intelligence Specialist""" |
| return SaapAgent( |
| id="theo_alesi", |
| name="Theo Alesi", |
| type=AgentType.SPECIALIST, |
| description="Advanced Financial & Investment Intelligence Specialist focusing on financial analysis, market intelligence and investment strategies.", |
| metadata=AgentMetadata(version="1.0.0", tags=["finance", "investment", "specialist"]), |
| appearance=AgentAppearance( |
| color="#F59E0B", |
| avatar=None, |
| display_name="Theo Alesi", |
| subtitle="Financial Specialist", |
| description="Theo Alesi - Financial Specialist" |
| ), |
| capabilities=[ |
| "financial_analysis", |
| "market_research", |
| "investment_strategy", |
| "risk_assessment", |
| "fintech_development", "market_research" |
| ], |
| llm_config=LLMConfig( |
| model="phi3:mini", |
| temperature=0.6, |
| system_prompt="You are Theo Alesi, a financial intelligence specialist with expertise in financial analysis, market research, and fintech application development." |
| ), |
| communication=CommunicationConfig( |
| input_queue="theo_alesi_input", |
| output_queue="theo_alesi_output", |
| message_types=[MessageType.REQUEST, MessageType.RESPONSE] |
| ), |
| ui_components=UIComponents( |
| dashboard_widget="AgentFinanceCard", |
| detail_view="AgentFinanceDetail" |
| ) |
| ) |
| |
| @staticmethod |
| def justus_alesi() -> SaapAgent: |
| """Justus Alesi - Legal Compliance Expert""" |
| return SaapAgent( |
| id="justus_alesi", |
| name="Justus Alesi", |
| type=AgentType.SPECIALIST, |
| description="Expert für Schweizer, Deutsches und EU-Recht with focus on digital compliance, DSGVO and fintech regulations.", |
| metadata=AgentMetadata(version="1.0.0", tags=["legal", "compliance", "specialist"]), |
| appearance=AgentAppearance( |
| color="#10B981", |
| avatar=None, |
| display_name="Leon Alesi", |
| subtitle="System Specialist", |
| description="Leon Alesi - System Specialist" |
| ), |
| capabilities=[ |
| "legal_compliance", |
| "gdpr_analysis", |
| "contract_review", |
| "regulatory_analysis", |
| "fintech_law" |
| ], |
| llm_config=LLMConfig( |
| model="phi3:mini", |
| temperature=0.4, |
| system_prompt="You are Justus Alesi, a legal expert specializing in German, Swiss and EU law with focus on digital compliance and fintech regulations." |
| ), |
| communication=CommunicationConfig( |
| input_queue="justus_alesi_input", |
| output_queue="justus_alesi_output", |
| message_types=[MessageType.REQUEST, MessageType.RESPONSE] |
| ), |
| ui_components=UIComponents( |
| dashboard_widget="AgentLegalCard", |
| detail_view="AgentLegalDetail" |
| ) |
| ) |
| |
| @staticmethod |
| def leon_alesi() -> SaapAgent: |
| """Leon Alesi - IT System Integration Specialist""" |
| return SaapAgent( |
| id="leon_alesi", |
| name="Leon Alesi", |
| type=AgentType.SPECIALIST, |
| description="IT-Systemintegrations-Spezialist focusing on infrastructure deployment, security and system architecture.", |
| metadata=AgentMetadata(version="1.0.0", tags=["system", "infrastructure", "specialist"]), |
| appearance=AgentAppearance( |
| color="#6366F1", |
| avatar="/assets/agents/leon-alesi.svg", |
| display_name="Leon Alesi", |
| subtitle="IT System Integration Specialist", |
| description="IT-Systemintegrations-Spezialist focusing on infrastructure deployment, security and system architecture." |
| ), |
| capabilities=[ |
| "system_administration", |
| "infrastructure_deployment", |
| "security_implementation", |
| "performance_optimization" |
| ], |
| llm_config=LLMConfig( |
| model="phi3:mini", |
| temperature=0.5, |
| system_prompt="You are Leon Alesi, an IT system integration specialist focused on infrastructure, security, and performance optimization." |
| ), |
| communication=CommunicationConfig( |
| input_queue="leon_alesi_input", |
| output_queue="leon_alesi_output", |
| message_types=[MessageType.REQUEST, MessageType.RESPONSE] |
| ), |
| ui_components=UIComponents( |
| dashboard_widget="AgentSystemCard", |
| detail_view="AgentSystemDetail" |
| ) |
| ) |
| |
| @staticmethod |
| def luna_alesi() -> SaapAgent: |
| """Luna Alesi - Coaching & Organizational Development""" |
| return SaapAgent( |
| id="luna_alesi", |
| name="Luna Alesi", |
| type=AgentType.SPECIALIST, |
| description="Coaching- und Organisationsentwicklungsexpertin with focus on team development and process optimization.", |
| metadata=AgentMetadata(version="1.0.0", tags=["coaching", "organization", "specialist"]), |
| appearance=AgentAppearance( |
| color="#8B5CF6", |
| avatar=None, |
| display_name="Justus Alesi", |
| subtitle="Legal Specialist", |
| description="Justus Alesi - Legal Specialist" |
| ), |
| capabilities=[ |
| "team_coaching", |
| "organizational_development", |
| "process_optimization", |
| "change_management" |
| ], |
| llm_config=LLMConfig( |
| model="phi3:mini", |
| temperature=0.7, |
| system_prompt="You are Luna Alesi, a coaching and organizational development expert focused on team development and process optimization." |
| ), |
| communication=CommunicationConfig( |
| input_queue="luna_alesi_input", |
| output_queue="luna_alesi_output", |
| message_types=[MessageType.REQUEST, MessageType.RESPONSE] |
| ), |
| ui_components=UIComponents( |
| dashboard_widget="AgentCoachingCard", |
| detail_view="AgentCoachingDetail" |
| ) |
| ) |
|
|
|
|
| |
|
|
| def validate_agent_json(agent_data: Dict[str, Any]) -> SaapAgent: |
| """Validate and parse agent JSON data""" |
| try: |
| return SaapAgent(**agent_data) |
| except Exception as e: |
| raise ValueError(f"Invalid agent configuration: {str(e)}") |
|
|
| def generate_agent_schema() -> Dict[str, Any]: |
| """Generate JSON schema for agent configuration""" |
| return SaapAgent.schema() |
|
|
| def get_allowed_capabilities() -> List[str]: |
| """Get list of all allowed capabilities""" |
| return sorted(list(ALLOWED_CAPABILITIES)) |
|
|
| if __name__ == "__main__": |
| |
| jane = AgentTemplates.jane_alesi() |
| print("Jane Alesi Agent:") |
| print(jane.json(indent=2)) |
| |
| |
| theo = AgentTemplates.theo_alesi() |
| print("\nTheo Alesi Agent:") |
| print(f"ID: {theo.id}, Name: {theo.name}, Capabilities: {theo.capabilities}") |
| |
| |
| schema = generate_agent_schema() |
| print("\nAgent JSON Schema keys:") |
| print(list(schema.keys())) |
| |
| |
| print(f"\nAllowed capabilities ({len(ALLOWED_CAPABILITIES)}):") |
| print(get_allowed_capabilities()) |
|
|