Remove codex feature flag (#39878)

Release Notes:

- N/A
This commit is contained in:
Ben Brandt
2025-10-09 16:17:49 +00:00
committed by GitHub
parent a22c29c5f9
commit d7143009fc
8 changed files with 72 additions and 112 deletions
+40 -65
View File
@@ -9,7 +9,6 @@ use std::{
use anyhow::{Context as _, Result, bail};
use collections::HashMap;
use feature_flags::FeatureFlagAppExt as _;
use fs::{Fs, RemoveOptions, RenameOptions};
use futures::StreamExt as _;
use gpui::{
@@ -126,7 +125,6 @@ enum AgentServerStoreState {
pub struct AgentServerStore {
state: AgentServerStoreState,
external_agents: HashMap<ExternalAgentServerName, Box<dyn ExternalAgentServer>>,
_feature_flag_subscription: Option<gpui::Subscription>,
}
pub struct AgentServersUpdated;
@@ -206,34 +204,19 @@ impl AgentServerStore {
.unwrap_or(true),
}),
);
self.external_agents
.extend(new_settings.custom.iter().map(|(name, settings)| {
(
ExternalAgentServerName(name.clone()),
Box::new(LocalCustomAgent {
command: settings.command.clone(),
project_environment: project_environment.clone(),
}) as Box<dyn ExternalAgentServer>,
)
}));
use feature_flags::FeatureFlagAppExt as _;
if cx.has_flag::<feature_flags::CodexAcpFeatureFlag>() || new_settings.codex.is_some() {
self.external_agents.insert(
CODEX_NAME.into(),
Box::new(LocalCodex {
fs: fs.clone(),
project_environment: project_environment.clone(),
custom_command: new_settings
.codex
.clone()
.and_then(|settings| settings.custom_command()),
http_client: http_client.clone(),
is_remote: downstream_client.is_some(),
}),
);
}
self.external_agents.insert(
CODEX_NAME.into(),
Box::new(LocalCodex {
fs: fs.clone(),
project_environment: project_environment.clone(),
custom_command: new_settings
.codex
.clone()
.and_then(|settings| settings.custom_command()),
http_client: http_client.clone(),
is_remote: downstream_client.is_some(),
}),
);
self.external_agents.insert(
CLAUDE_CODE_NAME.into(),
Box::new(LocalClaudeCode {
@@ -246,6 +229,16 @@ impl AgentServerStore {
.and_then(|settings| settings.custom_command()),
}),
);
self.external_agents
.extend(new_settings.custom.iter().map(|(name, settings)| {
(
ExternalAgentServerName(name.clone()),
Box::new(LocalCustomAgent {
command: settings.command.clone(),
project_environment: project_environment.clone(),
}) as Box<dyn ExternalAgentServer>,
)
}));
*old_settings = Some(new_settings.clone());
@@ -274,13 +267,6 @@ impl AgentServerStore {
let subscription = cx.observe_global::<SettingsStore>(|this, cx| {
this.agent_servers_settings_changed(cx);
});
let this_handle = cx.weak_entity();
let feature_flags_subscription =
cx.observe_flag::<feature_flags::CodexAcpFeatureFlag, _>(move |_enabled, cx| {
let _ = this_handle.update(cx, |this, cx| {
this.reregister_agents(cx);
});
});
let mut this = Self {
state: AgentServerStoreState::Local {
node_runtime,
@@ -292,31 +278,16 @@ impl AgentServerStore {
_subscriptions: [subscription],
},
external_agents: Default::default(),
_feature_flag_subscription: Some(feature_flags_subscription),
};
this.agent_servers_settings_changed(cx);
this
}
pub(crate) fn remote(
project_id: u64,
upstream_client: Entity<RemoteClient>,
cx: &mut Context<Self>,
) -> Self {
pub(crate) fn remote(project_id: u64, upstream_client: Entity<RemoteClient>) -> Self {
// Set up the builtin agents here so they're immediately available in
// remote projects--we know that the HeadlessProject on the other end
// will have them.
let mut external_agents = [
(
GEMINI_NAME.into(),
Box::new(RemoteExternalAgentServer {
project_id,
upstream_client: upstream_client.clone(),
name: GEMINI_NAME.into(),
status_tx: None,
new_version_available_tx: None,
}) as Box<dyn ExternalAgentServer>,
),
let external_agents = [
(
CLAUDE_CODE_NAME.into(),
Box::new(RemoteExternalAgentServer {
@@ -327,13 +298,7 @@ impl AgentServerStore {
new_version_available_tx: None,
}) as Box<dyn ExternalAgentServer>,
),
]
.into_iter()
.collect::<HashMap<ExternalAgentServerName, Box<dyn ExternalAgentServer>>>();
use feature_flags::FeatureFlagAppExt as _;
if cx.has_flag::<feature_flags::CodexAcpFeatureFlag>() {
external_agents.insert(
(
CODEX_NAME.into(),
Box::new(RemoteExternalAgentServer {
project_id,
@@ -342,8 +307,20 @@ impl AgentServerStore {
status_tx: None,
new_version_available_tx: None,
}) as Box<dyn ExternalAgentServer>,
);
}
),
(
GEMINI_NAME.into(),
Box::new(RemoteExternalAgentServer {
project_id,
upstream_client: upstream_client.clone(),
name: GEMINI_NAME.into(),
status_tx: None,
new_version_available_tx: None,
}) as Box<dyn ExternalAgentServer>,
),
]
.into_iter()
.collect();
Self {
state: AgentServerStoreState::Remote {
@@ -351,7 +328,6 @@ impl AgentServerStore {
upstream_client,
},
external_agents,
_feature_flag_subscription: None,
}
}
@@ -359,7 +335,6 @@ impl AgentServerStore {
Self {
state: AgentServerStoreState::Collab,
external_agents: Default::default(),
_feature_flag_subscription: None,
}
}
+1 -1
View File
@@ -1331,7 +1331,7 @@ impl Project {
});
let agent_server_store =
cx.new(|cx| AgentServerStore::remote(REMOTE_SERVER_PROJECT_ID, remote.clone(), cx));
cx.new(|_| AgentServerStore::remote(REMOTE_SERVER_PROJECT_ID, remote.clone()));
cx.subscribe(&remote, Self::on_remote_client_event).detach();