Spaces:
Sleeping
Sleeping
Sync from GitHub via hub-sync
Browse files- src/schemas.py +36 -5
src/schemas.py
CHANGED
|
@@ -6,19 +6,28 @@ from pydantic import BaseModel, Field
|
|
| 6 |
|
| 7 |
|
| 8 |
class ToolCall(BaseModel):
|
| 9 |
-
"""A
|
| 10 |
|
| 11 |
call_id: str = Field(default_factory=lambda: str(uuid4()))
|
| 12 |
tool_name: str
|
| 13 |
arguments: Dict[str, Any] = Field(default_factory=dict)
|
| 14 |
|
| 15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
class ToolResult(BaseModel):
|
| 17 |
-
"""Normalized result returned by
|
| 18 |
|
| 19 |
call_id: str
|
| 20 |
tool_name: str
|
| 21 |
-
status: Literal["success", "error"]
|
| 22 |
output: Optional[Any] = None
|
| 23 |
error: Optional[str] = None
|
| 24 |
started_at: datetime
|
|
@@ -27,7 +36,7 @@ class ToolResult(BaseModel):
|
|
| 27 |
|
| 28 |
|
| 29 |
class AuditRecord(BaseModel):
|
| 30 |
-
"""Persistent record of one tool execution."""
|
| 31 |
|
| 32 |
timestamp: datetime = Field(
|
| 33 |
default_factory=lambda: datetime.now(timezone.utc)
|
|
@@ -42,4 +51,26 @@ class AgentRunResult(BaseModel):
|
|
| 42 |
user_request: str
|
| 43 |
final_answer: str
|
| 44 |
tool_calls: List[ToolCall] = Field(default_factory=list)
|
| 45 |
-
tool_results: List[ToolResult] = Field(default_factory=list)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
|
| 7 |
|
| 8 |
class ToolCall(BaseModel):
|
| 9 |
+
"""A structured request from the model to use one tool."""
|
| 10 |
|
| 11 |
call_id: str = Field(default_factory=lambda: str(uuid4()))
|
| 12 |
tool_name: str
|
| 13 |
arguments: Dict[str, Any] = Field(default_factory=dict)
|
| 14 |
|
| 15 |
|
| 16 |
+
class ToolAuthorization(BaseModel):
|
| 17 |
+
"""Application-owned decision about whether a tool call may execute."""
|
| 18 |
+
|
| 19 |
+
call_id: str
|
| 20 |
+
tool_name: str
|
| 21 |
+
status: Literal["approved", "blocked"]
|
| 22 |
+
reason: str
|
| 23 |
+
|
| 24 |
+
|
| 25 |
class ToolResult(BaseModel):
|
| 26 |
+
"""Normalized result returned by the controlled execution layer."""
|
| 27 |
|
| 28 |
call_id: str
|
| 29 |
tool_name: str
|
| 30 |
+
status: Literal["success", "blocked", "error"]
|
| 31 |
output: Optional[Any] = None
|
| 32 |
error: Optional[str] = None
|
| 33 |
started_at: datetime
|
|
|
|
| 36 |
|
| 37 |
|
| 38 |
class AuditRecord(BaseModel):
|
| 39 |
+
"""Persistent record of one requested tool execution."""
|
| 40 |
|
| 41 |
timestamp: datetime = Field(
|
| 42 |
default_factory=lambda: datetime.now(timezone.utc)
|
|
|
|
| 51 |
user_request: str
|
| 52 |
final_answer: str
|
| 53 |
tool_calls: List[ToolCall] = Field(default_factory=list)
|
| 54 |
+
tool_results: List[ToolResult] = Field(default_factory=list)
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
class AgentRunEvent(BaseModel):
|
| 58 |
+
"""Observable event emitted while a tool-using agent request is running."""
|
| 59 |
+
|
| 60 |
+
event: Literal[
|
| 61 |
+
"run_started",
|
| 62 |
+
"model_thinking",
|
| 63 |
+
"tool_requested",
|
| 64 |
+
"tool_approved",
|
| 65 |
+
"tool_blocked",
|
| 66 |
+
"tool_succeeded",
|
| 67 |
+
"tool_failed",
|
| 68 |
+
"final_answer",
|
| 69 |
+
"max_rounds_reached",
|
| 70 |
+
]
|
| 71 |
+
round_index: Optional[int] = None
|
| 72 |
+
message: str
|
| 73 |
+
call: Optional[ToolCall] = None
|
| 74 |
+
authorization: Optional[ToolAuthorization] = None
|
| 75 |
+
result: Optional[ToolResult] = None
|
| 76 |
+
final_result: Optional[AgentRunResult] = None
|