"""Dvādaśa head output schemas: claims, risks, structured outputs per head.""" from enum import Enum from typing import Any from pydantic import BaseModel, Field from fusionagi.schemas.grounding import Citation class HeadId(str, Enum): """Identifiers for the 11 content heads plus Witness meta-controller.""" LOGIC = "logic" RESEARCH = "research" SYSTEMS = "systems" STRATEGY = "strategy" PRODUCT = "product" SECURITY = "security" SAFETY = "safety" RELIABILITY = "reliability" COST = "cost" DATA = "data" DEVEX = "devex" WITNESS = "witness" class HeadClaim(BaseModel): """Atomic statement from a head with confidence and evidence.""" claim_text: str = Field(..., min_length=1, description="The atomic claim statement") confidence: float = Field(..., ge=0.0, le=1.0, description="Confidence in [0, 1]") evidence: list[Citation] = Field(default_factory=list, description="Citations, tool results, reasoning steps") assumptions: list[str] = Field(default_factory=list, description="Assumptions made") class HeadRisk(BaseModel): """Risk or failure mode identified by a head.""" description: str = Field(..., min_length=1, description="Description of the risk") severity: str = Field(default="medium", description="low, medium, high, critical") class HeadOutput(BaseModel): """Structured output from a Dvādaśa head.""" head_id: HeadId = Field(..., description="Which head produced this") summary: str = Field(..., min_length=1, description="1–3 sentence summary") claims: list[HeadClaim] = Field(default_factory=list, description="Atomic claims with confidence") risks: list[HeadRisk] = Field(default_factory=list, description="Failure modes identified") questions: list[str] = Field(default_factory=list, description="Only if absolutely necessary") recommended_actions: list[str] = Field(default_factory=list, description="Suggested next steps") tone_guidance: str = Field(default="", description="For persona consistency") __all__ = [ "HeadId", "HeadClaim", "HeadRisk", "HeadOutput", ]