mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Reduce the surface of collaboration modes (#20149)
Collaboration modes were slightly invasive both into ThreadManager construction and ModelProvider
This commit is contained in:
committed by
GitHub
Unverified
parent
c8abcbf925
commit
fedcefe9da
@@ -122,7 +122,6 @@ use codex_config::types::ApprovalsReviewer;
|
||||
use codex_config::types::ModelAvailabilityNuxConfig;
|
||||
use codex_exec_server::EnvironmentManager;
|
||||
use codex_features::Feature;
|
||||
use codex_models_manager::collaboration_mode_presets::CollaborationModesConfig;
|
||||
use codex_models_manager::model_presets::HIDE_GPT_5_1_CODEX_MAX_MIGRATION_PROMPT_CONFIG;
|
||||
use codex_models_manager::model_presets::HIDE_GPT5_1_MIGRATION_PROMPT_CONFIG;
|
||||
use codex_otel::SessionTelemetry;
|
||||
@@ -743,14 +742,7 @@ impl App {
|
||||
if let Some(updated_model) = config.model.clone() {
|
||||
model = updated_model;
|
||||
}
|
||||
let model_catalog = Arc::new(ModelCatalog::new(
|
||||
available_models.clone(),
|
||||
CollaborationModesConfig {
|
||||
default_mode_request_user_input: config
|
||||
.features
|
||||
.enabled(Feature::DefaultModeRequestUserInput),
|
||||
},
|
||||
));
|
||||
let model_catalog = Arc::new(ModelCatalog::new(available_models.clone()));
|
||||
let feedback_audience = bootstrap.feedback_audience;
|
||||
let auth_mode = bootstrap.auth_mode;
|
||||
let has_chatgpt_account = bootstrap.has_chatgpt_account;
|
||||
|
||||
@@ -112,7 +112,6 @@ pub(super) use codex_core_skills::model::SkillMetadata;
|
||||
pub(super) use codex_features::FEATURES;
|
||||
pub(super) use codex_features::Feature;
|
||||
pub(super) use codex_git_utils::CommitLogEntry;
|
||||
pub(super) use codex_models_manager::collaboration_mode_presets::CollaborationModesConfig;
|
||||
pub(super) use codex_otel::RuntimeMetricsSummary;
|
||||
pub(super) use codex_otel::SessionTelemetry;
|
||||
pub(super) use codex_protocol::ThreadId;
|
||||
|
||||
@@ -126,15 +126,9 @@ pub(super) fn test_session_telemetry(config: &Config, model: &str) -> SessionTel
|
||||
)
|
||||
}
|
||||
|
||||
pub(super) fn test_model_catalog(config: &Config) -> Arc<ModelCatalog> {
|
||||
let collaboration_modes_config = CollaborationModesConfig {
|
||||
default_mode_request_user_input: config
|
||||
.features
|
||||
.enabled(Feature::DefaultModeRequestUserInput),
|
||||
};
|
||||
pub(super) fn test_model_catalog(_config: &Config) -> Arc<ModelCatalog> {
|
||||
Arc::new(ModelCatalog::new(
|
||||
crate::legacy_core::test_support::all_model_presets().clone(),
|
||||
collaboration_modes_config,
|
||||
))
|
||||
}
|
||||
|
||||
@@ -429,15 +423,7 @@ pub(crate) fn set_fast_mode_test_catalog(chat: &mut ChatWidget) {
|
||||
.map(Into::into)
|
||||
.collect();
|
||||
|
||||
chat.model_catalog = Arc::new(ModelCatalog::new(
|
||||
models,
|
||||
CollaborationModesConfig {
|
||||
default_mode_request_user_input: chat
|
||||
.config
|
||||
.features
|
||||
.enabled(Feature::DefaultModeRequestUserInput),
|
||||
},
|
||||
));
|
||||
chat.model_catalog = Arc::new(ModelCatalog::new(models));
|
||||
}
|
||||
|
||||
pub(crate) async fn make_chatwidget_manual_with_sender() -> (
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
use codex_models_manager::collaboration_mode_presets::builtin_collaboration_mode_presets;
|
||||
use codex_protocol::config_types::CollaborationModeMask;
|
||||
use codex_protocol::config_types::ModeKind;
|
||||
|
||||
use crate::model_catalog::ModelCatalog;
|
||||
|
||||
fn filtered_presets(model_catalog: &ModelCatalog) -> Vec<CollaborationModeMask> {
|
||||
model_catalog
|
||||
.list_collaboration_modes()
|
||||
fn filtered_presets(_model_catalog: &ModelCatalog) -> Vec<CollaborationModeMask> {
|
||||
builtin_collaboration_mode_presets()
|
||||
.into_iter()
|
||||
.filter(|mask| mask.mode.is_some_and(ModeKind::is_tui_visible))
|
||||
.collect()
|
||||
|
||||
@@ -1,50 +1,17 @@
|
||||
use codex_models_manager::collaboration_mode_presets::CollaborationModesConfig;
|
||||
use codex_models_manager::collaboration_mode_presets::builtin_collaboration_mode_presets;
|
||||
use codex_protocol::config_types::CollaborationModeMask;
|
||||
use codex_protocol::openai_models::ModelPreset;
|
||||
use std::convert::Infallible;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub(crate) struct ModelCatalog {
|
||||
models: Vec<ModelPreset>,
|
||||
collaboration_modes_config: CollaborationModesConfig,
|
||||
}
|
||||
|
||||
impl ModelCatalog {
|
||||
pub(crate) fn new(
|
||||
models: Vec<ModelPreset>,
|
||||
collaboration_modes_config: CollaborationModesConfig,
|
||||
) -> Self {
|
||||
Self {
|
||||
models,
|
||||
collaboration_modes_config,
|
||||
}
|
||||
pub(crate) fn new(models: Vec<ModelPreset>) -> Self {
|
||||
Self { models }
|
||||
}
|
||||
|
||||
pub(crate) fn try_list_models(&self) -> Result<Vec<ModelPreset>, Infallible> {
|
||||
Ok(self.models.clone())
|
||||
}
|
||||
|
||||
pub(crate) fn list_collaboration_modes(&self) -> Vec<CollaborationModeMask> {
|
||||
builtin_collaboration_mode_presets(self.collaboration_modes_config)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[test]
|
||||
fn list_collaboration_modes_matches_core_presets() {
|
||||
let collaboration_modes_config = CollaborationModesConfig {
|
||||
default_mode_request_user_input: true,
|
||||
};
|
||||
let catalog = ModelCatalog::new(Vec::new(), collaboration_modes_config);
|
||||
|
||||
assert_eq!(
|
||||
catalog.list_collaboration_modes(),
|
||||
builtin_collaboration_mode_presets(collaboration_modes_config)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user