feat: add lead_reasoning field to ApprovalCreate and update validation logic
This commit is contained in:
@@ -48,6 +48,7 @@ class ApprovalCreate(ApprovalBase):
|
||||
"""Payload for creating a new approval request."""
|
||||
|
||||
agent_id: UUID | None = None
|
||||
lead_reasoning: str | None = None
|
||||
|
||||
@model_validator(mode="after")
|
||||
def validate_lead_reasoning(self) -> Self:
|
||||
@@ -62,6 +63,13 @@ class ApprovalCreate(ApprovalBase):
|
||||
nested_reason = decision.get("reason")
|
||||
if isinstance(nested_reason, str) and nested_reason.strip():
|
||||
return self
|
||||
lead_reasoning = self.lead_reasoning
|
||||
if isinstance(lead_reasoning, str) and lead_reasoning.strip():
|
||||
self.payload = {
|
||||
**(payload if isinstance(payload, dict) else {}),
|
||||
"reason": lead_reasoning.strip(),
|
||||
}
|
||||
return self
|
||||
raise ValueError(LEAD_REASONING_REQUIRED_ERROR)
|
||||
|
||||
|
||||
|
||||
@@ -58,3 +58,16 @@ def test_approval_create_accepts_float_confidence() -> None:
|
||||
},
|
||||
)
|
||||
assert model.confidence == 88.75
|
||||
|
||||
|
||||
def test_approval_create_accepts_top_level_lead_reasoning() -> None:
|
||||
model = ApprovalCreate.model_validate(
|
||||
{
|
||||
"action_type": "task.update",
|
||||
"confidence": 80,
|
||||
"lead_reasoning": "Need manual review before changing task status.",
|
||||
},
|
||||
)
|
||||
assert model.payload == {
|
||||
"reason": "Need manual review before changing task status.",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user