code: def heartbeat(self) -> dict[ShuffleId, Any]:
      return {
          id: shuffle_run.heartbeat()
          for id, shuffle_run in self._active_runs.items()
      }
  
imports: from __future__ import annotations
  import asyncio
  import logging
  from collections.abc import Sequence
  from concurrent.futures import ThreadPoolExecutor
  from typing import TYPE_CHECKING, Any, overload
  from dask.context import thread_state
  from dask.typing import Key
  from dask.utils import parse_bytes
  from distributed.diagnostics.plugin import WorkerPlugin
  from distributed.protocol.serialize import ToPickle
  from distributed.shuffle._core import NDIndex, ShuffleId, ShuffleRun, ShuffleRunSpec, ShuffleSpec
  from distributed.shuffle._exceptions import ShuffleClosedError
  from distributed.shuffle._limiter import ResourceLimiter
  from distributed.utils import log_errors, sync
label_desc: Use image node_id 2 for calling the _ShuffleRunManager obj's underlying member method code with example usage: obj.heartbeat() and returns: unknown