47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
|
|
"""
|
||
|
|
Tool Call Schema
|
||
|
|
|
||
|
|
Defines request/response structures for tool invocation.
|
||
|
|
"""
|
||
|
|
|
||
|
|
from pydantic import BaseModel, Field
|
||
|
|
from typing import Optional, Dict, Any, List
|
||
|
|
from datetime import datetime
|
||
|
|
|
||
|
|
|
||
|
|
class ToolCallRequest(BaseModel):
|
||
|
|
"""Tool call request"""
|
||
|
|
|
||
|
|
tool_name: str = Field(..., description="Tool name")
|
||
|
|
command: str = Field(..., description="Command name")
|
||
|
|
parameters: Dict[str, Any] = Field(default_factory=dict, description="Parameters")
|
||
|
|
timeout: Optional[int] = Field(default=None, description="Timeout override")
|
||
|
|
context: Optional[Dict[str, Any]] = Field(default=None, description="Context information")
|
||
|
|
|
||
|
|
|
||
|
|
class ToolCallResponse(BaseModel):
|
||
|
|
"""Tool call response"""
|
||
|
|
|
||
|
|
status: str = Field(..., description="Status: success/error")
|
||
|
|
result: Optional[Any] = Field(default=None, description="Execution result")
|
||
|
|
error: Optional[str] = Field(default=None, description="Error message")
|
||
|
|
message: Optional[str] = Field(default=None, description="AI-friendly message")
|
||
|
|
base64: Optional[str] = Field(default=None, description="Base64 data")
|
||
|
|
duration_ms: Optional[int] = Field(default=None, description="Execution duration")
|
||
|
|
timestamp: datetime = Field(default_factory=datetime.utcnow)
|
||
|
|
|
||
|
|
|
||
|
|
class ToolExecutionLog(BaseModel):
|
||
|
|
"""Tool execution log"""
|
||
|
|
|
||
|
|
id: str
|
||
|
|
tool_name: str
|
||
|
|
command: str
|
||
|
|
parameters: Dict[str, Any]
|
||
|
|
status: str
|
||
|
|
duration_ms: int
|
||
|
|
error: Optional[str] = None
|
||
|
|
user_id: Optional[str] = None
|
||
|
|
agent_id: Optional[str] = None
|
||
|
|
created_at: datetime = Field(default_factory=datetime.utcnow)
|