117 lines
3.0 KiB
Python
117 lines
3.0 KiB
Python
from typing import Any, Dict, List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
NODE_PROTOCOL_VERSION = "1"
|
|
|
|
|
|
class EdgeNodeIdentityBase(BaseModel):
|
|
protocol_version: str = NODE_PROTOCOL_VERSION
|
|
node_id: str
|
|
display_name: str
|
|
service: str = "dashboard-edge"
|
|
transport_kind: str = "edge"
|
|
runtime_kind: str = "docker"
|
|
core_adapter: str = "nanobot"
|
|
|
|
|
|
class EdgeStatusResponse(BaseModel):
|
|
status: str
|
|
|
|
|
|
class EdgeStateWriteRequest(BaseModel):
|
|
data: Dict[str, Any] = Field(default_factory=dict)
|
|
workspace_root: Optional[str] = None
|
|
|
|
|
|
class EdgeStateResponse(BaseModel):
|
|
bot_id: str
|
|
state_key: str
|
|
data: Dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class EdgeNativePreflightRequest(BaseModel):
|
|
native_command: Optional[str] = None
|
|
native_workdir: Optional[str] = None
|
|
|
|
|
|
class EdgeNativePreflightResponse(BaseModel):
|
|
ok: bool = False
|
|
command: List[str] = Field(default_factory=list)
|
|
workdir: str = ""
|
|
command_available: bool = False
|
|
workdir_exists: bool = False
|
|
detail: str = ""
|
|
|
|
|
|
class EdgeCommandRequest(BaseModel):
|
|
command: str
|
|
media: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class EdgeLogsResponse(BaseModel):
|
|
bot_id: str
|
|
logs: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class EdgeMonitorEnsureResponse(BaseModel):
|
|
ensured: bool = False
|
|
|
|
|
|
class EdgeMonitorPacket(BaseModel):
|
|
protocol_version: str = NODE_PROTOCOL_VERSION
|
|
node_id: str = ""
|
|
bot_id: str = ""
|
|
seq: int = 0
|
|
captured_at: str = ""
|
|
packet: Dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class EdgeMonitorPacketsResponse(BaseModel):
|
|
protocol_version: str = NODE_PROTOCOL_VERSION
|
|
node_id: str = ""
|
|
bot_id: str
|
|
latest_seq: int = 0
|
|
packets: List[EdgeMonitorPacket] = Field(default_factory=list)
|
|
|
|
|
|
class EdgeWorkspaceSyncRequest(BaseModel):
|
|
channels_override: Optional[List[Dict[str, Any]]] = None
|
|
global_delivery_override: Optional[Dict[str, Any]] = None
|
|
runtime_overrides: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
class EdgeMarkdownWriteRequest(BaseModel):
|
|
content: str = ""
|
|
|
|
|
|
class EdgeNodeSelfResponse(BaseModel):
|
|
protocol_version: str = NODE_PROTOCOL_VERSION
|
|
node_id: str
|
|
display_name: str
|
|
service: str = "dashboard-edge"
|
|
transport_kind: str = "edge"
|
|
runtime_kind: str = "docker"
|
|
core_adapter: str = "nanobot"
|
|
capabilities: Dict[str, Any] = Field(default_factory=dict)
|
|
resources: Dict[str, Any] = Field(default_factory=dict)
|
|
reported_at: str = ""
|
|
|
|
|
|
class EdgeNodeResourcesResponse(BaseModel):
|
|
protocol_version: str = NODE_PROTOCOL_VERSION
|
|
node_id: str
|
|
display_name: str = ""
|
|
service: str = "dashboard-edge"
|
|
transport_kind: str = "edge"
|
|
runtime_kind: str = "docker"
|
|
core_adapter: str = "nanobot"
|
|
resources: Dict[str, Any] = Field(default_factory=dict)
|
|
reported_at: str = ""
|
|
|
|
|
|
class EdgeNodeHeartbeatResponse(EdgeNodeIdentityBase):
|
|
capabilities: Dict[str, Any] = Field(default_factory=dict)
|
|
resources: Dict[str, Any] = Field(default_factory=dict)
|
|
reported_at: str = ""
|