code: def __init__(
      self,
      cluster_manager: ClusterManager,
      file_manager: FileManager,
      working_dir: str,
      sdk: Optional["AnyscaleSDK"] = None,
      artifact_path: Optional[str] = None,
  ):
      super(JobRunner, self).__init__(
          cluster_manager=cluster_manager,
          file_manager=file_manager,
          working_dir=working_dir,
      )
      self.sdk = sdk or get_anyscale_sdk()
      self.job_manager = JobManager(cluster_manager)
  
      self.last_command_scd_id = None
  
imports: import json
  import os
  import tempfile
  from typing import TYPE_CHECKING, Any, Dict, Optional
  from ray_release.cluster_manager.cluster_manager import ClusterManager
  from ray_release.command_runner.command_runner import CommandRunner
  from ray_release.exception import ClusterNodesWaitTimeout, CommandError, CommandTimeout, LocalEnvSetupError, LogsError, FetchResultError
  from ray_release.file_manager.file_manager import FileManager
  from ray_release.job_manager import JobManager
  from ray_release.logger import logger
  from ray_release.util import format_link, get_anyscale_sdk
  from ray_release.wheels import install_matching_ray_locally
label_desc: Use image node_id 1 to create a new JobRunner object from inherited base classes: CommandRunner with example: obj = JobRunner(cluster_manager, file_manager, working_dir, sdk, artifact_path)