33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
|
|
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
|