71 lines
1.3 KiB
Python
71 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class EdgeHeartbeatRequest(BaseModel):
|
|
edge_id: str
|
|
hostname: str
|
|
os_type: str
|
|
agent_version: str
|
|
capabilities: list[str] = Field(default_factory=list)
|
|
|
|
|
|
class EdgeHeartbeatData(BaseModel):
|
|
edge_id: str
|
|
node_status: str
|
|
last_heartbeat_at: str
|
|
|
|
|
|
class EdgePullTasksRequest(BaseModel):
|
|
edge_id: str
|
|
max_tasks: int = 5
|
|
|
|
|
|
class EdgeTaskItem(BaseModel):
|
|
task_id: str
|
|
step_id: str
|
|
tool_name: str
|
|
params: dict[str, Any]
|
|
expire_at: str
|
|
|
|
|
|
class EdgePullTasksData(BaseModel):
|
|
tasks: list[EdgeTaskItem]
|
|
|
|
|
|
class EdgeTaskReportRequest(BaseModel):
|
|
edge_id: str
|
|
task_id: str
|
|
step_id: str
|
|
tool_name: str
|
|
success: bool
|
|
code: str
|
|
message: str
|
|
data: dict[str, Any] = Field(default_factory=dict)
|
|
evidence: dict[str, Any] = Field(default_factory=dict)
|
|
started_at: str
|
|
finished_at: str
|
|
|
|
|
|
class EdgeTaskReportData(BaseModel):
|
|
task_id: str
|
|
step_id: str
|
|
step_status: str
|
|
task_status: str
|
|
|
|
|
|
class EdgeEventRequest(BaseModel):
|
|
edge_id: str
|
|
event_type: str
|
|
message: str
|
|
detail: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class EdgeEventData(BaseModel):
|
|
edge_id: str
|
|
event_type: str
|
|
accepted: bool
|