def __init__(
      self,
      model: language_model.LanguageModel,
      memory: associative_memory.AssociativeMemory,
      negotiating_players: Sequence[
          deprecated_agent.BasicAgent | entity_agent.EntityAgent],
      informed_players: Sequence[
          deprecated_agent.BasicAgent | entity_agent.EntityAgent],
      clock_now: Callable[[], datetime.datetime],
      resolution_scenes: Sequence[str],
      chain_of_thought_prefix: str = _DEFAULT_CHAIN_OF_THOUGHT_PREFIX,
      basic_setting: str = 'unspecified',
      name: str = 'agreement tracker',
      seed: int | None = None,
      verbose: bool = False,
  ):
    """Initialize an agreement tracker component.

    Args:
      model: a language model
      memory: an associative memory
      negotiating_players: the players who are negotiating
      informed_players: the players who are informed of the negotiation
      outcome
      clock_now: Function to call to get current time.
      resolution_scenes: Scene types in which to check for agreement.
      chain_of_thought_prefix: include this string in context before all
        reasoning steps for handling the agreements.
      basic_setting: a string to include in the context before all reasoning
      name: name of this component e.g. Possessions, Account, Property, etc
      seed: random seed
      verbose: whether to print the full update chain of thought or not
    """
    self._seed = seed
    self._model = model
    self._memory = memory
    self._negotiating_players = negotiating_players
    self._informed_players = informed_players
    self._clock_now = clock_now
    self._chain_of_thought_prefix = chain_of_thought_prefix
    self._basic_setting = basic_setting
    self._name = name
    self._verbose = verbose

    self._history = []
    self._involved_players = list(negotiating_players) + list(informed_players)

    self._resolution_scenes = resolution_scenes
    self._current_scene = current_scene.CurrentScene(
        name='current scene type',
        memory=self._memory,
        clock_now=self._clock_now,
        verbose=self._verbose,
    )

    self.reset()
    # Set the initial state's string representation.
    self.update()
Initialize an agreement tracker component.

    Args:
      model: a language model
      memory: an associative memory
      negotiating_players: the players who are negotiating
      informed_players: the players who are informed of the negotiation
      outcome
      clock_now: Function to call to get current time.
      resolution_scenes: Scene types in which to check for agreement.
      chain_of_thought_prefix: include this string in context before all
        reasoning steps for handling the agreements.
      basic_setting: a string to include in the context before all reasoning
      name: name of this component e.g. Possessions, Account, Property, etc
      seed: random seed
      verbose: whether to print the full update chain of thought or not
    
concordia/contrib/components/game_master/deprecated/agreement_tracker.py