mirror of
https://github.com/openai/codex.git
synced 2026-11-06 20:20:34 +00:00
## Why Refreshed Apps catalogs need to survive connection reuse. Catalog revisions scoped to the connection set can lose refreshed tools during reconciliation and invalidate prepared calls for unrelated servers. ## What changed - Store tools, revisions, and refresh coordination on each MCP client, and key cached bindings by client identity and revision. - Preserve existing binding snapshots while rejecting stale calls before preparation. Wait for active calls to finish before publishing a refreshed catalog. - Add `CodexThread::refresh_codex_apps_tools` to reconcile the runtime and return the refreshed client's raw Apps inventory alongside tool names eligible under that runtime's generic MCP policy. Keep hidden and disabled tools in the inventory for callers to apply app-specific policy. ## Testing Add regression coverage for refreshed catalogs surviving client reuse, unrelated calls remaining valid, binding cache invalidation, and refresh snapshots retaining the client's own inventory when another client wins the shared-cache race. Update stale-call and preparation tests to use client-owned catalogs. GitOrigin-RevId: f2308c81f7474eb31f3380c091c977030123cda2
122 lines
4.6 KiB
Rust
122 lines
4.6 KiB
Rust
pub use binding::McpBinding;
|
|
pub use binding::PreparedMcpCall;
|
|
pub use client_capabilities::client_mcp_extensions;
|
|
pub use client_tool_catalog::CodexAppsToolSnapshot;
|
|
pub use codex_rmcp_client::McpProtocolMode;
|
|
pub use connection_manager::tool_is_model_visible;
|
|
pub use elicitation::ElicitationLifecycle;
|
|
pub use elicitation::ElicitationReviewRequest;
|
|
pub use elicitation::ElicitationReviewer;
|
|
pub use elicitation::ElicitationReviewerHandle;
|
|
pub use event_stream::McpEventStreamOpener;
|
|
pub use resource_client::McpEventCatalogSnapshot;
|
|
pub use resource_client::McpEventDefinition;
|
|
pub use resource_client::McpEventNotification;
|
|
pub use resource_client::McpEventStream;
|
|
pub use resource_client::McpResourceClient;
|
|
pub use resource_client::McpResourceClientCacheKey;
|
|
pub use resource_client::McpResourcePage;
|
|
pub use resource_client::McpResourceReadResult;
|
|
pub use rmcp::model::ReadResourceRequestParams;
|
|
pub use rmcp_client::MCP_SANDBOX_STATE_META_CAPABILITY;
|
|
pub use runtime::McpRuntime;
|
|
pub use runtime::McpRuntimeContext;
|
|
pub use runtime::McpRuntimeInput;
|
|
pub use runtime::McpStartupPolicy;
|
|
pub use runtime::SandboxState;
|
|
pub use runtime::apply_http_headers_helper;
|
|
pub use tool_catalog_cache::McpToolCatalogCache;
|
|
pub use tools::ToolInfo;
|
|
pub use trusted_access::TrustedAccessContext;
|
|
|
|
/// Backward-compatible name for the shared Codex Apps tools runtime.
|
|
pub type CodexAppsToolsCache = codex_connectors::ConnectorRuntimeManager<ToolInfo>;
|
|
/// Backward-compatible name for the Codex Apps runtime context key.
|
|
pub type CodexAppsToolsCacheKey = codex_connectors::ConnectorRuntimeContextKey;
|
|
|
|
pub use catalog::McpCatalogBuilder;
|
|
pub use catalog::McpEnvironmentAuthority;
|
|
pub use catalog::McpPluginAttribution;
|
|
pub use catalog::McpServerConflict;
|
|
pub use catalog::McpServerConflictAction;
|
|
pub use catalog::McpServerRegistration;
|
|
pub use catalog::McpServerSource;
|
|
pub use catalog::ResolvedMcpCatalog;
|
|
pub use catalog::ResolvedMcpServer;
|
|
|
|
pub use mcp::CODEX_APPS_MCP_SERVER_NAME;
|
|
pub use mcp::DEFAULT_OPTIONAL_MCP_STARTUP_GRACE;
|
|
pub use mcp::McpConfig;
|
|
pub use mcp::ToolPluginProvenance;
|
|
pub use server::EffectiveMcpServer;
|
|
|
|
pub use auth_elicitation::CodexAppsAuthElicitation;
|
|
pub use auth_elicitation::CodexAppsAuthElicitationPlan;
|
|
pub use auth_elicitation::CodexAppsConnectorAuthFailure;
|
|
pub use auth_elicitation::MCP_TOOL_CODEX_APPS_META_KEY;
|
|
pub use auth_elicitation::auth_elicitation_completed_result;
|
|
pub use auth_elicitation::auth_elicitation_id;
|
|
pub use auth_elicitation::build_auth_elicitation;
|
|
pub use auth_elicitation::build_auth_elicitation_plan;
|
|
pub use auth_elicitation::connector_auth_failure_from_tool_result;
|
|
/// Backward-compatible name for the Codex Apps runtime context key builder.
|
|
pub use codex_connectors::connector_runtime_context_key as codex_apps_tools_cache_key;
|
|
pub use mcp::codex_apps_mcp_server_config;
|
|
pub use mcp::configured_mcp_servers;
|
|
pub use mcp::effective_mcp_servers;
|
|
pub use mcp::effective_mcp_servers_from_configured;
|
|
pub use mcp::host_owned_codex_apps_enabled;
|
|
pub use mcp::hosted_plugin_runtime_mcp_server_config;
|
|
pub use mcp::tool_plugin_provenance;
|
|
pub use plugin_config::PluginMcpConfigParseOutcome;
|
|
pub use plugin_config::PluginMcpServerParseError;
|
|
pub use plugin_config::parse_agent_plugin_mcp_config;
|
|
pub use plugin_config::parse_executor_plugin_mcp_config;
|
|
pub use plugin_config::parse_plugin_mcp_config;
|
|
|
|
pub use mcp::McpServerStatusSnapshot;
|
|
pub use mcp::McpSnapshotDetail;
|
|
pub use mcp::collect_mcp_server_status_snapshot_with_detail;
|
|
pub use mcp::read_mcp_resource;
|
|
|
|
pub use mcp::McpAuthStatusEntry;
|
|
pub use mcp::McpOAuthLoginConfig;
|
|
pub use mcp::McpOAuthLoginSupport;
|
|
pub use mcp::McpOAuthScopesSource;
|
|
pub use mcp::ResolvedMcpOAuthScopes;
|
|
pub use mcp::compute_auth_statuses;
|
|
pub use mcp::discover_supported_scopes;
|
|
pub use mcp::oauth_login_support;
|
|
pub use mcp::resolve_oauth_callback;
|
|
pub use mcp::resolve_oauth_scopes;
|
|
pub use mcp::should_retry_without_scopes;
|
|
|
|
pub use codex_apps::declared_openai_file_input_param_names;
|
|
pub use mcp::McpPermissionPromptAutoApproveContext;
|
|
pub use mcp::mcp_permission_prompt_is_auto_approved;
|
|
pub use mcp::qualified_mcp_tool_name_prefix;
|
|
|
|
pub(crate) mod auth_elicitation;
|
|
mod binding;
|
|
pub(crate) mod binding_clients;
|
|
mod catalog;
|
|
mod client_capabilities;
|
|
mod client_tool_catalog;
|
|
pub(crate) mod codex_apps;
|
|
pub(crate) mod connection_manager;
|
|
pub(crate) mod elicitation;
|
|
mod event_stream;
|
|
mod executor_environment_http_client;
|
|
pub(crate) mod mcp;
|
|
mod openai_docs_source_attribution;
|
|
mod pagination;
|
|
mod plugin_config;
|
|
mod resource_client;
|
|
mod resource_origin;
|
|
pub(crate) mod rmcp_client;
|
|
pub(crate) mod runtime;
|
|
pub(crate) mod server;
|
|
mod tool_catalog_cache;
|
|
pub(crate) mod tools;
|
|
mod trusted_access;
|