codex: address PR review feedback (#16041)

This commit is contained in:
Eric Traut
2026-03-28 01:01:23 -06:00
parent ab305249d8
commit 6ae5dcb255
3 changed files with 16 additions and 14 deletions
@@ -21,6 +21,7 @@ use crate::exec_command::split_command_string;
use codex_app_server_client::AppServerEvent;
use codex_app_server_protocol::AuthMode;
use codex_app_server_protocol::JSONRPCErrorError;
use codex_app_server_protocol::McpServerStartupState;
use codex_app_server_protocol::ServerNotification;
use codex_app_server_protocol::ServerRequest;
#[cfg(test)]
@@ -147,8 +148,10 @@ impl App {
self.pending_app_server_requests
.resolve_notification(&notification.request_id);
}
ServerNotification::McpServerStatusUpdated(_) => {
if self.chat_widget.needs_mcp_startup_expected_servers() {
ServerNotification::McpServerStatusUpdated(notification) => {
if notification.status == McpServerStartupState::Starting
&& self.chat_widget.needs_mcp_startup_expected_servers()
{
let enabled_config_mcp_servers: Vec<String> = self
.chat_widget
.config_ref()
+10 -11
View File
@@ -799,8 +799,8 @@ pub(crate) struct ChatWidget {
mcp_startup_status: Option<HashMap<String, McpStartupStatus>>,
/// Expected MCP servers for the current startup round, seeded from enabled local config.
mcp_startup_expected_servers: Option<HashSet<String>>,
/// MCP startup is a one-time app boot sequence; ignore straggling status updates after settle.
mcp_startup_complete: bool,
/// After startup settles, ignore late terminal updates until a new startup round begins.
mcp_startup_ignore_updates_until_next_start: bool,
connectors_cache: ConnectorsCacheState,
connectors_partial_snapshot: Option<ConnectorsSnapshot>,
connectors_prefetch_in_flight: bool,
@@ -2792,8 +2792,11 @@ impl ChatWidget {
status: McpStartupStatus,
complete_when_settled: bool,
) {
if self.mcp_startup_complete {
return;
if self.mcp_startup_ignore_updates_until_next_start {
if !matches!(status, McpStartupStatus::Starting) {
return;
}
self.mcp_startup_ignore_updates_until_next_start = false;
}
let mut startup_status = self.mcp_startup_status.take().unwrap_or_default();
if let McpStartupStatus::Failed { error } = &status {
@@ -2867,7 +2870,7 @@ impl ChatWidget {
}
pub(crate) fn needs_mcp_startup_expected_servers(&self) -> bool {
!self.mcp_startup_complete && self.mcp_startup_expected_servers.is_none()
self.mcp_startup_expected_servers.is_none()
}
pub(crate) fn set_mcp_startup_expected_servers<I>(&mut self, server_names: I)
@@ -2899,17 +2902,13 @@ impl ChatWidget {
self.mcp_startup_status = None;
self.mcp_startup_expected_servers = None;
self.mcp_startup_complete = true;
self.mcp_startup_ignore_updates_until_next_start = true;
self.update_task_running_state();
self.maybe_send_next_queued_input();
self.request_redraw();
}
pub(crate) fn finish_mcp_startup_after_lag(&mut self) {
if self.mcp_startup_complete {
return;
}
let Some(current) = &self.mcp_startup_status else {
return;
};
@@ -4673,7 +4672,7 @@ impl ChatWidget {
mcp_startup_status: None,
pending_turn_copyable_output: None,
mcp_startup_expected_servers: None,
mcp_startup_complete: false,
mcp_startup_ignore_updates_until_next_start: false,
connectors_cache: ConnectorsCacheState::default(),
connectors_partial_snapshot: None,
connectors_prefetch_in_flight: false,
@@ -2074,7 +2074,7 @@ async fn make_chatwidget_manual(
agent_turn_running: false,
mcp_startup_status: None,
mcp_startup_expected_servers: None,
mcp_startup_complete: false,
mcp_startup_ignore_updates_until_next_start: false,
connectors_cache: ConnectorsCacheState::default(),
connectors_partial_snapshot: None,
plugin_install_apps_needing_auth: Vec::new(),