{% extends "base.html" %} {% from "partials/status_badge.html" import status_badge %} {% from "partials/event_pill.html" import event_pill %} {% macro short_id(value) -%} {% set text = value|string %} {% if text|length > 37 %}{{ text[:22] }}...{{ text[-12:] }}{% else %}{{ text }}{% endif %} {%- endmacro %} {% block page_title %}{% endblock %} {% block content %}
Invocation

{{ task.task_id.func_name }}

{{ status_badge(invocation.status.name) }} {{ workflow_role.label }} {% if workflow_role.is_subworkflow %} sub-workflow {% endif %} {{ invocation.invocation_id }} {% if duration %}{{ duration }}{% endif %}
Invocation information
{% if completed_at %} {% endif %} {% if duration %} {% endif %}
Invocation ID: {{ invocation.invocation_id }}
Status: {{ status_badge(invocation.status.name) }}
Workflow role: {{ workflow_role.label }} {% if workflow_role.is_subworkflow %} sub-workflow {% endif %}
{{ workflow_role.description }}
Retries: {{ invocation.num_retries }}
Parent Invocation: {% if invocation.parent_invocation_id %} {{ invocation.parent_invocation_id }} {% else %} None {% endif %}
Parent Event: {% if invocation.parent_event_id %} {{ invocation.parent_event_id }} {% else %} None {% endif %}
Created At: {{ created_at }}
Completed At: {{ completed_at }}
Duration: {{ duration }}
Call & task information
Call ID: {{ call.call_id }}
Task ID: {{ task.task_id }}
Task Module: {{ task.task_id.module }}
Task Function: {{ task.task_id.func_name }}
{% if workflow %}
Workflow information
{% if workflow.parent_workflow_id %} {% endif %}
Workflow Type: {{ workflow.workflow_type }}
Workflow ID: {{ workflow.workflow_id }}
Parent Workflow: {{ workflow.parent_workflow_id }}
Sub-workflow: {{ 'Yes' if workflow.is_subworkflow else 'No' }}
{% endif %} {# Determine which columns have visible content #} {% set has_left = triggered_by or emitted_events or invocation.parent_event_id %} {% set has_right = triggered_runs_caused %} {% if has_left or has_right %}
Triggering information
{# ── Left column: Run due to events + Events emitted ── #} {% if has_left %}
{% if triggered_by or invocation.parent_event_id %}
Trigger origin {% if triggered_by %}{{ triggered_by.logic_value }}{% endif %}
{% if triggered_by %}
Trigger run
{{ triggered_by.trigger_run_id }} {% set run_timeline_url = trigger_run_timeline_urls.get(triggered_by.trigger_run_id) %} {% if run_timeline_url %} timeline {% endif %}
Trigger ID
{{ triggered_by.trigger_id }}
{% if triggered_by.event_ids %}
Source events
{% for eid in triggered_by.event_ids %} {{ event_pill(eid, source_event_summaries.get(eid)) }} {% endfor %}
{% endif %} {% if triggered_by_source_invocation_ids %}
Source invocations
{% for sid in triggered_by_source_invocation_ids %} {% set s = source_inv_summaries.get(sid, {}) %}
{{ sid }}
{% if s.get("func_name") %}
{{ s.func_name }}
{% endif %}
{% if s.get("status") %} {{ s.status }} {% endif %} {% if s.get("duration_seconds") is not none %} {{ "%.2f"|format(s.duration_seconds) }}s {% endif %}
{% endfor %}
{% endif %} {% if triggered_by.executed_at %}
Triggered at
{{ triggered_by.executed_at.isoformat(timespec="microseconds") }}
{% endif %}
{% if triggered_by_participants %}
{% for p in triggered_by_participants %}
Context
{{ p.context_type }}
Condition
{% if p.condition_id %}{{ short_id(p.condition_id) }}{% else %}{% endif %}
Source
{% if p.source_invocation_id %} {% set s = source_inv_summaries.get(p.source_invocation_id, {}) %}
{{ p.source_invocation_id }}
{% if s.get("func_name") %}
{{ s.func_name }}
{% endif %}
{% if s.get("status") %} {{ s.status }} {% endif %} {% if s.get("duration_seconds") is not none %} {{ "%.2f"|format(s.duration_seconds) }}s {% endif %}
{% elif p.event_id %} {{ event_pill(p.event_id, source_event_summaries.get(p.event_id)) }} {% else %}{% endif %}
Timestamp
{% if p.context_timestamp %}{{ p.context_timestamp.isoformat(timespec="microseconds") }}{% else %}{% endif %}
Summary
{% if p.context_summary %}{{ p.context_summary }}{% else %}{% endif %}
{% endfor %}
{% endif %} {% elif invocation.parent_event_id %}
Parent event
{{ invocation.parent_event_id }}
{% endif %}
{% endif %}{# /triggered_by or parent_event_id #} {% if emitted_events %}
Events emitted by this invocation {{ emitted_events|length }}
{% for ev in emitted_events %}
{{ ev.event_code }} {% if ev.triggered %}triggered{% elif ev.matched %}matched{% else %}recorded{% endif %} {{ ev.timestamp.isoformat(timespec="microseconds") }} {{ ev.event_id[:8] }}…
{% set triggered_ids = ev.triggered_invocation_ids or [] %} {% if triggered_ids %} {% endif %}
{% endfor %}
{% endif %}{# /emitted_events #}
{# /event-context-left-col #} {% endif %}{# /has_left #} {# ── Right column: Triggers caused by this invocation ── #} {% if has_right %}
Triggers caused by this invocation {{ triggered_runs_caused|length }}
{% for run in triggered_runs_caused %}
Trigger run
{{ short_id(run.trigger_run_id) }} {% set run_timeline_url = trigger_run_timeline_urls.get(run.trigger_run_id) %} {% if run_timeline_url %} timeline {% endif %}
Logic
{{ run.logic_value }}
Task
{{ run.task_id_key }}
Triggered invocation
{% if run.triggered_invocation_id %} {% set s = source_inv_summaries.get(run.triggered_invocation_id, {}) %}
{{ run.triggered_invocation_id }}
{% if s.get("func_name") %}
{{ s.func_name }}
{% endif %}
{% if s.get("status") %} {{ s.status }} {% endif %} {% if s.get("duration_seconds") is not none %} {{ "%.2f"|format(s.duration_seconds) }}s {% endif %}
{% else %}{% endif %}
{% if run.executed_at %}
Executed at
{{ run.executed_at.isoformat(timespec="microseconds") }}
{% endif %}
{% set run_participants = triggered_runs_caused_participants.get(run.trigger_run_id, []) %} {% if run_participants %}
Matched conditions
{% for p in run_participants %}
Context
{{ p.context_type }}
Condition
{% if p.condition_id %} {{ short_id(p.condition_id) }} {% else %}{% endif %}
Source
{% if p.source_invocation_id %} {% set s = source_inv_summaries.get(p.source_invocation_id, {}) %}
{{ p.source_invocation_id }}
{% if s.get("func_name") %}
{{ s.func_name }}
{% endif %}
{% if s.get("status") %} {{ s.status }} {% endif %} {% if s.get("duration_seconds") is not none %} {{ "%.2f"|format(s.duration_seconds) }}s {% endif %}
{% elif p.event_id %} {{ event_pill(p.event_id, source_event_summaries.get(p.event_id)) }} {% else %}{% endif %}
Timestamp
{% if p.context_timestamp %}{{ p.context_timestamp.isoformat(timespec="microseconds") }}{% else %}{% endif %}
Summary
{% if p.context_summary %}{{ p.context_summary }}{% else %}{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}{# /has_right #}
{# /event-context-grid #}
{% endif %}
Arguments
{% if arguments %} {% with args=arguments, id_prefix='invocation-args' %} {% include "partials/formatted_arguments.html" %} {% endwith%} {% else %}

No arguments provided

{% endif %}
Result / exception
{% if result is not none %}
Result:
{{ result }}
{% elif exception is not none %}
Exception:
{{ exception }}
{% else %}

No result or exception available.

{% endif %}
Status timeline
{% if history %}
{% for entry in history %}
{{ status_badge(entry.status) }}
{% if entry.runner_context_summary %}
Runner: {{ entry.runner_cls or 'Unknown' }} {{ entry.runner_id }}
{% if entry.hostname %}host: {{ entry.hostname }}{% endif %} {% if entry.pid %}pid: {{ entry.pid }}{% endif %} {% if entry.thread_id %}thread: {{ entry.thread_id }}{% endif %}
{% if entry.parent_runner_id %}
↳ Parent: {{ entry.parent_runner_cls or 'Unknown' }} {{ entry.parent_runner_id }}
{% if entry.parent_hostname %}host: {{ entry.parent_hostname }}{% endif %} {% if entry.parent_pid %}pid: {{ entry.parent_pid }}{% endif %} {% if entry.parent_thread_id %}thread: {{ entry.parent_thread_id }}{% endif %}
{% endif %}
{% endif %} {% if entry.execution_context %}
{{ entry.execution_context }}
{% endif %}
{% endfor %}
{% else %}

No history available.

{% endif %}
{% include "partials/ft_float_panel.html" %}
{% endblock %} {% block extra_js %} {% include "invocations/partials/timeline_zoom_scripts.html" %} {% endblock %}