agent: Make thread completion mode non-optional (#29772)

This PR makes the thread completion mode non-optional.

Release Notes:

- N/A
This commit is contained in:
Marshall Bowers 2025-05-01 22:41:54 -04:00 committed by GitHub
parent 0c0a4ed866
commit 93cc4946d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 10 deletions

View file

@ -429,12 +429,12 @@ impl MessageEditor {
IconButton::new("max-mode", IconName::ZedMaxMode) IconButton::new("max-mode", IconName::ZedMaxMode)
.icon_size(IconSize::Small) .icon_size(IconSize::Small)
.icon_color(Color::Muted) .icon_color(Color::Muted)
.toggle_state(active_completion_mode == Some(CompletionMode::Max)) .toggle_state(active_completion_mode == CompletionMode::Max)
.on_click(cx.listener(move |this, _event, _window, cx| { .on_click(cx.listener(move |this, _event, _window, cx| {
this.thread.update(cx, |thread, _cx| { this.thread.update(cx, |thread, _cx| {
thread.set_completion_mode(match active_completion_mode { thread.set_completion_mode(match active_completion_mode {
Some(CompletionMode::Max) => Some(CompletionMode::Normal), CompletionMode::Max => CompletionMode::Normal,
Some(CompletionMode::Normal) | None => Some(CompletionMode::Max), CompletionMode::Normal => CompletionMode::Max,
}); });
}); });
})) }))

View file

@ -301,6 +301,14 @@ pub enum TokenUsageRatio {
Exceeded, Exceeded,
} }
fn default_completion_mode(cx: &App) -> CompletionMode {
if cx.is_staff() {
CompletionMode::Max
} else {
CompletionMode::Normal
}
}
/// A thread of conversation with the LLM. /// A thread of conversation with the LLM.
pub struct Thread { pub struct Thread {
id: ThreadId, id: ThreadId,
@ -310,7 +318,7 @@ pub struct Thread {
detailed_summary_task: Task<Option<()>>, detailed_summary_task: Task<Option<()>>,
detailed_summary_tx: postage::watch::Sender<DetailedSummaryState>, detailed_summary_tx: postage::watch::Sender<DetailedSummaryState>,
detailed_summary_rx: postage::watch::Receiver<DetailedSummaryState>, detailed_summary_rx: postage::watch::Receiver<DetailedSummaryState>,
completion_mode: Option<CompletionMode>, completion_mode: CompletionMode,
messages: Vec<Message>, messages: Vec<Message>,
next_message_id: MessageId, next_message_id: MessageId,
last_prompt_id: PromptId, last_prompt_id: PromptId,
@ -366,7 +374,7 @@ impl Thread {
detailed_summary_task: Task::ready(None), detailed_summary_task: Task::ready(None),
detailed_summary_tx, detailed_summary_tx,
detailed_summary_rx, detailed_summary_rx,
completion_mode: None, completion_mode: default_completion_mode(cx),
messages: Vec::new(), messages: Vec::new(),
next_message_id: MessageId(0), next_message_id: MessageId(0),
last_prompt_id: PromptId::new(), last_prompt_id: PromptId::new(),
@ -440,7 +448,7 @@ impl Thread {
detailed_summary_task: Task::ready(None), detailed_summary_task: Task::ready(None),
detailed_summary_tx, detailed_summary_tx,
detailed_summary_rx, detailed_summary_rx,
completion_mode: None, completion_mode: default_completion_mode(cx),
messages: serialized messages: serialized
.messages .messages
.into_iter() .into_iter()
@ -569,11 +577,11 @@ impl Thread {
} }
} }
pub fn completion_mode(&self) -> Option<CompletionMode> { pub fn completion_mode(&self) -> CompletionMode {
self.completion_mode self.completion_mode
} }
pub fn set_completion_mode(&mut self, mode: Option<CompletionMode>) { pub fn set_completion_mode(&mut self, mode: CompletionMode) {
self.completion_mode = mode; self.completion_mode = mode;
} }
@ -1152,9 +1160,9 @@ impl Thread {
request.tools = available_tools; request.tools = available_tools;
request.mode = if model.supports_max_mode() { request.mode = if model.supports_max_mode() {
self.completion_mode Some(self.completion_mode)
} else { } else {
None Some(CompletionMode::Normal)
}; };
request request