Files
FusionAGI/fusionagi/schemas/head.py

61 lines
2.1 KiB
Python
Raw Normal View History

"""Dvādaśa head output schemas: claims, risks, structured outputs per head."""
from enum import Enum
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="13 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",
]