from __future__ import annotations from core.models import Scene from device.manager import DeviceManager from perception.ocr import PaddleOCREngine from perception.provider import PerceptionProvider from semantic.config import SemanticConfig from semantic.enricher import SemanticLLMClient, enrich_scene from semantic.models import SemanticScene from tools.describe_screen import describe_screen def describe_screen_semantic( device_id: str | None = None, *, manager: DeviceManager | None = None, ocr_engine: PaddleOCREngine | None = None, perception_provider: PerceptionProvider | None = None, client: SemanticLLMClient | None = None, semantic_config: SemanticConfig | None = None, ) -> dict[str, Scene | SemanticScene | None]: scene = describe_screen( device_id, manager=manager, ocr_engine=ocr_engine, perception_provider=perception_provider, ) semantic_scene = enrich_scene(scene, client=client, config=semantic_config) return { "scene": scene, "semantic_scene": semantic_scene, }