code: def get_all_artifacts_per_task_id(chain, upstream_artifacts):
      
      all_artifacts_per_task_id = {}
      for link in chain.links:
          # Download task-graph.json for decision+action task cot verification
          if link.task_type in PARENT_TASK_TYPES:
              add_enumerable_item_to_dict(
                  dict_=all_artifacts_per_task_id, key=link.task_id, item='public/task-graph.json'
              )
          # Download actions.json for decision+action task cot verification
          if link.task_type in DECISION_TASK_TYPES:
              add_enumerable_item_to_dict(
                  dict_=all_artifacts_per_task_id, key=link.task_id, item='public/actions.json'
              )
              add_enumerable_item_to_dict(
                  dict_=all_artifacts_per_task_id, key=link.task_id, item='public/parameters.yml'
              )
  
      if upstream_artifacts:
          for upstream_dict in upstream_artifacts:
              add_enumerable_item_to_dict(
                  dict_=all_artifacts_per_task_id, key=upstream_dict['taskId'], item=upstream_dict['paths']
              )
  
      # Avoid duplicate paths per task_id
      for task_id, paths in all_artifacts_per_task_id.items():
          all_artifacts_per_task_id[task_id] = sorted(set(paths))
  
      return all_artifacts_per_task_id
docs: Return every artifact to download, including the Chain Of Trust Artifacts.
  
      Args:
          chain (ChainOfTrust): the chain of trust object
          upstream_artifacts: the list of upstream artifact definitions
  
      Returns:
          dict: sorted list of paths to downloaded artifacts ordered by taskId