Hi, I think it can still move with directly move to. So you could find the ‘best’ point that is inside the navmesh and directly move towards that. To find such a point, you could use an EQS query (generate points on the navmesh) and then score or filter them by e.g. Z-Distance and Distance.
To check whether it has left the navmesh, you could try to project the bots location to the navmesh using ProjectPointToNavigation (with only some Z-Distance in the query extent), if that fails then it should be outside the navmesh.
Not sure whether that will work with the navlink though, since there it can be outside the navmesh while moving.