{# One run's asset block (issue #41): per-kind current asset + generation controls. Included on the run detail page AND served standalone by GET /runs/{id}/assets — the div re-polls itself only while a job is active, so a terminal render stops the polling. #}

Run assets

Machine-generated from the transcript and source metadata — a starting point, not a verified record.

{% if assets.error %}{% endif %} {% if not assets.gates_open %}

Run assets are off. Turn on Run assets in Settings → Features and LLM transcript enhancement in Settings → LLM — no restart needed.

{% elif assets.source_problem %}

{{ assets.source_problem }}

{% else %}
{% endif %} {% for entry in assets.kinds %}
{{ entry.title }} {%- if entry.stale %} stale{% endif %} {%- if entry.job_active %} {{ entry.job.status }}{% endif %} {% if entry.job and not entry.job_active and entry.job.status != "succeeded" %}

Last generation {{ entry.job.status }} {% if entry.job.finished_at %}at {{ entry.job.finished_at.strftime("%Y-%m-%d %H:%M") }}{% endif %} {% if entry.job.error %}
{{ entry.job.error }}{% endif %}

{% endif %} {% if entry.job_active %}

Job {{ entry.job.status }} {% if entry.job.started_at %}· started {{ entry.job.started_at.strftime("%Y-%m-%d %H:%M") }} {% else %}· queued {{ entry.job.created_at.strftime("%Y-%m-%d %H:%M") }}{% endif %}

{% endif %} {% if entry.asset %} {% if entry.kind == "summary" %}

{{ entry.asset.payload.summary }}

{% elif entry.kind == "topics" %} {% else %} {% if entry.asset.payload.mentions %} {% else %}

No entities were grounded in the transcript.

{% endif %} {% if entry.asset.payload.diagnostics.dropped_unlocatable or entry.asset.payload.diagnostics.dropped_out_of_run %}

{{ entry.asset.payload.diagnostics.dropped_unlocatable + entry.asset.payload.diagnostics.dropped_out_of_run }} ungrounded span{{ "s" if (entry.asset.payload.diagnostics.dropped_unlocatable + entry.asset.payload.diagnostics.dropped_out_of_run) != 1 }} dropped.

{% endif %} {% endif %}

Generated {{ entry.asset.completed_at.strftime("%Y-%m-%d %H:%M") }} · {{ entry.asset.model }} · generation {{ entry.asset.generation }} {% if entry.asset.config and entry.asset.config.truncated %} · input truncated {% endif %} {% if entry.stale %}
The transcript or metadata changed since this was generated — regenerate to refresh. {% endif %}

{% elif not entry.job_active and assets.gates_open and not assets.source_problem %}

Not generated yet.

{% endif %} {% if assets.gates_open and not entry.job_active and not assets.source_problem %}
{% endif %}
{% endfor %}