mirror of
https://github.com/openai/codex.git
synced 2026-10-30 19:18:49 +00:00
Acquire and cache opt-in executor capability inventories via V2 (#53736)
## What changed - Add the disabled-by-default `executor_capability_discovery_v2` feature to acquire `capabilities/discoverV2` inventories from supporting remote executors using each selected environment's working directory and sandbox. - Share snapshots with MCP and world-state contributors and skill providers without activating discovered plugins or publishing discovered skills to the model. - Cache inventories by environment instance, executor session, working directory, and sandbox. Coalesce concurrent requests, refresh the cache at turn start, retry transient failures, and refresh MCP projections after recovery. - Resolve the system skills root in the executor and pass it explicitly to capability location discovery. ## Testing Add coverage for feature gating, unsupported executors, inert inventories, cache reuse and eviction, turn refreshes, failure recovery, executor replacement, and system skill locations. GitOrigin-RevId: 1bdca28fa7f17622b27e2713ab3dcc0c13426889
This commit is contained in:
committed by
copyberry
parent
4d82d36ccf
commit
cf0ed4c600
@@ -9,6 +9,7 @@ use std::time::Duration;
|
||||
use std::time::Instant;
|
||||
|
||||
use codex_diagnostics::Gauge;
|
||||
use codex_exec_server::ExecutorCapabilityDiscoveryV2Cache;
|
||||
use codex_extension_api::ThreadIdleCause;
|
||||
use futures::future::BoxFuture;
|
||||
use tokio::select;
|
||||
@@ -290,6 +291,18 @@ impl Session {
|
||||
input: Vec<TurnInput>,
|
||||
task: T,
|
||||
) {
|
||||
// Replace the cache; in-flight acquisitions retain their previous Arc.
|
||||
self.services
|
||||
.thread_extension_data
|
||||
.insert(ExecutorCapabilityDiscoveryV2Cache::default());
|
||||
if turn_context
|
||||
.config
|
||||
.features
|
||||
.enabled(Feature::ExecutorCapabilityDiscoveryV2)
|
||||
{
|
||||
// MCP contributors must project the new inventory even if their other inputs match.
|
||||
self.request_mcp_runtime_reprojection();
|
||||
}
|
||||
self.activate_plugin_selection(&turn_context).await;
|
||||
// Inherited or recovered roots are applied before task start. Otherwise this
|
||||
// task owns its turn, including background work. Later mail cannot change it.
|
||||
|
||||
Reference in New Issue
Block a user