code: def add_ccs_to_body(body: str, to_cc: List[str]) -> str:
      lines = body.split("\n")
  
      cc_line_idx = None
      for i, line in enumerate(reversed(lines)):
          if line.strip() == "":
              continue
          if line.startswith("cc @"):
              cc_line_idx = len(lines) - i - 1
          else:
              break
  
      def gen_cc_line(users):
          users = sorted(users)
          return "cc " + " ".join([f"@{user}" for user in users])
  
      if cc_line_idx is None:
          print("Did not find existing cc line")
          lines.append("")
          lines.append(gen_cc_line(to_cc))
      else:
          # Edit cc line in place
          line = lines[cc_line_idx]
          print(f"Found existing cc line at {cc_line_idx}: {line}")
          existing_ccs = find_ccs(line)
          print(f"Found cc's: {existing_ccs}")
  
          if set(to_cc).issubset(set(existing_ccs)):
              # Don't do anything if there is no update needed
              return None
  
          line = gen_cc_line(set(existing_ccs + to_cc))
  
          lines[cc_line_idx] = line
  
      return "\n".join(lines)
  
file_path: tvm/ci/scripts/github/github_tag_teams.py
imports: import os
  import json
  import argparse
  import logging
  import re
  import sys
  from pathlib import Path
  from typing import Dict, Any, List, Tuple, Optional
  from git_utils import git, GitHubRepo, parse_remote, find_ccs, dry_run_token
  from cmd_utils import tags_from_title, init_log
label_desc: Use image node_id 5 for calling a global function with example usage: add_ccs_to_body(body, to_cc) and returns: str, unknown, None