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)
.icon_size(IconSize::Small)
.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| {
this.thread.update(cx, |thread, _cx| {
thread.set_completion_mode(match active_completion_mode {
Some(CompletionMode::Max) => Some(CompletionMode::Normal),
Some(CompletionMode::Normal) | None => Some(CompletionMode::Max),
CompletionMode::Max => CompletionMode::Normal,
CompletionMode::Normal => CompletionMode::Max,
});
});
}))

View file

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