models.py•1.23 kB
from typing import Any
from pydantic import BaseModel, Field
from models.models import ToolDefinitionModel
# Outgoing (Server -> Plugin)
class WelcomeMessage(BaseModel):
type: str = "welcome"
serverTimeout: int
keepAliveInterval: int
class RegisteredMessage(BaseModel):
type: str = "registered"
session_id: str
class ExecuteCommandMessage(BaseModel):
type: str = "execute"
id: str
name: str
params: dict[str, Any]
timeout: float
# Incoming (Plugin -> Server)
class RegisterMessage(BaseModel):
type: str = "register"
project_name: str = "Unknown Project"
project_hash: str
unity_version: str = "Unknown"
class RegisterToolsMessage(BaseModel):
type: str = "register_tools"
tools: list[ToolDefinitionModel]
class PongMessage(BaseModel):
type: str = "pong"
session_id: str | None = None
class CommandResultMessage(BaseModel):
type: str = "command_result"
id: str
result: dict[str, Any] = Field(default_factory=dict)
# Session Info (API response)
class SessionDetails(BaseModel):
project: str
hash: str
unity_version: str
connected_at: str
class SessionList(BaseModel):
sessions: dict[str, SessionDetails]