Have a coding mode and only show coding and plan (#9802)

This commit is contained in:
Ahmed Ibrahim
2026-01-23 19:28:49 -08:00
committed by GitHub
parent 77222492f9
commit b3127e2eeb
12 changed files with 99 additions and 44 deletions

View File

@@ -6,11 +6,27 @@ fn mode_kind(mode: &CollaborationMode) -> ModeKind {
mode.mode
}
fn is_tui_mode(kind: ModeKind) -> bool {
matches!(kind, ModeKind::Plan | ModeKind::Code)
}
fn filtered_presets(models_manager: &ModelsManager) -> Vec<CollaborationMode> {
models_manager
.list_collaboration_modes()
.into_iter()
.filter(|preset| is_tui_mode(mode_kind(preset)))
.collect()
}
pub(crate) fn presets_for_tui(models_manager: &ModelsManager) -> Vec<CollaborationMode> {
filtered_presets(models_manager)
}
pub(crate) fn default_mode(models_manager: &ModelsManager) -> Option<CollaborationMode> {
let presets = models_manager.list_collaboration_modes();
let presets = filtered_presets(models_manager);
presets
.iter()
.find(|preset| preset.mode == ModeKind::PairProgramming)
.find(|preset| preset.mode == ModeKind::Code)
.cloned()
.or_else(|| presets.into_iter().next())
}
@@ -19,7 +35,10 @@ pub(crate) fn mode_for_kind(
models_manager: &ModelsManager,
kind: ModeKind,
) -> Option<CollaborationMode> {
let presets = models_manager.list_collaboration_modes();
if !is_tui_mode(kind) {
return None;
}
let presets = filtered_presets(models_manager);
presets.into_iter().find(|preset| mode_kind(preset) == kind)
}
@@ -32,7 +51,7 @@ pub(crate) fn next_mode(
models_manager: &ModelsManager,
current: &CollaborationMode,
) -> Option<CollaborationMode> {
let presets = models_manager.list_collaboration_modes();
let presets = filtered_presets(models_manager);
if presets.is_empty() {
return None;
}
@@ -44,9 +63,8 @@ pub(crate) fn next_mode(
presets.get(next_index).cloned()
}
pub(crate) fn execute_mode(models_manager: &ModelsManager) -> Option<CollaborationMode> {
models_manager
.list_collaboration_modes()
pub(crate) fn code_mode(models_manager: &ModelsManager) -> Option<CollaborationMode> {
filtered_presets(models_manager)
.into_iter()
.find(|preset| mode_kind(preset) == ModeKind::Execute)
.find(|preset| mode_kind(preset) == ModeKind::Code)
}