This commit is contained in:
+34
-4
@@ -136,13 +136,22 @@ class TaskRunner:
|
||||
if should_stop is not None and should_stop():
|
||||
return self._interrupt_task(task)
|
||||
executable_step = self._step_for_device(step, task.device_id)
|
||||
before_screenshot = self._planning_screenshot(task.device_id)
|
||||
result = self.executor.execute(
|
||||
executable_step,
|
||||
context=context,
|
||||
)
|
||||
after_screenshot = self._planning_screenshot(task.device_id)
|
||||
context.add_step_result(result)
|
||||
self._record_step_result(
|
||||
world_handle, context, task, scene, step, result
|
||||
world_handle,
|
||||
context,
|
||||
task,
|
||||
scene,
|
||||
step,
|
||||
result,
|
||||
before_screenshot=before_screenshot,
|
||||
after_screenshot=after_screenshot,
|
||||
)
|
||||
self._emit_step_progress(
|
||||
len(context.step_results),
|
||||
@@ -204,6 +213,9 @@ class TaskRunner:
|
||||
scene: Scene,
|
||||
step: PlannedStep,
|
||||
result: object,
|
||||
*,
|
||||
before_screenshot: bytes | None = None,
|
||||
after_screenshot: bytes | None = None,
|
||||
) -> None:
|
||||
"""Record one executed step's bookkeeping: world-model observe + timeline append.
|
||||
|
||||
@@ -212,7 +224,14 @@ class TaskRunner:
|
||||
cannot drift apart on what gets recorded for a step.
|
||||
"""
|
||||
self._update_world(world_handle, context, scene, step, result)
|
||||
self._append_timeline(task, scene, step, result)
|
||||
self._append_timeline(
|
||||
task,
|
||||
scene,
|
||||
step,
|
||||
result,
|
||||
before_screenshot=before_screenshot,
|
||||
after_screenshot=after_screenshot,
|
||||
)
|
||||
|
||||
def _emit_step_progress(
|
||||
self, step_index: int, step_status: str, summary: str
|
||||
@@ -330,10 +349,19 @@ class TaskRunner:
|
||||
scene: Scene,
|
||||
step: PlannedStep,
|
||||
result: object,
|
||||
*,
|
||||
before_screenshot: bytes | None = None,
|
||||
after_screenshot: bytes | None = None,
|
||||
) -> None:
|
||||
if not self.timeline:
|
||||
return
|
||||
screenshot = self._planning_screenshot(task.device_id)
|
||||
ocr_results = scene.ocr_results_to_dict()
|
||||
if not ocr_results:
|
||||
ocr_results = [
|
||||
element.to_dict()
|
||||
for element in scene.elements
|
||||
if element.source == "ocr"
|
||||
]
|
||||
self.timeline.append(
|
||||
task_id=task.id,
|
||||
scene=scene.to_dict(),
|
||||
@@ -346,7 +374,9 @@ class TaskRunner:
|
||||
result=result.to_dict()
|
||||
if hasattr(result, "to_dict")
|
||||
else {"result": result},
|
||||
screenshot=screenshot,
|
||||
before_screenshot=before_screenshot,
|
||||
after_screenshot=after_screenshot,
|
||||
ocr_results=ocr_results,
|
||||
)
|
||||
|
||||
def _step_for_device(self, step: PlannedStep, device_id: str) -> PlannedStep:
|
||||
|
||||
Reference in New Issue
Block a user