docstr: Allows setting a directive for the agent to follow. This is useful in hierarchy structures, where the agent
  has another master agent that is controlling it. In such cases, the master agent can define the goals for the
  slave agent, define its observation, possible actions, etc. The directive type is defined by the agent
  in-action-space.
  
  :param action: The action that should be set as the directive
  :return:
docstr_tok: ["Allows","setting","a","directive","for","the","agent","to","follow",".","This","is","useful","in","hierarchy","structures",",","where","the","agent","has","another","master","agent","that","is","controlling","it",".","In","such","cases",",","the","master","agent","can","define","the","goals","for","the","slave","agent",",","define","its","observation",",","possible","actions",",","etc",".","The","directive","type","is","defined","by","the","agent","in-action-space",".",":","param","action",":","The","action","that","should","be","set","as","the","directive",":","return",":"]
code: def set_incoming_directive(self, action: ActionType) -> None:
      """
      Allows setting a directive for the agent to follow. This is useful in hierarchy structures, where the agent
      has another master agent that is controlling it. In such cases, the master agent can define the goals for the
      slave agent, define its observation, possible actions, etc. The directive type is defined by the agent
      in-action-space.
  
      :param action: The action that should be set as the directive
      :return:
      """
      if isinstance(self.in_action_space, GoalsSpace):
          self.current_hrl_goal = action
      elif isinstance(self.in_action_space, AttentionActionSpace):
          self.input_filter.observation_filters[
              "attention"
          ].crop_low = action[0]
          self.input_filter.observation_filters[
              "attention"
          ].crop_high = action[1]
          self.output_filter.action_filters["masking"].set_masking(
              action[0], action[1]
          )
  
imports: import copy
  import random
  from collections import OrderedDict
  from typing import Dict, List, Union, Tuple
  import numpy
  from six.moves import range
  from rl_coach.agents.agent_interface import AgentInterface
  from rl_coach.architectures.network_wrapper import NetworkWrapper
  from rl_coach.base_parameters import AgentParameters, Device, DeviceType, DistributedTaskParameters, Frameworks
  from rl_coach.core_types import RunPhase, PredictionType, EnvironmentEpisodes, ActionType, Batch, Episode, StateType
  from rl_coach.core_types import Transition, ActionInfo, TrainingSteps, EnvironmentSteps, EnvResponse
  from rl_coach.logger import screen, Logger, EpisodeLogger
  from rl_coach.memories.episodic.episodic_experience_replay import EpisodicExperienceReplay
  from rl_coach.saver import SaverCollection
  from rl_coach.spaces import SpacesDefinition, VectorObservationSpace, GoalsSpace, AttentionActionSpace
  from rl_coach.utils import Signal, force_list
  from rl_coach.utils import dynamic_import_and_instantiate_module_from_params
  from rl_coach.memories.backend.memory_impl import get_memory_backend
  from rl_coach.core_types import TimeTypes
  from rl_coach.off_policy_evaluators.ope_manager import OpeManager
  from rl_coach.core_types import PickledReplayBuffer, CsvDataset
label_desc: Use image node_id 36 for calling the Agent obj's underlying member method code with example usage: obj.set_incoming_directive(action) without return types