feat(runtime): capture step evidence in console
Tests / Test passed: 862

This commit is contained in:
2026-07-15 10:12:09 +08:00
parent 8d5b02e37f
commit ccde30e378
20 changed files with 594 additions and 53 deletions
+28
View File
@@ -49,6 +49,28 @@ def _default_driver_type() -> str:
return _DEFAULT_FORM_VALUES["driver_type"]
def _ocr_results(record: dict[str, Any]) -> list[dict[str, Any]]:
raw_results = record.get("ocr_results")
if not isinstance(raw_results, list):
return []
return [result for result in raw_results if isinstance(result, dict)]
def _ui_tree_nodes(record: dict[str, Any]) -> list[dict[str, Any]]:
tool_call = record.get("tool_call")
if not isinstance(tool_call, dict):
return []
if tool_call.get("action") not in {"get_ui_tree", "ui_tree"}:
return []
step_result = record.get("result")
if not isinstance(step_result, dict):
return []
raw_nodes = step_result.get("result")
if not isinstance(raw_nodes, list):
return []
return [node for node in raw_nodes if isinstance(node, dict)]
def _config_context(
request: Request,
service: ConsoleService,
@@ -183,6 +205,12 @@ def create_console_web_router(service: ConsoleService) -> APIRouter:
timeline=timeline,
current_step=current_step if current_step is not None else {},
current_step_index=index,
ocr_results=_ocr_results(current_step)
if current_step is not None
else [],
ui_tree_nodes=_ui_tree_nodes(current_step)
if current_step is not None
else [],
)
)