{% extends "base.html" %} {% block title %}Task {{ task.id }} · Apex Console{% endblock %} {% block body %}

Task Detail

← Back to tasks

{{ task.goal }}

{{ task.status }}
Task ID
{{ task.id }}
Device
{{ device_name }}
Created
{{ task.created_at or "-" }}
Updated
{{ task.updated_at or "-" }}
{% if task.failure_reason %}
Failure
{{ task.failure_reason }}
{% endif %}
Step {{ current_step_index }} of {{ timeline|length }}
{% if not timeline %}
No timeline records captured.
{% else %}

Before action

{% if current_step.before_image_base64 %} Screenshot captured before the action {% else %} No screenshot {% endif %}

After action

{% if current_step.after_image_base64 %} Screenshot captured after the action {% else %} No screenshot {% endif %}

Operation

Action
{{ current_step.tool_call.get('action', '-') }}
Description
{{ current_step.tool_call.get('description', '-') }}
{{ current_step.tool_call | tojson(indent=2) }}

Execution result

{{ current_step.result | tojson(indent=2) }}

OCR results

{% if ocr_results %}
    {% for ocr in ocr_results %}
  • {{ ocr.get('text') or '-' }} {{ ocr.get('bounds') | tojson }} {% if ocr.get('confidence') is not none %} confidence {{ '%.3f' | format(ocr.get('confidence')) }} {% endif %}
  • {% endfor %}
{% else %}

No OCR output captured for this step.

{% endif %}
{% if ui_tree_nodes %}

UI tree

{{ ui_tree_nodes|length }} normalized nodes
    {% for node in ui_tree_nodes %}
  • {{ node.get('type') or 'unknown' }} {{ node.get('text') or node.get('id') or '-' }} {{ node.get('bounds') | tojson }} {% if node.get('confidence') is not none %} confidence {{ '%.3f' | format(node.get('confidence')) }} {% endif %}
  • {% endfor %}
{% endif %}
{% endif %}
{% endblock %}