Files
clickthrough/server/models.py
Luna 1b0b9cfdef
Some checks failed
CI / test (push) Failing after 45s
Add planner previews and streaming
2026-04-05 19:33:24 +02:00

68 lines
1.5 KiB
Python

from __future__ import annotations
from enum import Enum
from typing import Any, Dict, List, Optional, Tuple
from pydantic import BaseModel, Field
class ActionType(str, Enum):
CLICK = "click"
DOUBLE_CLICK = "double_click"
DRAG = "drag"
TYPE = "type"
SCROLL = "scroll"
class GridInitRequest(BaseModel):
width: int
height: int
screenshot_base64: str
rows: Optional[int] = None
columns: Optional[int] = None
memo: Optional[str] = None
class GridCellModel(BaseModel):
cell_id: str
row: int
column: int
bounds: Tuple[int, int, int, int]
label: Optional[str] = None
class GridDescriptor(BaseModel):
grid_id: str
rows: int
columns: int
cells: List[GridCellModel]
metadata: Dict[str, Any] = Field(default_factory=dict)
class ActionPayload(BaseModel):
grid_id: str
action: ActionType
target_cell: Optional[str] = None
text: Optional[str] = None
comment: Optional[str] = None
data: Dict[str, Any] = Field(default_factory=dict)
class ActionResult(BaseModel):
success: bool
detail: str
coordinates: Optional[Tuple[int, int]] = None
payload: Dict[str, Any] = Field(default_factory=dict)
class GridPlanRequest(BaseModel):
preferred_label: Optional[str] = None
action: ActionType = ActionType.CLICK
text: Optional[str] = None
comment: Optional[str] = None
class GridRefreshRequest(BaseModel):
screenshot_base64: str
memo: Optional[str] = None