from __future__ import annotations from datetime import datetime, timezone from typing import Any, Literal from pydantic import BaseModel, Field TaskLifecycleStatus = Literal["pending", "in_progress", "completed", "failed", "blocked"] VerificationStatus = Literal["passed", "failed", "skipped"] class AgentTask(BaseModel): task_id: str title: str status: TaskLifecycleStatus = "pending" owner_agent_id: str | None = None role: str | None = None goal: str | None = None expected_evidence: list[dict[str, Any]] = Field(default_factory=list) evidence: list[dict[str, Any]] = Field(default_factory=list) result_summary: str | None = None created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) class TaskResult(BaseModel): task_id: str status: VerificationStatus summary: str | None = None evidence: list[dict[str, Any]] = Field(default_factory=list) output_data: dict[str, Any] | None = None