code: def message_mutation(self, message: Message) -> Message:
      if not message.get("available_knowledge_text"):
          return message
      context = message.pop("text")
      knowledge = f'{TOKEN_KNOWLEDGE} {message["available_knowledge_text"]} {TOKEN_END_KNOWLEDGE}'
      delimiter = self.opt.get("delimiter", "\n")
      message["text"] = (
          knowledge
          if context == SILENCE
          else f"{knowledge}{delimiter}{context}"
      )
      return message
  
imports: import copy
  import json
  import os
  from enum import Enum
  from typing import List, Optional, Tuple
  from parlai.core.message import Message
  from parlai.core.metrics import F1Metric
  from parlai.core.mutators import EpisodeMutator, MessageMutator, register_mutator
  from parlai.core.opt import Opt
  from parlai.core.params import ParlaiParser
  from parlai.core.teachers import DialogTeacher
  from parlai.tasks.cmu_dog.build import build
  from parlai.tasks.wizard_of_wikipedia.agents import RareWordF1Calculator, TOKEN_KNOWLEDGE, TOKEN_END_KNOWLEDGE
  from parlai.utils.data import DatatypeHelper
  from parlai.utils.io import PathManager
  from parlai.utils.logging import logger
  from parlai.utils.typing import TShared
label_desc: Use image node_id 1 for calling the PrependKnowledgeToMessageMutator obj's underlying member method code with example usage: obj.message_mutation(message) and returns: message, message