{% from "_macros.html" import icon %} {# A plan the model proposed in Plan mode. Rendered from `message.plan_json` rather than parsed back out of the prose, so the Execute button sends exactly what was proposed. Every line is model output and is escaped; a step is shown as text, never as Markdown, because a plan is the last thing that should be able to emit a link. Execute switches the chat to Edit, never Auto -- the plan was written under a mode where every command stopped for approval, and a button that also removed the asking is not the button anybody pressed. The confirm dialog says so. #}

{{ icon("check", "icon--sm") }} {{ message.plan_json.title or "A plan" }}

    {% for step in message.plan_json.steps %}
  1. {{ step }}
  2. {% endfor %}
{% if chat.kind == "agent" %}
Switches to Edit — commands still ask.
{% endif %}