{% extends "_base.html" %} {% from "_macros.html" import modal %} {% block title %}Experiments · {{ project.name | humanize }} · Urika{% endblock %} {% block heading %}Experiments{% endblock %} {% block breadcrumb %} {% endblock %} {% block content %} {% set ne = running_by_type.get("run") %} {% if not ne %} {# Auto-open the New experiment modal when ?new=1 (used by /run redirect). Suppressed when a run is already in flight — the page shows a link to the live log instead. #}
{% endif %}
{% if ne %} Experiment running… view log {% else %} {% endif %}
{% if experiments %} {# Newest-first by default — matches the order rows arrive in from the route. Filtering not needed here; experiment counts per project are usually small. #}
{% else %}

No experiments yet. Click + New experiment above to start one.

{% endif %} {% call modal('new-experiment', 'New experiment') %} {# Mirrors ``urika run`` exactly. Mode is project-level. All options are visible (no Advanced collapsible — the user keeps running into the same options every time). Order: turns + toggles → audience → instructions, since the open-ended instructions field is the most attention-heavy and belongs at the end. #} {# Three modes mapped onto the CLI: * default — single experiment, advisor picks the next method * auto + capped — meta-orchestrator runs up to N experiments * auto + unlimited — meta-orchestrator runs until the advisor stops The Resume option is NOT here — it lives per-experiment on the experiments list / experiment detail (only valid for already- failed / paused / stopped experiments). #} {# When the "Ask advisor first" checkbox is on, the advisor runs as the FIRST step inside ``urika run`` (via --advisor-first) and its output streams in the experiment run log alongside Planning / Task / Evaluator. No separate sync popup, no review step. #}
{# :disabled when auto is off OR the unlimited radio is picked — disabled inputs are excluded from the form submission, so the server sees no max_experiments value in those cases. #}
{% endcall %} {% endblock %}