Summary
In Agent Mode, completed reasoning rows use the generic label Thought. Replace that label with a short description generated by an LLM while leaving the reasoning and the rest of the timeline unchanged.
Scope
- Keep
Thinking unchanged while reasoning is streaming.
- When a newly observed reasoning phase finishes, start a non-blocking UI request using
auto:quick.
- Send only bounded copies of the latest user request from that turn and the completed reasoning text. Do not send tool inputs or outputs, file contents, approvals, the final response, or the full conversation.
- Ask for one short action description. Accept only trimmed, single-line text of 80 characters or fewer.
- If a valid response arrives, replace only the
Thought label. If the request fails or the response is invalid, silently keep Thought.
- Make at most one request per reasoning phase. Loading old history must not generate new labels.
- Store successful labels in
localStorage under a stable account-, task-, and reasoning-phase-scoped key. Store only the label and identifiers, not the user request or reasoning text.
- Reuse saved labels after switching tasks or restarting the app, and remove them when the related task or Agent history is deleted.
- Keep the implementation in the frontend UI. Do not change Rust, server APIs, or server-side persistence.
Done when
- A completed live thought changes from
Thought to its generated description when available.
- Name generation never delays Agent activity, approvals, the final response, or run completion.
- Timeline order, raw reasoning, tools, approvals, and final responses behave exactly as they do today.
Out of scope
- Persisting or syncing labels with task history
- Redesigning tool-call rows
- Grouping reasoning and tools into a shared container
Summary
In Agent Mode, completed reasoning rows use the generic label
Thought. Replace that label with a short description generated by an LLM while leaving the reasoning and the rest of the timeline unchanged.Scope
Thinkingunchanged while reasoning is streaming.auto:quick.Thoughtlabel. If the request fails or the response is invalid, silently keepThought.localStorageunder a stable account-, task-, and reasoning-phase-scoped key. Store only the label and identifiers, not the user request or reasoning text.Done when
Thoughtto its generated description when available.Out of scope