Files
agentic-mobile-control/runtime/describe_screen_semantic.py
T
q792602257 49ad589c2d fix(semantic-scene): move describe_screen_semantic out of the tools/ layer
tools/ is a Hexagonal inner layer that must never depend on LLM
concerns (ADR 0002), but describe_screen_semantic.py imported
semantic.enricher, which pulls in the Anthropic client by default.
Relocated the wrapper to runtime/, which is where LLM-dependent code
is allowed to live; updated the tool registry and all test imports
accordingly. No behavior change.

openspec: semantic-scene capability, archived change semantic-scene-runtime
2026-07-07 08:30:49 +08:00

33 lines
1.1 KiB
Python

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,
}