from __future__ import annotations from datetime import datetime from typing import Optional, Dict, Any from pydantic import BaseModel, Field, ConfigDict class TaskBase(BaseModel): action: str target: str playbook: Optional[str] = None status: str = Field(default="pending") result_data: Optional[Dict[str, Any]] = None error_message: Optional[str] = None class TaskCreate(TaskBase): pass class TaskUpdate(BaseModel): status: Optional[str] = None started_at: Optional[datetime] = None completed_at: Optional[datetime] = None error_message: Optional[str] = None result_data: Optional[Dict[str, Any]] = None class TaskOut(TaskBase): id: str started_at: Optional[datetime] = None completed_at: Optional[datetime] = None created_at: datetime model_config = ConfigDict(from_attributes=True)