from pydantic import BaseModel, Field from typing import List, Dict, Any, Optional from datetime import datetime class Agent(BaseModel): """Datenmodell für einen Agenten""" id: str name: str type: str capabilities: List[str] = [] description: Optional[str] = None class DataObject(BaseModel): """Datenmodell für ein Datenobjekt""" id: str name: str type: str # 'document', 'image', etc. size: Optional[str] = None upload_date: Optional[str] = None content_type: Optional[str] = None path: Optional[str] = None class Prompt(BaseModel): """Datenmodell für einen Prompt""" id: str content: str created_at: str class Workspace(BaseModel): """Datenmodell für einen Workspace""" id: str name: str created_at: str prompts: List[Prompt] = [] agents: List[Agent] = [] dataObjectReferences: List[str] = [] class WorkflowRequest(BaseModel): """Anforderung zur Ausführung eines Workflows""" workspace_id: str prompt: str agents: List[str] # Liste von Agent-IDs files: List[str] # Liste von Datei-IDs workflow_name: Optional[str] = None class WorkflowResponse(BaseModel): """Antwort nach dem Start eines Workflows""" workflow_id: str status: str message: str class LogEntry(BaseModel): """Protokolleintrag während der Workflow-Ausführung""" id: str message: str type: str # 'info', 'error', 'start', 'complete', 'success' timestamp: str agent_id: Optional[str] = None agent_name: Optional[str] = None class Result(BaseModel): """Ergebnis eines Agenten während der Workflow-Ausführung""" id: str title: str agent_id: str agent_name: str type: str # 'text', 'chart', 'image', etc. content: str timestamp: str metadata: Optional[Dict[str, Any]] = None class WorkflowStatus(BaseModel): """Status eines Workflows""" id: str name: Optional[str] = None status: str # 'running', 'completed', 'failed' progress: float # 0.0 - 1.0 started_at: str completed_at: Optional[str] = None agent_statuses: Optional[Dict[str, str]] = None