from __future__ import annotations from dataclasses import dataclass, field from typing import TYPE_CHECKING from core.models import Scene if TYPE_CHECKING: from runtime.executor import StepResult @dataclass class TaskContext: task_id: str goal: str scenes: list[Scene] = field(default_factory=list) step_results: list["StepResult"] = 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]