agent: Fix thinking step showing up as pending even though it is completed (#27926)
Release Notes: - N/A
This commit is contained in:
parent
9c4e61eae1
commit
da3383b10e
1 changed files with 20 additions and 8 deletions
|
@ -929,6 +929,7 @@ impl ActiveThread {
|
||||||
let checkpoint = thread.checkpoint_for_message(message_id);
|
let checkpoint = thread.checkpoint_for_message(message_id);
|
||||||
let context = thread.context_for_message(message_id).collect::<Vec<_>>();
|
let context = thread.context_for_message(message_id).collect::<Vec<_>>();
|
||||||
let tool_uses = thread.tool_uses_for_message(message_id, cx);
|
let tool_uses = thread.tool_uses_for_message(message_id, cx);
|
||||||
|
let has_tool_uses = !tool_uses.is_empty();
|
||||||
|
|
||||||
// Don't render user messages that are just there for returning tool results.
|
// Don't render user messages that are just there for returning tool results.
|
||||||
if message.role == Role::User && thread.message_has_tool_results(message_id) {
|
if message.role == Role::User && thread.message_has_tool_results(message_id) {
|
||||||
|
@ -1061,7 +1062,12 @@ impl ActiveThread {
|
||||||
div()
|
div()
|
||||||
.min_h_6()
|
.min_h_6()
|
||||||
.text_ui(cx)
|
.text_ui(cx)
|
||||||
.child(self.render_message_content(message_id, rendered_message, cx))
|
.child(self.render_message_content(
|
||||||
|
message_id,
|
||||||
|
rendered_message,
|
||||||
|
has_tool_uses,
|
||||||
|
cx,
|
||||||
|
))
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.when(!context.is_empty(), |parent| {
|
.when(!context.is_empty(), |parent| {
|
||||||
|
@ -1321,15 +1327,21 @@ impl ActiveThread {
|
||||||
&self,
|
&self,
|
||||||
message_id: MessageId,
|
message_id: MessageId,
|
||||||
rendered_message: &RenderedMessage,
|
rendered_message: &RenderedMessage,
|
||||||
|
has_tool_uses: bool,
|
||||||
cx: &Context<Self>,
|
cx: &Context<Self>,
|
||||||
) -> impl IntoElement {
|
) -> impl IntoElement {
|
||||||
let pending_thinking_segment_index = rendered_message
|
let is_last_message = self.messages.last() == Some(&message_id);
|
||||||
.segments
|
let pending_thinking_segment_index = if is_last_message && !has_tool_uses {
|
||||||
.iter()
|
rendered_message
|
||||||
.enumerate()
|
.segments
|
||||||
.last()
|
.iter()
|
||||||
.filter(|(_, segment)| matches!(segment, RenderedMessageSegment::Thinking { .. }))
|
.enumerate()
|
||||||
.map(|(index, _)| index);
|
.last()
|
||||||
|
.filter(|(_, segment)| matches!(segment, RenderedMessageSegment::Thinking { .. }))
|
||||||
|
.map(|(index, _)| index)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
div()
|
div()
|
||||||
.text_ui(cx)
|
.text_ui(cx)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue