62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
"""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",
|
||
]
|