pub fn new(
        repo_root: AbsoluteSystemPathBuf,
        paths: Paths,
        timeout: Duration,
        external_shutdown: S,
    ) -> Self {
        // Run the actual service. It takes ownership of the struct given to it,
        // so we use a private struct with just the pieces of state needed to handle
        // RPCs.
        TurboGrpcService {
            repo_root,
            paths,
            timeout,
            external_shutdown,
        }
    }
Create a gRPC server providing the Turbod interface. external_shutdown
can be used to deliver a signal to shutdown the server. This is expected
to be wired to signal handling. By default, the server will set up a
file system watcher for the purposes of managing package discovery
state, and use a `LocalPackageDiscovery` instance to refresh the
state if the filewatcher encounters errors.
crates/turborepo-lib/src/daemon/server.rs