chore(web): bump managed agent-browser backend to 0.39.0

Merged
TH
4d ago
+316-102

Summary

Bumps the managed agent-browser backend from 0.27.1 to 0.39.0 (closes #3573).

  • Pin moved in agent-browser-tool.ts, test-kit, test utils and install-path assertions. Engine stays chrome.
  • Fleet ownership (launch marker, daemon, managed-home matching) now spans every version directory under <stateDir>/tools/agent-browser/, so a backend left running by the previous pin stays owned and reapable. Path derivation moved into agent-browser-install-paths.ts, shared by the tool and the matcher; ownership is computed once per scan.
  • No change for other platforms.

Live evidence (0.39.0, macOS, Node 26, fresh state dir, repo CLI)

  • web setup installs 0.39.0; web doctor → "Web backend is healthy."
  • Off-viewport fixture (button ~3000px down, viewport 1000x700): snapshot -i then click @e2 → "Tapped @e2", page text becomes clicked.
  • Walked open, snapshot [-i], viewport, fill, type, scroll, screenshot --fullscreen, network dump, record start/stop (webm written), close: all work. Refs expire after fill/viewport as before.
  • Version-mismatch notice (⚠ Daemon version mismatch detected, restarting...) goes to stderr; stdout is pure JSON.
  • CLI refusal envelopes (missing_arguments, unknown_command) are byte-identical to the fixtures; the refless snapshot wording matches the existing payloads.
  • record start still mints an ffmpeg child of the daemon, so the fleet-lifecycle record rescan stays correct.
  • AGENT_DEVICE_WEB_E2E=1 pnpm test:smoke:web: 3/3 pass (incl. leak oracle and daemon-shutdown cleanup).

Validation

pnpm check:affected --run passed on e8f38d6dd1 (format, lint, typecheck, layering, fallow, build, 335 test files).
New tests: sibling-version matching (daemon, launch marker, managed home), no claim on another state dir, provider-startup reaping of a record whose command sits in the old version dir, record scan keeps the old fleet, install-path listing.

Not changed: --compact still drops ref-less text on 0.39.0 (#3509 stays separate). Warm per-call latency is not improved (issue measured median 85 ms → 117 ms), so this buys correctness only.