31 lines
716 B
Python
31 lines
716 B
Python
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]
|
|
|