Files
vscode/cli
Connor PeetandCopilot 94db63f469 agentHost: stop remote connect attempts from piling up
A cold WSL connect downloads a ~220 MB server inside the distro, but the
readiness deadline was a single 60s total timeout, so the attempt was
guaranteed to fail and be retried. Each retry spawned another bootstrap
that started its own concurrent download; they then corrupted each other
and failed with "error renaming downloaded server: Directory not empty".

Fix the whole chain:

- WSL waits on output rather than a wall clock. The readiness deadline is
  now an idle timeout rearmed on every line the bootstrap prints, with a
  separate absolute ceiling, so a slow download no longer looks stuck.
  Also surface a spawn `error`, which previously hung until the timeout.
- WSL dedupes in-flight connects per distro, reserving synchronously
  before the first await so concurrent callers cannot both spawn.
- The WSL launch carries `--idle-timeout`, matching the SSH spawn path, so
  an agent host abandoned by a failed attempt reaps itself instead of
  lingering. The timer is paused while a client is connected.
- SSH and Dev Containers size their endpoint-registration wait to a cold
  server download instead of ~10s, reporting progress while they wait.
  The installer now reports whether it installed, so the long budget
  applies only to a cold start.
- An automatic retry no longer clears the reconnect budget it depends on,
  and a reconnect for an address already being dialed joins that attempt
  rather than starting a competing one.
- The CLI download cache stages per download instead of sharing one
  `.staging` directory it wipes first, serializes concurrent downloaders
  behind a file lock, treats a lost rename race as success rather than a
  spurious "please retry", and cleans up staging on every exit path.

Separately, `RemoteAgentHostContribution` registered a sessions provider
for every configured entry, including kinds whose own contribution
already owns one. That threw and aborted the rest of the reconcile, so
connections were never wired: the filesystem authority went unregistered
and root state was never observed, leaving hosts that appeared connected
but reported no models and could not read files. Restrict it to the kinds
it owns and decouple provider registration from connection wiring.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-31 12:49:37 -07:00
..