{% import "agents/macros.html" as m with context %} {% import "agents/fields.html" as f with context %} {% set offered = {"channel": providers.channel if providers else [], "harness": providers.harness if providers else []} %} {% set label = {2: "channel", 3: "harness"}.get(step) %} {# making an agent in four steps beside a card of what it will be: the draft travels with every step and comes back drawn again, and nothing reaches the computer until it is made #}
{% if step == 1 %}

{{ t.text("agents.new.q1") }}

{{ t.text("agents.new.q1_sub") }}

{{ t.text("agents.column.computer") }}

{{ t.text("agents.new.computers") }}

{% for computer in computers %} {% else %}

{{ t.text("agents.new.no_computer") }}

{% endfor %}
{{ t.text("agents.config.mode") }}
{% for one in ("session", "dangerous_individual") %}{% endfor %}
{{ t.text("agents.new.mode_hint") }}
{# a personal assistant runs outside the sandbox: its column stays, fixed at full access #}
{{ t.text("agents.config.sandbox") }}
{% for one in ("workspace-write", "danger-full-access") %}{% endfor %}
{% for one in ("workspace-write", "danger-full-access") %}{{ t.text("agents.sandbox." ~ one) }}{% endfor %}
{{ t.text("agents.new.sandbox_hint") }}{{ t.text("agents.new.unsandboxed") }}
{% elif label %}

{{ t.text("agents.new.q_" ~ label, {"name": drafted.name}) }}

{{ t.text("agents.new.q_" ~ label ~ "_sub", {"computer": chosen.name if chosen else "—"}) }}

{% if providers is none %}

{{ t.text("agents.workspace.unanswered", {"computer": chosen.name if chosen else "—"}) }}

{% else %}
{% for one in offered[label] %} {% set count = drafted[label] | selectattr("kind", "equalto", one.kind) | list | length %} {% set seen = inspected.get(one.kind) %} {% else %}

{{ t.text("agents.config.none_offered", {"computer": chosen.name if chosen else "—"}) }}

{% endfor %}
{% for item in drafted[label] %} {% set found = offered[label] | selectattr("kind", "equalto", item.kind) | first | default(none) %} {% set schema = found.json_schema if found else {} %} {% if opened == [label, loop.index0] %}

{% if label == "harness" %}{{ loop.index }}{% endif %}{{ m.logo(item.kind) }}{{ t.text("agents.new.settings") }}

{{ f.fields(schema, item, item["values"], {}, inspected[item.kind].inspection.models if item.kind in inspected else [], {"hx-post": "/ui/agents/new", "hx-trigger": "change", "hx-include": "closest form", "hx-vals": {"action": "refresh"} | tojson | forceescape, "hx-target": "#wizbox", "hx-swap": "outerHTML"}, chosen.name if chosen else "—") }}
{% else %}
{% if label == "harness" %}{{ loop.index }}{% endif %} {{ m.logo(item.kind) }}{{ m.headline(none, label, item) }} {{ m.summary(schema, item) }}
{% endif %} {% endfor %} {% if label == "harness" %}{% endif %}
{% endif %} {% else %}

{{ t.text("agents.new.q4") }}

{{ t.text("agents.new.q4_sub", {"computer": chosen.name if chosen else "—"}) }}

{{ t.text("agents.config.basics") }}
{{ t.text("agents.config.name") }}{{ drafted.name }} {{ t.text("agents.column.computer") }}{{ chosen.name if chosen else "—" }} {{ t.text("agents.config.mode") }}{{ t.text("agents.mode." ~ drafted.mode) }} {% if drafted.mode == "session" %}{{ t.text("agents.config.sandbox") }}{{ t.text("agents.sandbox." ~ drafted.sandbox) }}{% endif %} {{ t.text("agents.config.idle") }}{{ t.text("agents.new.seconds", {"n": drafted.idle_timeout | int}) }}
{% for one in ("channel", "harness") %}
{{ t.text("agents.config.title_" ~ one) }}{{ t.text("agents.new.sum_" ~ one) }}
{% for item in drafted[one] %} {% set found = offered[one] | selectattr("kind", "equalto", item.kind) | first | default(none) %}
{% if one == "harness" %}{{ loop.index }}{% endif %}{{ m.logo(item.kind) }}{{ m.headline(none, one, item) }}{{ m.summary(found.json_schema if found else {}, item) }}{% if one == "harness" %}{{ t.text("agents.runtime.in_use" if loop.first else "agents.standby") }}{% endif %}
{% else %}

{{ t.text("agents.config.empty_" ~ one) }}

{% endfor %}
{% endfor %}
{% if failed is not none %}

{{ t.text("agents.new.failed", {"computer": chosen.name if chosen else "—", "error": failed or t.text("agents.remove.unanswered")}) }}

{% endif %} {% endif %}
{% if step > 1 %}{% endif %}
{% if step < 4 %} {% else %}{% endif %}