Extra links supported for operators coming from third-party packages:

airflow.serialization.serialized_objects.BUILTIN_OPERATOR_EXTRA_LINKS

airflow/serialization/serialized_objects.py
cls,
        encoded_group: Dict[str, Any],
        parent_group: Optional[TaskGroup],
        task_dict: Dict[str, BaseOperator],
    ) -> Optional[TaskGroup]:
        """Deserializes a TaskGroup from a JSON object."""
        if not encoded_group:
            return None
        group_id = cls._deserialize(encoded_group["_group_id"])
        kwargs = {
            key: cls._deserialize(encoded_group[key])
            for key in ["prefix_group_id", "tooltip", "ui_color", "ui_fgcolor"]
        }
        group = SerializedTaskGroup(group_id=group_id, parent_group=parent_group, **kwargs)
        group.children = {
            label: task_dict[val]
            if _type == DAT.OP  
            else SerializedTaskGroup.deserialize_task_group(val, group, task_dict)
            for label, (_type, val) in encoded_group["children"].items()
        }
        group.upstream_group_ids = set(cls._deserialize(encoded_group["upstream_group_ids"]))
        group.downstream_group_ids = set(cls._deserialize(encoded_group["downstream_group_ids"]))
        group.upstream_task_ids = set(cls._deserialize(encoded_group["upstream_task_ids"]))
        group.downstream_task_ids = set(cls._deserialize(encoded_group["downstream_task_ids"]))
        return group