assistant2: Restore tool uses when loading saved threads (#25942)

This PR makes it so tool uses are restored when loading saved threads in
Assistant 2.

Release Notes:

- N/A
This commit is contained in:
Marshall Bowers 2025-03-03 13:32:26 -05:00 committed by GitHub
parent 6635462f7b
commit b2add8c803
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 120 additions and 8 deletions

View file

@ -8,8 +8,9 @@ use futures::StreamExt as _;
use gpui::{App, Context, EventEmitter, SharedString, Task};
use language_model::{
LanguageModel, LanguageModelCompletionEvent, LanguageModelRegistry, LanguageModelRequest,
LanguageModelRequestMessage, LanguageModelRequestTool, LanguageModelToolUseId,
MaxMonthlySpendReachedError, MessageContent, PaymentRequiredError, Role, StopReason,
LanguageModelRequestMessage, LanguageModelRequestTool, LanguageModelToolResult,
LanguageModelToolUseId, MaxMonthlySpendReachedError, MessageContent, PaymentRequiredError,
Role, StopReason,
};
use serde::{Deserialize, Serialize};
use util::{post_inc, TryFutureExt as _};
@ -88,7 +89,7 @@ impl Thread {
completion_count: 0,
pending_completions: Vec::new(),
tools,
tool_use: ToolUseState::default(),
tool_use: ToolUseState::new(),
}
}
@ -99,6 +100,7 @@ impl Thread {
_cx: &mut Context<Self>,
) -> Self {
let next_message_id = MessageId(saved.messages.len());
let tool_use = ToolUseState::from_saved_messages(&saved.messages);
Self {
id,
@ -120,7 +122,7 @@ impl Thread {
completion_count: 0,
pending_completions: Vec::new(),
tools,
tool_use: ToolUseState::default(),
tool_use,
}
}
@ -189,6 +191,10 @@ impl Thread {
self.tool_use.tool_uses_for_message(id)
}
pub fn tool_results_for_message(&self, id: MessageId) -> Vec<&LanguageModelToolResult> {
self.tool_use.tool_results_for_message(id)
}
pub fn message_has_tool_results(&self, message_id: MessageId) -> bool {
self.tool_use.message_has_tool_results(message_id)
}