Files
JARVIS/backend/app/tools/schemas/tool_call.py

47 lines
1.6 KiB
Python
Raw Normal View History

"""
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)