        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request an Pixel 4a for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Pixel 4a",
            question="mean",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndMedianRequestPixel4aTask(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request an Pixel 4a for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Pixel 4a",
            question="median",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndModeRequestPixel4aTask(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request an Pixel 4a for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,


        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request an Pixel 4a for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Pixel 4a",
            question="median",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndModeRequestPixel4aTask(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request an Pixel 4a for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Pixel 4a",
            question="mode",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndMaxRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,


        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request an Pixel 4a for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Pixel 4a",
            question="mode",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndMaxRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="max",
            dashboard_class=SingleChartMinMaxRetrievalTask,
        )

class DashboardRetrieveIncidentAndMeanRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,


        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="max",
            dashboard_class=SingleChartMinMaxRetrievalTask,
        )

class DashboardRetrieveIncidentAndMeanRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="mean",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndMedianRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,


        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="mean",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndMedianRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="median",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndModeRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,


        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="median",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndModeRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="mode",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

local_vars = locals().copy()

__TASKS__ = [
    var
    for var in local_vars.values()
    if isinstance(var, type) and issubclass(var, DashDoFinalTask) and var is not DashDoFinalTask
]

DASH_AND_REQUEST = [
    DashboardRetrieveIncidentAndMaxRequestAppleWatchTask,
    DashboardRetrieveIncidentAndMaxRequestAppleWatch2Task,
    DashboardRetrieveIncidentAndMaxRequestAppleIpad3Task,
    DashboardRetrieveIncidentAndMaxRequestAppleIphone13proTask,
    DashboardRetrieveIncidentAndMaxRequestAppleIphone13Task,
    DashboardRetrieveIncidentAndMaxRequestGalaxyNote20Task,
    DashboardRetrieveIncidentAndMaxRequestGoogleNexus7Task,
    DashboardRetrieveIncidentAndMaxRequestMicrosoftSurfacePro3Task,


        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="median",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

class DashboardRetrieveIncidentAndModeRequestWindowsSurfacePro4Task(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request a Windows Surface Pro 4 for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            item="Windows Surface Pro 4",
            question="mode",
            dashboard_class=SingleChartMeanMedianModeRetrievalTask,
        )

local_vars = locals().copy()

__TASKS__ = [
    var
    for var in local_vars.values()
    if isinstance(var, type) and issubclass(var, DashDoFinalTask) and var is not DashDoFinalTask
]

DASH_AND_REQUEST = [
    DashboardRetrieveIncidentAndMaxRequestAppleWatchTask,
    DashboardRetrieveIncidentAndMaxRequestAppleWatch2Task,
    DashboardRetrieveIncidentAndMaxRequestAppleIpad3Task,
    DashboardRetrieveIncidentAndMaxRequestAppleIphone13proTask,
    DashboardRetrieveIncidentAndMaxRequestAppleIphone13Task,
    DashboardRetrieveIncidentAndMaxRequestGalaxyNote20Task,
    DashboardRetrieveIncidentAndMaxRequestGoogleNexus7Task,
    DashboardRetrieveIncidentAndMaxRequestMicrosoftSurfacePro3Task,


        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. ""Order an item for the best performing employee from the list"
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,
            question=question,
            dashboard_class=dashboard_class,
        )
        if not item:
            raise Exception("No item passed to assign")
        self.item = item
        self.attribute_name = "assigned_to"  # Return full name
        self.filter_than = "greater"
        self.prefix = "DRI"

    def set_compositional_task(self) -> None:
        # The unique name for the user is created once the task is instantiated
        requested_items = table_api_call(
            instance=self.instance,
            table="sc_req_item",
            method="GET",
        )["result"]
        current_requested_items_numbers = [
            requested_item["number"] for requested_item in requested_items
        ]

        agent_full_names, agent_value_sysids = self.get_agent_values(
            self.attribute_name, self.filter_than
        )
        self.agent_value_sysids = agent_value_sysids

        requested_item_numbers = []

        for _ in range(len(agent_full_names)):
            requested_item_number = "RITM" + str(random.randint(1000000, 9999999))
            while (
                requested_item_number in current_requested_items_numbers
                or requested_item_number in requested_item_numbers
            ):
                requested_item_number = "RITM" + str(random.randint(1000000, 9999999))
            requested_item_numbers.append(requested_item_number)

        self.requested_item_numbers = requested_item_numbers

        create_item_request_subtasks = []

        for agent_full_name, requested_item_number in zip(agent_full_names, requested_item_numbers):
            request_item_config = {
                "fields": {
                    "number": "Number",
                    "cat_item": "Item",
                    "requested_for": "Requested for",
                    "quantity": "Quantity",
                },
                "task_fields": ["number", "cat_item", "requested_for", "quantity"],
                "template_record": {
                    "number": requested_item_number,
                    "cat_item": self.item,
                    "requested_for": agent_full_name,
                    "quantity": "1",
                },
            }

            create_item_request_subtask = [
                # Navigate to the item request list
                AllMenuTask(
                    instance=self.instance,
                    fixed_config={
                        "application": "Open Records",
                        "module": "Open Records > Items",
                        "url": "/now/nav/ui/classic/params/target/sc_req_item_list.do",
                    },
                    is_validated=False,
                    used_in_level_2=True,
                ),
                # Create an item request
                CreateItemRequestTask(
                    instance=self.instance,
                    fixed_config=request_item_config,
                    is_validated=False,
                    used_in_level_2=True,
                    check_record_created=False,
                ),
            ]
            create_item_request_subtasks += create_item_request_subtask

        self.compositional_task = create_item_request_subtasks

    def setup_goal(self, page: Page) -> tuple[str, dict]:
        self.create_report()
        self.set_compositional_task()
        config = self.fixed_config if self.fixed_config else self._get_config()
        requested_item_numbers_string = ", ".join(self.requested_item_numbers)

        if self.level == 3:
            self.task_description = (
                self.task_description
                + f"\t - Please retrieve the '{self.description_mapping[self.question]}' value of the number of incidents assigned across agents. Retrieve agents that have greater than or equal number of incidents assigned to them compared to this value.\n"
                + f"\t   For example, if you were asked to find the 'mean' or 'average' for a case where there are 4 agents assigned 1,2,3,2 incidents respectively, the mean would be 2. The list of agents required for solving the following task would be all the agents that have greater than or equal to 2 assigned incidents.\n\n"
                + f"\t - Task: For each agent that fits the above criteria, create an 'item request' with the following information (only fill these fields and the 'request item number' from below) and 'request it' for them using the 'Requested for' field: \n"
                + f"\t\t Item: {self.item}, Quantity: 1, Requested for: <agent name>.\n"
                + f"\t   Importantly, you should override the default request item numbers in the form and instead use one request item number from the following list for each item request you create: {requested_item_numbers_string}.\n\n"
                + f"Note that you will create as many item requests as there are agents matching the above criteria.\n"
                + f"\t   For example, consider the above case and say you have 3 agents with greater than or equal to 2 incidents assigned to them in the chart. You will be creating '3' item requests here, one for each agent. \n\n"
            )

        goal, info = super().setup_goal(page=page, config=config)


                        "application": "Open Records",
                        "module": "Open Records > Items",
                        "url": "/now/nav/ui/classic/params/target/sc_req_item_list.do",
                    },
                    is_validated=False,
                    used_in_level_2=True,
                ),
                # Create an item request
                CreateItemRequestTask(
                    instance=self.instance,
                    fixed_config=request_item_config,
                    is_validated=False,
                    used_in_level_2=True,
                    check_record_created=False,
                ),
            ]
            create_item_request_subtasks += create_item_request_subtask

        self.compositional_task = create_item_request_subtasks

    def setup_goal(self, page: Page) -> tuple[str, dict]:
        self.create_report()
        self.set_compositional_task()
        config = self.fixed_config if self.fixed_config else self._get_config()
        requested_item_numbers_string = ", ".join(self.requested_item_numbers)

        if self.level == 3:
            self.task_description = (
                self.task_description
                + f"\t - Please retrieve the '{self.description_mapping[self.question]}' value of the number of incidents assigned across agents. Retrieve agents that have greater than or equal number of incidents assigned to them compared to this value.\n"
                + f"\t   For example, if you were asked to find the 'mean' or 'average' for a case where there are 4 agents assigned 1,2,3,2 incidents respectively, the mean would be 2. The list of agents required for solving the following task would be all the agents that have greater than or equal to 2 assigned incidents.\n\n"
                + f"\t - Task: For each agent that fits the above criteria, create an 'item request' with the following information (only fill these fields and the 'request item number' from below) and 'request it' for them using the 'Requested for' field: \n"
                + f"\t\t Item: {self.item}, Quantity: 1, Requested for: <agent name>.\n"
                + f"\t   Importantly, you should override the default request item numbers in the form and instead use one request item number from the following list for each item request you create: {requested_item_numbers_string}.\n\n"
                + f"Note that you will create as many item requests as there are agents matching the above criteria.\n"
                + f"\t   For example, consider the above case and say you have 3 agents with greater than or equal to 2 incidents assigned to them in the chart. You will be creating '3' item requests here, one for each agent. \n\n"
            )

        goal, info = super().setup_goal(page=page, config=config)

        if self.level == 2:
            goal = (
                self.short_description
                + f"\n1. Navigate to the Reports > View/Run page. \n"
                + f"\n2. Given the title of the report, search for it on this page. The report shows the number of 'incidents' assigned to an 'agent'.\n"
                + f"\n3. Find the agents with a number of incidents assigned greater than or equal to the {self.description_mapping[self.question]} of the number of assigned incidents across agents. For example, if you were asked to find the 'mean' or 'average' for a case where there are 4 agents assigned 1,2,3,2 incidents respectively, the mean would be 2. The list of agents required for solving the following task would be all the agents that have greater than or equal to 2 assigned incidents.\n"
                + f"\n4. Navigate to Open Records > Items. \n"
                + f"\n5. You have to create new 'item requests' from this page for all the agents based on the above criteria. Only fill the following fields when creating a new item request:- Item: {self.item}, Quantity: 1 and 'request' them for each agent using the 'Requested For' field.\n\n"
                + f"Importantly, you should override the default request item numbers in the form and instead use one request item number from the following list for each item request you create: {requested_item_numbers_string}.\n"
                + f"Note that you will create as many item requests as there are agents matching the above criteria.\n"
                + "For example, consider the above case and say you have 3 agents with greater than or equal to 2 incidents assigned to them in the chart. You will be creating '3' item requests here, one for each agent. \n"
            )

        return goal, info

    def validate(self, page: Page, chat_messages: list[str]) -> Tuple[float, bool, str, dict]:
        for requested_item_number in self.requested_item_numbers:
            created_request_item_response = table_api_call(
                instance=self.instance,
                table="sc_req_item",
                params={
                    "sysparm_query": f"number={requested_item_number}",
                    "sysparm_fields": "requested_for,cat_item,quantity",
                },
                method="GET",
            )["result"]
            if len(created_request_item_response) == 0:
                return (
                    0,
                    False,
                    "",
                    {"message": f"No request item created with number {requested_item_number}."},
                )
            elif len(created_request_item_response) > 1:


validate

                + f"\t   For example, consider the above case and say you have 3 agents with greater than or equal to 2 incidents assigned to them in the chart. You will be creating '3' item requests here, one for each agent. \n\n"
            )

        goal, info = super().setup_goal(page=page, config=config)

        if self.level == 2:
            goal = (
                self.short_description
                + f"\n1. Navigate to the Reports > View/Run page. \n"
                + f"\n2. Given the title of the report, search for it on this page. The report shows the number of 'incidents' assigned to an 'agent'.\n"
                + f"\n3. Find the agents with a number of incidents assigned greater than or equal to the {self.description_mapping[self.question]} of the number of assigned incidents across agents. For example, if you were asked to find the 'mean' or 'average' for a case where there are 4 agents assigned 1,2,3,2 incidents respectively, the mean would be 2. The list of agents required for solving the following task would be all the agents that have greater than or equal to 2 assigned incidents.\n"
                + f"\n4. Navigate to Open Records > Items. \n"
                + f"\n5. You have to create new 'item requests' from this page for all the agents based on the above criteria. Only fill the following fields when creating a new item request:- Item: {self.item}, Quantity: 1 and 'request' them for each agent using the 'Requested For' field.\n\n"
                + f"Importantly, you should override the default request item numbers in the form and instead use one request item number from the following list for each item request you create: {requested_item_numbers_string}.\n"
                + f"Note that you will create as many item requests as there are agents matching the above criteria.\n"
                + "For example, consider the above case and say you have 3 agents with greater than or equal to 2 incidents assigned to them in the chart. You will be creating '3' item requests here, one for each agent. \n"
            )

        return goal, info

    def validate(self, page: Page, chat_messages: list[str]) -> Tuple[float, bool, str, dict]:
        for requested_item_number in self.requested_item_numbers:
            created_request_item_response = table_api_call(
                instance=self.instance,
                table="sc_req_item",
                params={
                    "sysparm_query": f"number={requested_item_number}",
                    "sysparm_fields": "requested_for,cat_item,quantity",
                },
                method="GET",
            )["result"]
            if len(created_request_item_response) == 0:
                return (
                    0,
                    False,
                    "",
                    {"message": f"No request item created with number {requested_item_number}."},
                )
            elif len(created_request_item_response) > 1:
                return (
                    0,
                    False,
                    "",
                    {
                        "message": f"Multiple request items created with number {requested_item_number}."
                    },
                )
            created_request_item_response = created_request_item_response[0]
            if (
                created_request_item_response["requested_for"]["value"]
                not in self.agent_value_sysids
            ):
                return (
                    0,
                    False,
                    "",
                    {
                        "message": f"Request item {requested_item_number} created for a random agent."
                    },
                )
            if str(created_request_item_response["quantity"]) != "1":
                return (
                    0,
                    False,
                    "",
                    {
                        "message": f"Request item {requested_item_number} requested incorrect number of items."
                    },
                )
            cat_item = created_request_item_response["cat_item"]
            if not cat_item:
                return (
                    0,
                    False,
                    "",
                    {"message": f"Request item {requested_item_number} did not request an item."},
                )
            cat_item_response = table_api_call(
                instance=self.instance,
                table="sc_cat_item",
                params={
                    "sysparm_query": f"sys_id={cat_item['value']}",
                    "sysparm_fields": "sys_name",
                },
                method="GET",
            )["result"]
            if len(cat_item_response) == 0:
                return (
                    0,
                    False,
                    "",
                    {"message": f"Request item {requested_item_number} did not request an item."},
                )

            if cat_item_response[0]["sys_name"] != self.item:
                return (
                    0,
                    False,
                    "",
                    {
                        "message": f"Request item {requested_item_number} requested an incorrect item."
                    },
                )

        for agent_sysid in self.agent_value_sysids:
            created_request_item_response = table_api_call(
                instance=self.instance,
                table="sc_req_item",
                params={
                    "sysparm_query": f"requested_for={agent_sysid}",
                    "sysparm_fields": "requested_for",
                },
                method="GET",
            )["result"]
            if len(created_request_item_response) == 0:
                return (
                    0,
                    False,
                    "",
                    {
                        "message": f"No request created for agent {self.agents[agent_sysid]['user_name']}."
                    },
                )
            elif len(created_request_item_response) > 1:
                return (
                    0,
                    False,
                    "",
                    {
                        "message": f"Multiple requests created for agent {self.agents[agent_sysid]['user_name']}."
                    },
                )
        reward, done, message, info = super().validate(page, chat_messages)
        return reward, done, message, info

    def teardown(self) -> None:
        for requested_item_number in self.requested_item_numbers:
            created_item_request_response = table_api_call(
                instance=self.instance,
                table="sc_req_item",
                params={
                    "sysparm_query": f"number={requested_item_number}",
                },
                method="GET",
            )["result"]
            if len(created_item_request_response) > 1:
                raise Exception("Multiple request items created")
            if len(created_item_request_response) == 1:
                created_item_request_sysid = created_item_request_response[0]["sys_id"]
                db_delete_from_table(
                    instance=self.instance,
                    table="sc_req_item",
                    sys_id=created_item_request_sysid,
                )


teardown

                return (
                    0,
                    False,
                    "",
                    {
                        "message": f"No request created for agent {self.agents[agent_sysid]['user_name']}."
                    },
                )
            elif len(created_request_item_response) > 1:
                return (
                    0,
                    False,
                    "",
                    {
                        "message": f"Multiple requests created for agent {self.agents[agent_sysid]['user_name']}."
                    },
                )
        reward, done, message, info = super().validate(page, chat_messages)
        return reward, done, message, info

    def teardown(self) -> None:
        for requested_item_number in self.requested_item_numbers:
            created_item_request_response = table_api_call(
                instance=self.instance,
                table="sc_req_item",
                params={
                    "sysparm_query": f"number={requested_item_number}",
                },
                method="GET",
            )["result"]
            if len(created_item_request_response) > 1:
                raise Exception("Multiple request items created")
            if len(created_item_request_response) == 1:
                created_item_request_sysid = created_item_request_response[0]["sys_id"]
                db_delete_from_table(
                    instance=self.instance,
                    table="sc_req_item",
                    sys_id=created_item_request_sysid,
                )
        return super().teardown()

class DashboardRetrieveIncidentAndMaxRequestAppleWatchTask(
    DashboardRetrieveIncidentAndRequestItemTask, DashDoFinalTask
):
    def __init__(
        self,
        instance: SNowInstance = None,
        seed: int = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Retrieve the best performing agent and request an apple watch for them.
        """
        super().__init__(
            instance=instance,
            seed=seed,
            fixed_config=fixed_config,
            level=level,


from faker import Faker

fake = Faker()
from functools import partial

from playwright.sync_api._generated import Page

from browsergym.workarena.tasks.form import (
    CreateChangeRequestTask,
    CreateHardwareAssetTask,
    CreateIncidentTask,
    CreateProblemTask,
    CreateUserTask,
)
from browsergym.workarena.tasks.list import (
    FilterAssetListTask,
    FilterChangeRequestListTask,
    FilterHardwareListTask,
    FilterIncidentListTask,
    FilterServiceCatalogItemListTask,
    FilterUserListTask,
    SortAssetListTask,
    SortChangeRequestListTask,
    SortHardwareListTask,
    SortIncidentListTask,
    SortServiceCatalogItemListTask,
    SortUserListTask,
)
from browsergym.workarena.tasks.navigation import AllMenuTask
from browsergym.workarena.tasks.service_catalog import (
    OrderDeveloperLaptopTask,
    OrderIpadMiniTask,
    OrderIpadProTask,
    OrderSalesLaptopTask,
    OrderStandardLaptopTask,
    OrderAppleWatchTask,
    OrderAppleMacBookPro15Task,
    OrderDevelopmentLaptopPCTask,
    OrderLoanerLaptopTask,
)

from .base import HumanEvalTask, InfeasibleCompositionalTask
from .utils.infeasible_configs import (
    get_infeasible_form_config,
    get_infeasible_service_catalog_config,
    get_infeasible_filter_config,
    get_infeasible_sort_config,
)

from ..base import AbstractServiceNowTask

from ...instance import SNowInstance

class InfeasibleNavigateAndDoTask(InfeasibleCompositionalTask, HumanEvalTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        function: callable = None,
        provide_reason: bool = True,
        navigation_config: dict = None,
        level: int = 2,
        task_class: AbstractServiceNowTask = None,
    ) -> None:
        """
        Generic task to navigate to a specific page and perform a task.

        Parameters:
        -----------
        instance: SNowInstance
            The ServiceNow instance to run the task on.
        fixed_config: list[AbstractServiceNowTask]
            A list of tuples, each containing a subtask
        function: callable
            Function that takes a valid config and renders it infeasible.
        provide_reason: bool
            Whether to provide a reason for the infeasibility. If False, the list of reasons will be [""] so that
            any infeasibility can be detected by the absence of a reason.
        navigation_config: dict
            Configuration to use for the navigation task. Contains the application and the module; the URL is not necessary as the
            nav step is not validated.
        level: int
            The level of the task; choice between 2 and 3. L2 will have all the info in the the goal and start in the SNOW home page.
            L3 will start in a private task page describing the information needed to complete the task and the related company protocol
            to complete it.
        task: AbstractServiceNowTask
            The task to perform after navigating to the page.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed. Provided by the child class.
        short_description: str
            A short description of the task to be completed. "Create a new user". Provided by the child class.
        """
        assert level in [2, 3], "Level must be either 2 or 3"
        self.level = level
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            level=level,
        )
        self.used_in_level_2 = self.level == 2
        self.task_class = task_class
        self.task_description = None
        self.short_description = None
        # Get the navigation configuration; there is only one configuration for each application and module combo
        self.navigation_config = navigation_config
        self.function = partial(function, provide_reason=provide_reason)

    def setup_goal(self, page: Page) -> tuple[str, dict]:
        config = self.fixed_config if self.fixed_config else self._get_config()
        goal, info = super().setup_goal(page=page, config=config)

        return goal, info

    def _get_config(self) -> list[AbstractServiceNowTask]:
        valid_task_config = self.random.choice(self.task_class.all_configs())
        infeasible_task_config, self.infeasible_reasons = self.function(
            config=valid_task_config, random=self.random
        )
        config = [
            # Infeasible version of navigate to the task start page
            AllMenuTask(
                instance=self.instance,
                fixed_config=self.navigation_config,
                is_validated=False,
                used_in_level_2=True,
                has_description=True,
            ),
            self.task_class(
                seed=self.seed,
                instance=self.instance,
                fixed_config=infeasible_task_config,
                is_validated=False,
                has_description=True,
                used_in_level_2=self.used_in_level_2,
            ),
        ]

        return config

class InfeasibleNavigateAndCreateUserWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the user list page and create a new user.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new user"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Organization",
                "module": "Users",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateUserTask,
            provide_reason=True,
        )
        self.task_description = "Create a new user with the required information. \n"
        self.short_description = "Create a new user"

class InfeasibleNavigateAndCreateUserTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the user list page and create a new user.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new user"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Organization",
                "module": "Users",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateUserTask,
        )
        self.task_description = "Create a new user with the required information. \n"
        self.short_description = "Create a new user"

class InfeasibleNavigateAndCreateIncidentWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the incident list page and create a new incident.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new incident"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Service Desk",
                "module": "Incidents",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateIncidentTask,
            provide_reason=True,
        )
        self.task_description = "Create a new incident with the required information. \n"
        self.short_description = "Create a new incident"

class InfeasibleNavigateAndCreateIncidentTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the incident list page and create a new incident.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new incident"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Service Desk",
                "module": "Incidents",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateIncidentTask,
        )
        self.task_description = "Create a new incident with the required information. \n"
        self.short_description = "Create a new incident"

class InfeasibleNavigateAndCreateChangeRequestWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the change request list page and create a new change request.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new change request"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Change",
                "module": "All",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateChangeRequestTask,
            provide_reason=True,
        )
        self.task_description = (
            'Create a new "Normal" change request with the required information. \n'
        )
        self.short_description = 'Create a new "Normal" change request'

class InfeasibleNavigateAndCreateChangeRequestTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the change request list page and create a new change request.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new change request"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Change",
                "module": "All",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateChangeRequestTask,
        )
        self.task_description = (
            'Create a new "Normal" change request with the required information. \n'
        )
        self.short_description = 'Create a new "Normal" change request'

class InfeasibleNavigateAndCreateProblemWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the problem list page and create a new problem.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new problem"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Problem",
                "module": "All",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateProblemTask,
            provide_reason=True,
        )
        self.task_description = "Create a new problem with the required information. \n"
        self.short_description = "Create a new problem"

class InfeasibleNavigateAndCreateProblemTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the problem list page and create a new problem.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new problem"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Problem",
                "module": "All",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateProblemTask,
        )
        self.task_description = "Create a new problem with the required information. \n"
        self.short_description = "Create a new problem"

class InfeasibleNavigateAndCreateHardwareAssetWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the hardware asset list page and create a new hardware asset.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new hardware asset"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Asset",
                "module": "Portfolios > Hardware Assets",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateHardwareAssetTask,
            provide_reason=True,
        )
        self.task_description = "Create a new hardware asset with the required information. \n"
        self.short_description = "Create a new hardware asset"

class InfeasibleNavigateAndCreateHardwareAssetTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the hardware asset list page and create a new hardware asset.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new hardware asset"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Asset",
                "module": "Portfolios > Hardware Assets",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateHardwareAssetTask,
        )
        self.task_description = "Create a new hardware asset with the required information. \n"
        self.short_description = "Create a new hardware asset"

class InfeasibleNavigateAndOrderStandardLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a standard laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a standard laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            function=get_infeasible_service_catalog_config,
            task_class=OrderStandardLaptopTask,
            provide_reason=True,
        )
        self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a standard laptop from the service catalog"

class InfeasibleNavigateAndOrderStandardLaptopTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a standard laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a standard laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_service_catalog_config,
            task_class=OrderStandardLaptopTask,
        )
        self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a standard laptop from the servi
# ... truncated ...


InfeasibleNavigateAndDoTask

    OrderStandardLaptopTask,
    OrderAppleWatchTask,
    OrderAppleMacBookPro15Task,
    OrderDevelopmentLaptopPCTask,
    OrderLoanerLaptopTask,
)

from .base import HumanEvalTask, InfeasibleCompositionalTask
from .utils.infeasible_configs import (
    get_infeasible_form_config,
    get_infeasible_service_catalog_config,
    get_infeasible_filter_config,
    get_infeasible_sort_config,
)

from ..base import AbstractServiceNowTask

from ...instance import SNowInstance

class InfeasibleNavigateAndDoTask(InfeasibleCompositionalTask, HumanEvalTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        function: callable = None,
        provide_reason: bool = True,
        navigation_config: dict = None,
        level: int = 2,
        task_class: AbstractServiceNowTask = None,
    ) -> None:
        """
        Generic task to navigate to a specific page and perform a task.

        Parameters:
        -----------
        instance: SNowInstance
            The ServiceNow instance to run the task on.
        fixed_config: list[AbstractServiceNowTask]
            A list of tuples, each containing a subtask
        function: callable
            Function that takes a valid config and renders it infeasible.
        provide_reason: bool
            Whether to provide a reason for the infeasibility. If False, the list of reasons will be [""] so that
            any infeasibility can be detected by the absence of a reason.
        navigation_config: dict
            Configuration to use for the navigation task. Contains the application and the module; the URL is not necessary as the
            nav step is not validated.
        level: int
            The level of the task; choice between 2 and 3. L2 will have all the info in the the goal and start in the SNOW home page.
            L3 will start in a private task page describing the information needed to complete the task and the related company protocol
            to complete it.
        task: AbstractServiceNowTask
            The task to perform after navigating to the page.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed. Provided by the child class.
        short_description: str
            A short description of the task to be completed. "Create a new user". Provided by the child class.
        """
        assert level in [2, 3], "Level must be either 2 or 3"
        self.level = level
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            level=level,
        )
        self.used_in_level_2 = self.level == 2
        self.task_class = task_class
        self.task_description = None
        self.short_description = None
        # Get the navigation configuration; there is only one configuration for each application and module combo
        self.navigation_config = navigation_config
        self.function = partial(function, provide_reason=provide_reason)

    def setup_goal(self, page: Page) -> tuple[str, dict]:
        config = self.fixed_config if self.fixed_config else self._get_config()
        goal, info = super().setup_goal(page=page, config=config)

        return goal, info

    def _get_config(self) -> list[AbstractServiceNowTask]:
        valid_task_config = self.random.choice(self.task_class.all_configs())
        infeasible_task_config, self.infeasible_reasons = self.function(
            config=valid_task_config, random=self.random
        )
        config = [
            # Infeasible version of navigate to the task start page
            AllMenuTask(
                instance=self.instance,
                fixed_config=self.navigation_config,
                is_validated=False,
                used_in_level_2=True,
                has_description=True,
            ),
            self.task_class(
                seed=self.seed,
                instance=self.instance,
                fixed_config=infeasible_task_config,
                is_validated=False,
                has_description=True,
                used_in_level_2=self.used_in_level_2,
            ),
        ]

        return config

class InfeasibleNavigateAndCreateUserWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the user list page and create a new user.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new user"
        """


            AllMenuTask(
                instance=self.instance,
                fixed_config=self.navigation_config,
                is_validated=False,
                used_in_level_2=True,
                has_description=True,
            ),
            self.task_class(
                seed=self.seed,
                instance=self.instance,
                fixed_config=infeasible_task_config,
                is_validated=False,
                has_description=True,
                used_in_level_2=self.used_in_level_2,
            ),
        ]

        return config

class InfeasibleNavigateAndCreateUserWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the user list page and create a new user.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new user"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Organization",
                "module": "Users",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateUserTask,
            provide_reason=True,
        )
        self.task_description = "Create a new user with the required information. \n"
        self.short_description = "Create a new user"

class InfeasibleNavigateAndCreateUserTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the user list page and create a new user.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new user"
        """


InfeasibleNavigateAndCreateUserTask

        short_description: str
            A short description of the task to be completed. "Create a new user"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Organization",
                "module": "Users",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateUserTask,
            provide_reason=True,
        )
        self.task_description = "Create a new user with the required information. \n"
        self.short_description = "Create a new user"

class InfeasibleNavigateAndCreateUserTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the user list page and create a new user.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new user"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Organization",
                "module": "Users",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateUserTask,
        )
        self.task_description = "Create a new user with the required information. \n"
        self.short_description = "Create a new user"

class InfeasibleNavigateAndCreateIncidentWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the incident list page and create a new incident.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new incident"
        """


        short_description: str
            A short description of the task to be completed. "Create a new user"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Organization",
                "module": "Users",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateUserTask,
        )
        self.task_description = "Create a new user with the required information. \n"
        self.short_description = "Create a new user"

class InfeasibleNavigateAndCreateIncidentWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the incident list page and create a new incident.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new incident"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Service Desk",
                "module": "Incidents",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateIncidentTask,
            provide_reason=True,
        )
        self.task_description = "Create a new incident with the required information. \n"
        self.short_description = "Create a new incident"

class InfeasibleNavigateAndCreateIncidentTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the incident list page and create a new incident.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new incident"
        """


InfeasibleNavigateAndCreateIncidentTask

        short_description: str
            A short description of the task to be completed. "Create a new incident"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Service Desk",
                "module": "Incidents",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateIncidentTask,
            provide_reason=True,
        )
        self.task_description = "Create a new incident with the required information. \n"
        self.short_description = "Create a new incident"

class InfeasibleNavigateAndCreateIncidentTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the incident list page and create a new incident.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new incident"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Service Desk",
                "module": "Incidents",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateIncidentTask,
        )
        self.task_description = "Create a new incident with the required information. \n"
        self.short_description = "Create a new incident"

class InfeasibleNavigateAndCreateChangeRequestWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the change request list page and create a new change request.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new change request"
        """


        short_description: str
            A short description of the task to be completed. "Create a new incident"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Service Desk",
                "module": "Incidents",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateIncidentTask,
        )
        self.task_description = "Create a new incident with the required information. \n"
        self.short_description = "Create a new incident"

class InfeasibleNavigateAndCreateChangeRequestWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the change request list page and create a new change request.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new change request"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Change",
                "module": "All",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateChangeRequestTask,
            provide_reason=True,
        )
        self.task_description = (
            'Create a new "Normal" change request with the required information. \n'
        )
        self.short_description = 'Create a new "Normal" change request'

class InfeasibleNavigateAndCreateChangeRequestTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the change request list page and create a new change request.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new change request"
        """


        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Change",
                "module": "All",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateChangeRequestTask,
            provide_reason=True,
        )
        self.task_description = (
            'Create a new "Normal" change request with the required information. \n'
        )
        self.short_description = 'Create a new "Normal" change request'

class InfeasibleNavigateAndCreateChangeRequestTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the change request list page and create a new change request.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new change request"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Change",
                "module": "All",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateChangeRequestTask,
        )
        self.task_description = (
            'Create a new "Normal" change request with the required information. \n'
        )
        self.short_description = 'Create a new "Normal" change request'

class InfeasibleNavigateAndCreateProblemWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the problem list page and create a new problem.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new problem"
        """


        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Change",
                "module": "All",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateChangeRequestTask,
        )
        self.task_description = (
            'Create a new "Normal" change request with the required information. \n'
        )
        self.short_description = 'Create a new "Normal" change request'

class InfeasibleNavigateAndCreateProblemWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the problem list page and create a new problem.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new problem"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Problem",
                "module": "All",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateProblemTask,
            provide_reason=True,
        )
        self.task_description = "Create a new problem with the required information. \n"
        self.short_description = "Create a new problem"

class InfeasibleNavigateAndCreateProblemTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the problem list page and create a new problem.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new problem"
        """


InfeasibleNavigateAndCreateProblemTask

        short_description: str
            A short description of the task to be completed. "Create a new problem"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Problem",
                "module": "All",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateProblemTask,
            provide_reason=True,
        )
        self.task_description = "Create a new problem with the required information. \n"
        self.short_description = "Create a new problem"

class InfeasibleNavigateAndCreateProblemTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the problem list page and create a new problem.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new problem"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Problem",
                "module": "All",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateProblemTask,
        )
        self.task_description = "Create a new problem with the required information. \n"
        self.short_description = "Create a new problem"

class InfeasibleNavigateAndCreateHardwareAssetWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the hardware asset list page and create a new hardware asset.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new hardware asset"
        """


        short_description: str
            A short description of the task to be completed. "Create a new problem"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Problem",
                "module": "All",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateProblemTask,
        )
        self.task_description = "Create a new problem with the required information. \n"
        self.short_description = "Create a new problem"

class InfeasibleNavigateAndCreateHardwareAssetWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the hardware asset list page and create a new hardware asset.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new hardware asset"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Asset",
                "module": "Portfolios > Hardware Assets",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateHardwareAssetTask,
            provide_reason=True,
        )
        self.task_description = "Create a new hardware asset with the required information. \n"
        self.short_description = "Create a new hardware asset"

class InfeasibleNavigateAndCreateHardwareAssetTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the hardware asset list page and create a new hardware asset.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new hardware asset"
        """


        short_description: str
            A short description of the task to be completed. "Create a new hardware asset"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Asset",
                "module": "Portfolios > Hardware Assets",
            },
            level=level,
            function=get_infeasible_form_config,
            task_class=CreateHardwareAssetTask,
            provide_reason=True,
        )
        self.task_description = "Create a new hardware asset with the required information. \n"
        self.short_description = "Create a new hardware asset"

class InfeasibleNavigateAndCreateHardwareAssetTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the hardware asset list page and create a new hardware asset.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Create a new hardware asset"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Asset",
                "module": "Portfolios > Hardware Assets",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateHardwareAssetTask,
        )
        self.task_description = "Create a new hardware asset with the required information. \n"
        self.short_description = "Create a new hardware asset"

class InfeasibleNavigateAndOrderStandardLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a standard laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a standard laptop"
        """


        short_description: str
            A short description of the task to be completed. "Create a new hardware asset"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Asset",
                "module": "Portfolios > Hardware Assets",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_form_config,
            task_class=CreateHardwareAssetTask,
        )
        self.task_description = "Create a new hardware asset with the required information. \n"
        self.short_description = "Create a new hardware asset"

class InfeasibleNavigateAndOrderStandardLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a standard laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a standard laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            function=get_infeasible_service_catalog_config,
            task_class=OrderStandardLaptopTask,
            provide_reason=True,
        )
        self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a standard laptop from the service catalog"

class InfeasibleNavigateAndOrderStandardLaptopTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a standard laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a standard laptop"
        """


        short_description: str
            A short description of the task to be completed. "Order a standard laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            function=get_infeasible_service_catalog_config,
            task_class=OrderStandardLaptopTask,
            provide_reason=True,
        )
        self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a standard laptop from the service catalog"

class InfeasibleNavigateAndOrderStandardLaptopTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a standard laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a standard laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_service_catalog_config,
            task_class=OrderStandardLaptopTask,
        )
        self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a standard laptop from the service catalog"

class InfeasibleNavigateAndOrderSalesLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a sales laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a sales laptop"
        """


        short_description: str
            A short description of the task to be completed. "Order a standard laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_service_catalog_config,
            task_class=OrderStandardLaptopTask,
        )
        self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a standard laptop from the service catalog"

class InfeasibleNavigateAndOrderSalesLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a sales laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a sales laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            function=get_infeasible_service_catalog_config,
            task_class=OrderSalesLaptopTask,
            provide_reason=True,
        )
        self.task_description = "Order a sales laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a sales laptop from the service catalog"

class InfeasibleNavigateAndOrderSalesLaptopTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a sales laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a sales laptop"
        """


        short_description: str
            A short description of the task to be completed. "Order a sales laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            function=get_infeasible_service_catalog_config,
            task_class=OrderSalesLaptopTask,
            provide_reason=True,
        )
        self.task_description = "Order a sales laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a sales laptop from the service catalog"

class InfeasibleNavigateAndOrderSalesLaptopTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a sales laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a sales laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_service_catalog_config,
            task_class=OrderSalesLaptopTask,
        )
        self.task_description = "Order a sales laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a sales laptop from the service catalog"

class InfeasibleNavigateAndOrderDeveloperLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a developer laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a developer laptop"
        """


        short_description: str
            A short description of the task to be completed. "Order a sales laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            provide_reason=False,
            function=get_infeasible_service_catalog_config,
            task_class=OrderSalesLaptopTask,
        )
        self.task_description = "Order a sales laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a sales laptop from the service catalog"

class InfeasibleNavigateAndOrderDeveloperLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a developer laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a developer laptop"
        """
        super().__init__(
            seed=seed,
            instance=instance,
            fixed_config=fixed_config,
            navigation_config={
                "application": "Self-Service",
                "module": "Service Catalog",
            },
            level=level,
            function=get_infeasible_service_catalog_config,
            task_class=OrderDeveloperLaptopTask,
            provide_reason=True,
        )
        self.task_description = "Order a developer laptop from the service catalog with the required configuration if applicable. \n"
        self.short_description = "Order a developer laptop from the service catalog"

class InfeasibleNavigateAndOrderDeveloperLaptopTask(InfeasibleNavigateAndDoTask):
    def __init__(
        self,
        seed: int = None,
        instance: SNowInstance = None,
        fixed_config: list[AbstractServiceNowTask] = None,
        level: int = 2,
    ) -> None:
        """
        Infeasible version of navigate to the service catalog item list page and order a developer laptop.

        Attributes:
        -----------
        task_description: str
            The start of the task description to be completed.
        short_description: str
            A short description of the task to be completed. "Order a developer laptop"
        """