from __future__ import annotations

from typing import Literal

from pydantic import BaseModel, Field


class WorkflowPlan(BaseModel):
    route: Literal["direct_answer", "execute"] = "execute"
    task_brief: str = ""
    execution_mode: Literal["sync", "async"] = "sync"
    acceptance_criteria: list[str] = Field(default_factory=list)
    user_message: str = ""


class VerificationResult(BaseModel):
    passed: bool = False
    user_message: str = ""
    evidence: list[str] = Field(default_factory=list)
    failed_criteria: list[str] = Field(default_factory=list)
    retryable: bool = False

