mirror of
https://github.com/openai/codex.git
synced 2026-11-10 21:00:47 +00:00
## What changed - Track and log `McpRefreshReason` values for runtime refreshes, including invalidations received during thread startup and forced refreshes. Restore claimed reasons when a refresh is cancelled before publication, while preserving concurrent invalidations. - Correlate installed-plugin metadata invalidations with downstream MCP refreshes using a shared change ID. Log changed field names by plugin ID, additions, removals, and reordering without logging field values. - Record whether background installed-plugin bundle updates were requested by startup, plugin listing, or installation. ## Testing Add coverage for metadata change attribution across membership changes and reordering, and for retaining refresh causes across cancellation and concurrent invalidation. GitOrigin-RevId: 3d4485ccfcc1d8788eb9909a060ac200c467af13
34 lines
1.3 KiB
Rust
34 lines
1.3 KiB
Rust
//! Activates an admitted task's plugin selection without changing pending settings.
|
|
|
|
use crate::McpRefreshReason;
|
|
use std::sync::Arc;
|
|
|
|
use super::Session;
|
|
use super::turn_context::TurnContext;
|
|
|
|
impl Session {
|
|
pub(crate) async fn activate_plugin_selection(&self, turn_context: &TurnContext) {
|
|
let config = {
|
|
let mut state = self.state.lock().await;
|
|
if state.active_disabled_plugin_ids != turn_context.disabled_plugin_ids {
|
|
state.active_disabled_plugin_ids = turn_context.disabled_plugin_ids.clone();
|
|
self.mark_mcp_runtime_dirty(McpRefreshReason::DisabledPluginSelectionChanged);
|
|
}
|
|
Arc::clone(&state.session_configuration.original_config_do_not_use)
|
|
};
|
|
let plugin_outcome = self
|
|
.services
|
|
.plugins_manager
|
|
.plugins_for_config(&config.plugins_config_input())
|
|
.await
|
|
.without_plugins(&turn_context.disabled_plugin_ids);
|
|
// Cache changes from another process do not notify this session's hook runtime.
|
|
if !self.hooks().matches_plugin_hooks(
|
|
plugin_outcome.iter_effective_plugin_hook_sources(),
|
|
plugin_outcome.iter_effective_plugin_hook_warnings(),
|
|
) {
|
|
self.refresh_hooks(config).await;
|
|
}
|
|
}
|
|
}
|