feat(perception): expose active app metadata in UI tree
Tests / Test passed: 971

This commit is contained in:
2026-07-16 08:13:04 +08:00
parent 059fb272bb
commit 9a17297f1e
13 changed files with 246 additions and 17 deletions
+12 -6
View File
@@ -4,7 +4,7 @@ from typing import Any
from device.manager import DeviceManager
from perception.ui_parser import parse_ui_tree
from tools._device import get_driver
from tools._device import get_active_app_info, get_driver
def get_raw_ui_tree(
@@ -19,8 +19,14 @@ def get_ui_tree(
device_id: str | None = None,
*,
manager: DeviceManager | None = None,
) -> list[dict[str, object]]:
return [
element.to_dict()
for element in parse_ui_tree(get_raw_ui_tree(device_id, manager=manager))
]
include_app_info: bool = False,
) -> list[dict[str, object]] | dict[str, object]:
driver = get_driver(device_id, manager=manager)
nodes = [element.to_dict() for element in parse_ui_tree(driver.tree())]
if not include_app_info:
return nodes
active_app = get_active_app_info(driver)
return {
"app": active_app.to_dict() if active_app is not None else None,
"nodes": nodes,
}