from __future__ import annotations from dataclasses import dataclass, field from typing import TYPE_CHECKING, Any from core.models import Scene if TYPE_CHECKING: from runtime.executor import StepResult from world.models import WorldState @dataclass class TaskContext: task_id: str goal: str device_platform: str | None = None scenes: list[Scene] = field(default_factory=list) step_results: list["StepResult"] = field(default_factory=list) world: "WorldState | None" = None planner_history: list[dict[str, Any]] = field(default_factory=list) def add_scene(self, scene: Scene) -> None: self.scenes.append(scene) def add_step_result(self, result: "StepResult") -> None: self.step_results.append(result) @property def latest_scene(self) -> Scene | None: if not self.scenes: return None return self.scenes[-1]