This commit is contained in:
+10
-2
@@ -113,6 +113,9 @@ class Scene:
|
||||
width: int
|
||||
height: int
|
||||
elements: list[SceneElement] = field(default_factory=list)
|
||||
# Keep raw OCR observations for local execution evidence without duplicating
|
||||
# them in the normalized, LLM-facing scene payload.
|
||||
ocr_elements: list[SceneElement] = field(default_factory=list)
|
||||
|
||||
def to_dict(self) -> dict[str, Any]:
|
||||
return {
|
||||
@@ -120,6 +123,9 @@ class Scene:
|
||||
"elements": [element.to_dict() for element in self.elements],
|
||||
}
|
||||
|
||||
def ocr_results_to_dict(self) -> list[dict[str, Any]]:
|
||||
return [element.to_dict() for element in self.ocr_elements]
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: dict[str, Any]) -> "Scene":
|
||||
screen = data.get("screen") or {}
|
||||
@@ -127,8 +133,11 @@ class Scene:
|
||||
width=int(screen.get("width") or data.get("width") or 0),
|
||||
height=int(screen.get("height") or data.get("height") or 0),
|
||||
elements=[
|
||||
SceneElement.from_dict(element) for element in data.get("elements", [])
|
||||
],
|
||||
ocr_elements=[
|
||||
SceneElement.from_dict(element)
|
||||
for element in data.get("elements", [])
|
||||
for element in data.get("ocr_elements", [])
|
||||
],
|
||||
)
|
||||
|
||||
@@ -179,4 +188,3 @@ class Step:
|
||||
"result": self.result,
|
||||
"error": self.error,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user