v2.1.34
HandleVmAgentEventJob requests agent.version from the VM's agent once its capabilities are known and no version is recorded yet, then persists the result into VirtualMachines.features['agent_version'] via the new VirtualMachinesService::recordAgentVersion(). Gated on not already having a version so it doesn't re-fire on every heartbeat.