Cache executor metadata from initialization (#40343)

## What changed

- Include `environmentInfo` in the exec-server `initialize` response and seed the Rust client's metadata cache from it.
- Fall back to one lazy `environment/info` request when connecting to older servers that omit initialization metadata, then share the cached result across client clones and session recovery.
- Keep app-server `environment/info` requests uncached so they continue to probe the executor.

## Testing

- Cover initialization metadata, the legacy-server fallback, shared caching, accepted WebSocket environments, and repeated uncached app-server probes.

GitOrigin-RevId: 380132d9db183998d73e8c6b0954e4d70c7e8406
This commit is contained in:
cgst-oai authored and copyberry committed 2026-08-24 06:43:07 +00:00
1 parent 068c49f075
commit 2df6705423
14 files changed
+249 -13

No files matched your search

@@ -124,7 +124,7 @@ async fn stalled_handshake_unblocks_remote_executor(
tokio::time::timeout(
Duration::from_secs(2),
exec_server.client.environment_info(),
exec_server.client.environment_status(),
)
.await
.context("a timed-out handshake must not leave the serial executor blocked")??;