Reasoning
The model's thinking, collapsed above the reply it led to. Shut by default, and there for when a reply is wrong and the working-out is the first place anyone looks.
Settled
duration: titles it with how long the model thought.
Thought for 12s
First find the job, since "Platform Engineer" could match two.
The user wants candidates who haven't replied. Replies are messages on the invitation, so an invitation with no inbound message counts.
<div class="w-[32rem] max-w-full">
<%= ai_chat_reasoning duration: 12.4 do |reasoning| %>
<% reasoning.block { tag.p("The user wants candidates who haven't replied. Replies are messages on the invitation, so an invitation with no inbound message counts.") } %>
<p>First find the job, since "Platform Engineer" could match two.</p>
<% end %>
</div>Still thinking
streaming: true says so, with a spinner that pulses instead of turning under reduced motion.
Thinking…
Checking which of the three invitations bounced…
<div class="w-[32rem] max-w-full">
<%= ai_chat_reasoning streaming: true, open: true do %>
<p>Checking which of the three invitations bounced…</p>
<% end %>
</div>