browsergym-workarena 0.2.0__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- browsergym/workarena/__init__.py +13 -1
- browsergym/workarena/api/category.py +74 -0
- browsergym/workarena/api/change_request.py +87 -0
- browsergym/workarena/api/computer_asset.py +90 -0
- browsergym/workarena/api/cost_center.py +19 -0
- browsergym/workarena/api/expense_line.py +89 -0
- browsergym/workarena/api/incident.py +45 -0
- browsergym/workarena/api/knowledge.py +29 -0
- browsergym/workarena/api/problem.py +90 -0
- browsergym/workarena/api/report.py +183 -0
- browsergym/workarena/api/requested_items.py +63 -0
- browsergym/workarena/api/user.py +11 -8
- browsergym/workarena/api/utils.py +47 -3
- browsergym/workarena/config.py +21 -1
- browsergym/workarena/data_files/setup_files/forms/expected_incident_form_fields.json +1 -1
- browsergym/workarena/data_files/setup_files/forms/expected_request_item_form_fields.json +1 -0
- browsergym/workarena/data_files/setup_files/knowledge/protocols.json +46 -0
- browsergym/workarena/data_files/setup_files/knowledge/test.html +1 -0
- browsergym/workarena/data_files/setup_files/lists/expected_asset_list_columns.json +2 -24
- browsergym/workarena/data_files/setup_files/lists/expected_change_request_list_columns.json +4 -40
- browsergym/workarena/data_files/setup_files/lists/expected_expense_line_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_hardware_list_columns.json +1 -42
- browsergym/workarena/data_files/setup_files/lists/expected_incident_list_columns.json +2 -18
- browsergym/workarena/data_files/setup_files/lists/expected_problem_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_requested_items_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_service_catalog_list_columns.json +2 -19
- browsergym/workarena/data_files/setup_files/lists/expected_user_list_columns.json +3 -50
- browsergym/workarena/data_files/task_configs/all_menu.json +95 -95
- browsergym/workarena/data_files/task_configs/dashboard_retrieval_minmax_task.json +1 -1
- browsergym/workarena/data_files/task_configs/dashboard_retrieval_value_task.json +1 -1
- browsergym/workarena/data_files/task_configs/filter_service_catalog_item_list_task.json +7986 -7982
- browsergym/workarena/data_files/task_configs/impersonation_users.json +3 -3
- browsergym/workarena/data_files/task_configs/report_retrieval_minmax_task.json +1 -1
- browsergym/workarena/data_files/task_configs/report_retrieval_value_task.json +1 -1
- browsergym/workarena/human_eval/console.js +176 -0
- browsergym/workarena/human_eval/tool.py +366 -0
- browsergym/workarena/install.py +81 -20
- browsergym/workarena/tasks/base.py +55 -20
- browsergym/workarena/tasks/comp_building_block.py +4 -0
- browsergym/workarena/tasks/compositional/__init__.py +76 -0
- browsergym/workarena/tasks/compositional/base.py +364 -0
- browsergym/workarena/tasks/compositional/dash_do_base.py +1366 -0
- browsergym/workarena/tasks/compositional/dash_do_catalog.py +1127 -0
- browsergym/workarena/tasks/compositional/dash_do_catalog_infeasible.py +2047 -0
- browsergym/workarena/tasks/compositional/dash_do_create_incident.py +403 -0
- browsergym/workarena/tasks/compositional/dash_do_create_incident_infeasible.py +278 -0
- browsergym/workarena/tasks/compositional/dash_do_create_problem.py +336 -0
- browsergym/workarena/tasks/compositional/dash_do_create_problem_infeasible.py +235 -0
- browsergym/workarena/tasks/compositional/dash_do_filter.py +1600 -0
- browsergym/workarena/tasks/compositional/dash_do_request_item.py +1315 -0
- browsergym/workarena/tasks/compositional/dash_do_request_item_infeasible.py +693 -0
- browsergym/workarena/tasks/compositional/delete_record.py +341 -0
- browsergym/workarena/tasks/compositional/edit_knowledge_base.py +457 -0
- browsergym/workarena/tasks/compositional/expense_management.py +598 -0
- browsergym/workarena/tasks/compositional/filter_and_do.py +139 -0
- browsergym/workarena/tasks/compositional/find_and_order_item.py +345 -0
- browsergym/workarena/tasks/compositional/manage_change_request_schedule.py +1417 -0
- browsergym/workarena/tasks/compositional/mark_duplicate_problems.py +499 -0
- browsergym/workarena/tasks/compositional/maximize_investment_return.py +1763 -0
- browsergym/workarena/tasks/compositional/navigate_and_do.py +1151 -0
- browsergym/workarena/tasks/compositional/navigate_and_do_infeasible.py +2100 -0
- browsergym/workarena/tasks/compositional/offboard_user.py +207 -0
- browsergym/workarena/tasks/compositional/onboard_user.py +226 -0
- browsergym/workarena/tasks/compositional/update_task.py +145 -0
- browsergym/workarena/tasks/compositional/utils/curriculum.py +215 -0
- browsergym/workarena/tasks/compositional/utils/infeasible_configs.py +151 -0
- browsergym/workarena/tasks/compositional/utils/knapsack.py +192 -0
- browsergym/workarena/tasks/compositional/warranty_check.py +227 -0
- browsergym/workarena/tasks/compositional/work_assignment.py +804 -0
- browsergym/workarena/tasks/compositional/workload_balancing.py +396 -0
- browsergym/workarena/tasks/dashboard.py +188 -8
- browsergym/workarena/tasks/form.py +1024 -232
- browsergym/workarena/tasks/knowledge.py +216 -25
- browsergym/workarena/tasks/list.py +519 -102
- browsergym/workarena/tasks/mark_duplicate_problem.py +171 -0
- browsergym/workarena/tasks/navigation.py +55 -13
- browsergym/workarena/tasks/scripts/extract_all_menu_items.py +9 -2
- browsergym/workarena/tasks/scripts/generate_dashboard_configs.py +6 -5
- browsergym/workarena/tasks/scripts/service_catalog.py +2 -1
- browsergym/workarena/tasks/scripts/validate.py +8 -2
- browsergym/workarena/tasks/send_chat_message.py +90 -0
- browsergym/workarena/tasks/service_catalog.py +94 -26
- browsergym/workarena/tasks/utils/form.py +1 -4
- browsergym/workarena/tasks/utils/private_tasks.py +63 -0
- browsergym/workarena/tasks/utils/utils.py +13 -0
- {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/METADATA +27 -20
- browsergym_workarena-0.3.0.dist-info/RECORD +138 -0
- {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/entry_points.txt +1 -0
- browsergym_workarena-0.2.0.dist-info/RECORD +0 -85
- {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/WHEEL +0 -0
- {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,693 @@
|
|
|
1
|
+
import random
|
|
2
|
+
from playwright.sync_api._generated import Page
|
|
3
|
+
from typing import Tuple
|
|
4
|
+
|
|
5
|
+
from .dash_do_base import DashboardRetrieveIncidentAndDoInfeasibleTask, DashDoFinalTask
|
|
6
|
+
from .utils.infeasible_configs import get_infeasible_form_config
|
|
7
|
+
|
|
8
|
+
from ..base import AbstractServiceNowTask
|
|
9
|
+
from ..dashboard import ReportMinMaxRetrievalTask
|
|
10
|
+
|
|
11
|
+
from ...api.utils import table_api_call, db_delete_from_table
|
|
12
|
+
from ...instance import SNowInstance
|
|
13
|
+
|
|
14
|
+
from browsergym.workarena.tasks.navigation import AllMenuTask
|
|
15
|
+
from browsergym.workarena.tasks.form import CreateItemRequestTask
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class DashboardRetrieveIncidentAndRequestItemInfeasibleTask(
|
|
19
|
+
DashboardRetrieveIncidentAndDoInfeasibleTask
|
|
20
|
+
):
|
|
21
|
+
def __init__(
|
|
22
|
+
self,
|
|
23
|
+
instance: SNowInstance = None,
|
|
24
|
+
seed: int = None,
|
|
25
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
26
|
+
level: int = 2,
|
|
27
|
+
item: str = None,
|
|
28
|
+
question: str = None,
|
|
29
|
+
dashboard_class: AbstractServiceNowTask = None,
|
|
30
|
+
provide_reason: bool = None,
|
|
31
|
+
) -> None:
|
|
32
|
+
"""
|
|
33
|
+
Retrieve the best performing agent and request an item for them.
|
|
34
|
+
Attributes:
|
|
35
|
+
-----------
|
|
36
|
+
task_description: str
|
|
37
|
+
The start of the task description to be completed.
|
|
38
|
+
short_description: str
|
|
39
|
+
A short description of the task to be completed. ""Order an item for the best performing employee from the list"
|
|
40
|
+
"""
|
|
41
|
+
super().__init__(
|
|
42
|
+
instance=instance,
|
|
43
|
+
seed=seed,
|
|
44
|
+
fixed_config=fixed_config,
|
|
45
|
+
level=level,
|
|
46
|
+
question=question,
|
|
47
|
+
dashboard_class=dashboard_class,
|
|
48
|
+
function=get_infeasible_form_config,
|
|
49
|
+
provide_reason=provide_reason,
|
|
50
|
+
)
|
|
51
|
+
if not item:
|
|
52
|
+
raise Exception("No item passed to assign")
|
|
53
|
+
self.item = item
|
|
54
|
+
self.task_description = ""
|
|
55
|
+
self.short_description = (
|
|
56
|
+
f"Order an {self.item} for the best performing employee from the list."
|
|
57
|
+
)
|
|
58
|
+
self.attribute_name = "assigned_to" # Return full name
|
|
59
|
+
self.filter_than = "greater"
|
|
60
|
+
self.prefix = "IRI"
|
|
61
|
+
|
|
62
|
+
def set_compositional_task(self) -> None:
|
|
63
|
+
# The unique name for the user is created once the task is instantiated
|
|
64
|
+
requested_items = table_api_call(
|
|
65
|
+
instance=self.instance,
|
|
66
|
+
table="sc_req_item",
|
|
67
|
+
method="GET",
|
|
68
|
+
)["result"]
|
|
69
|
+
current_requested_items_numbers = [
|
|
70
|
+
requested_item["number"] for requested_item in requested_items
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
agent_full_names, agent_value_sysids = self.get_agent_values(
|
|
74
|
+
self.attribute_name, self.filter_than
|
|
75
|
+
)
|
|
76
|
+
self.agent_value_sysids = agent_value_sysids
|
|
77
|
+
|
|
78
|
+
requested_item_numbers = []
|
|
79
|
+
|
|
80
|
+
for _ in range(len(agent_full_names)):
|
|
81
|
+
requested_item_number = "RITM" + str(random.randint(1000000, 9999999))
|
|
82
|
+
while (
|
|
83
|
+
requested_item_number in current_requested_items_numbers
|
|
84
|
+
or requested_item_number in requested_item_numbers
|
|
85
|
+
):
|
|
86
|
+
requested_item_number = "RITM" + str(random.randint(1000000, 9999999))
|
|
87
|
+
requested_item_numbers.append(requested_item_number)
|
|
88
|
+
|
|
89
|
+
self.requested_item_numbers = requested_item_numbers
|
|
90
|
+
|
|
91
|
+
create_item_request_subtasks = []
|
|
92
|
+
|
|
93
|
+
for agent_full_name, requested_item_number in zip(agent_full_names, requested_item_numbers):
|
|
94
|
+
request_item_config = {
|
|
95
|
+
"fields": {
|
|
96
|
+
"number": "Number",
|
|
97
|
+
"cat_item": "Item",
|
|
98
|
+
"requested_for": "Requested for",
|
|
99
|
+
"quantity": "Quantity",
|
|
100
|
+
},
|
|
101
|
+
"task_fields": ["number", "cat_item", "requested_for", "quantity"],
|
|
102
|
+
"template_record": {
|
|
103
|
+
"number": requested_item_number,
|
|
104
|
+
"cat_item": self.item,
|
|
105
|
+
"requested_for": agent_full_name,
|
|
106
|
+
"quantity": "1",
|
|
107
|
+
},
|
|
108
|
+
"infeasible_task_fields": ["number", "cat_item", "quantity"],
|
|
109
|
+
}
|
|
110
|
+
request_item_config, self.infeasible_reasons = self.function(
|
|
111
|
+
config=request_item_config, random=self.random
|
|
112
|
+
)
|
|
113
|
+
create_item_request_subtask = [
|
|
114
|
+
# Navigate to the item request list
|
|
115
|
+
AllMenuTask(
|
|
116
|
+
instance=self.instance,
|
|
117
|
+
fixed_config={
|
|
118
|
+
"application": "Open Records",
|
|
119
|
+
"module": "Open Records > Items",
|
|
120
|
+
"url": "/now/nav/ui/classic/params/target/sc_req_item_list.do",
|
|
121
|
+
},
|
|
122
|
+
is_validated=False,
|
|
123
|
+
used_in_level_2=True,
|
|
124
|
+
),
|
|
125
|
+
# Create an item request
|
|
126
|
+
CreateItemRequestTask(
|
|
127
|
+
instance=self.instance,
|
|
128
|
+
fixed_config=request_item_config,
|
|
129
|
+
is_validated=False,
|
|
130
|
+
used_in_level_2=True,
|
|
131
|
+
check_record_created=False,
|
|
132
|
+
),
|
|
133
|
+
]
|
|
134
|
+
create_item_request_subtasks += create_item_request_subtask
|
|
135
|
+
|
|
136
|
+
self.compositional_task = create_item_request_subtasks
|
|
137
|
+
|
|
138
|
+
def setup_goal(self, page: Page) -> tuple[str, dict]:
|
|
139
|
+
self.create_report()
|
|
140
|
+
self.set_compositional_task()
|
|
141
|
+
config = self.fixed_config if self.fixed_config else self._get_config()
|
|
142
|
+
if self.level == 3:
|
|
143
|
+
self.task_description = (
|
|
144
|
+
self.task_description
|
|
145
|
+
+ f"Value to retrieve: {self.description_mapping[self.question]} of all the incidents. Comparator: Greather than or equal to the value.\n"
|
|
146
|
+
+ f"Task: Request items with the following information: \n"
|
|
147
|
+
+ f"Item: {self.item}, Quantity: 1.\n"
|
|
148
|
+
+ f"Request the item for each of the agents mentioned above. You can use the item numbers: {self.requested_item_numbers}, one for each request."
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
goal, info = super().setup_goal(page=page, config=config)
|
|
152
|
+
|
|
153
|
+
if self.level == 2:
|
|
154
|
+
goal = (
|
|
155
|
+
self.task_description
|
|
156
|
+
+ f"1. Navigate to the CMDB reports and look for the report with the mentioned hashtag. \n"
|
|
157
|
+
+ f"2. Find the agents with number of incidents greater than or equal to the {self.description_mapping[self.question]} of the incidents assigned to every one. \n"
|
|
158
|
+
+ f"3. Navigate to Open Records > Items. \n"
|
|
159
|
+
+ f"4. Create new item requests with the following field values:- 'Item: {self.item}, Quantity: 1' and assign them to each of the agents. You will create as many item requests as there are agents.\n"
|
|
160
|
+
+ f"You should use the following request numbers for each item request (one for each): {self.requested_item_numbers}."
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
return goal, info
|
|
164
|
+
|
|
165
|
+
def teardown(self) -> None:
|
|
166
|
+
for requested_item_number in self.requested_item_numbers:
|
|
167
|
+
created_item_request_response = table_api_call(
|
|
168
|
+
instance=self.instance,
|
|
169
|
+
table="sc_req_item",
|
|
170
|
+
params={
|
|
171
|
+
"sysparm_query": f"number={requested_item_number}",
|
|
172
|
+
},
|
|
173
|
+
method="GET",
|
|
174
|
+
)["result"]
|
|
175
|
+
if len(created_item_request_response) > 1:
|
|
176
|
+
raise Exception("Multiple request items created")
|
|
177
|
+
if len(created_item_request_response) == 1:
|
|
178
|
+
created_item_request_sysid = created_item_request_response[0]["sys_id"]
|
|
179
|
+
db_delete_from_table(
|
|
180
|
+
instance=self.instance,
|
|
181
|
+
table="sc_req_item",
|
|
182
|
+
sys_id=created_item_request_sysid,
|
|
183
|
+
)
|
|
184
|
+
return super().teardown()
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleWatchInfeasibleWithReasonTask(
|
|
188
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
189
|
+
):
|
|
190
|
+
def __init__(
|
|
191
|
+
self,
|
|
192
|
+
instance: SNowInstance = None,
|
|
193
|
+
seed: int = None,
|
|
194
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
195
|
+
level: int = 2,
|
|
196
|
+
) -> None:
|
|
197
|
+
"""
|
|
198
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
199
|
+
"""
|
|
200
|
+
super().__init__(
|
|
201
|
+
instance=instance,
|
|
202
|
+
seed=seed,
|
|
203
|
+
fixed_config=fixed_config,
|
|
204
|
+
level=level,
|
|
205
|
+
item="Apple Watch",
|
|
206
|
+
question="max",
|
|
207
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
208
|
+
provide_reason=True,
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleWatchInfeasibleTask(
|
|
213
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
214
|
+
):
|
|
215
|
+
def __init__(
|
|
216
|
+
self,
|
|
217
|
+
instance: SNowInstance = None,
|
|
218
|
+
seed: int = None,
|
|
219
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
220
|
+
level: int = 2,
|
|
221
|
+
) -> None:
|
|
222
|
+
"""
|
|
223
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
224
|
+
"""
|
|
225
|
+
super().__init__(
|
|
226
|
+
instance=instance,
|
|
227
|
+
seed=seed,
|
|
228
|
+
fixed_config=fixed_config,
|
|
229
|
+
level=level,
|
|
230
|
+
item="Apple Watch",
|
|
231
|
+
question="max",
|
|
232
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
233
|
+
provide_reason=False,
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleWatch2InfeasibleWithReasonTask(
|
|
238
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
239
|
+
):
|
|
240
|
+
def __init__(
|
|
241
|
+
self,
|
|
242
|
+
instance: SNowInstance = None,
|
|
243
|
+
seed: int = None,
|
|
244
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
245
|
+
level: int = 2,
|
|
246
|
+
) -> None:
|
|
247
|
+
"""
|
|
248
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
249
|
+
"""
|
|
250
|
+
super().__init__(
|
|
251
|
+
instance=instance,
|
|
252
|
+
seed=seed,
|
|
253
|
+
fixed_config=fixed_config,
|
|
254
|
+
level=level,
|
|
255
|
+
item="Apple Watch Series 2",
|
|
256
|
+
question="max",
|
|
257
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
258
|
+
provide_reason=True,
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleWatch2InfeasibleTask(
|
|
263
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
264
|
+
):
|
|
265
|
+
def __init__(
|
|
266
|
+
self,
|
|
267
|
+
instance: SNowInstance = None,
|
|
268
|
+
seed: int = None,
|
|
269
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
270
|
+
level: int = 2,
|
|
271
|
+
) -> None:
|
|
272
|
+
"""
|
|
273
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
274
|
+
"""
|
|
275
|
+
super().__init__(
|
|
276
|
+
instance=instance,
|
|
277
|
+
seed=seed,
|
|
278
|
+
fixed_config=fixed_config,
|
|
279
|
+
level=level,
|
|
280
|
+
item="Apple Watch Series 2",
|
|
281
|
+
question="max",
|
|
282
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
283
|
+
provide_reason=False,
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleIpad3InfeasibleWithReasonTask(
|
|
288
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
289
|
+
):
|
|
290
|
+
def __init__(
|
|
291
|
+
self,
|
|
292
|
+
instance: SNowInstance = None,
|
|
293
|
+
seed: int = None,
|
|
294
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
295
|
+
level: int = 2,
|
|
296
|
+
) -> None:
|
|
297
|
+
"""
|
|
298
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
299
|
+
"""
|
|
300
|
+
super().__init__(
|
|
301
|
+
instance=instance,
|
|
302
|
+
seed=seed,
|
|
303
|
+
fixed_config=fixed_config,
|
|
304
|
+
level=level,
|
|
305
|
+
item="Apple iPad 3",
|
|
306
|
+
question="max",
|
|
307
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
308
|
+
provide_reason=True,
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleIpad3InfeasibleTask(
|
|
313
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
314
|
+
):
|
|
315
|
+
def __init__(
|
|
316
|
+
self,
|
|
317
|
+
instance: SNowInstance = None,
|
|
318
|
+
seed: int = None,
|
|
319
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
320
|
+
level: int = 2,
|
|
321
|
+
) -> None:
|
|
322
|
+
"""
|
|
323
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
324
|
+
"""
|
|
325
|
+
super().__init__(
|
|
326
|
+
instance=instance,
|
|
327
|
+
seed=seed,
|
|
328
|
+
fixed_config=fixed_config,
|
|
329
|
+
level=level,
|
|
330
|
+
item="Apple iPad 3",
|
|
331
|
+
question="max",
|
|
332
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
333
|
+
provide_reason=False,
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleIphone13proInfeasibleWithReasonTask(
|
|
338
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
339
|
+
):
|
|
340
|
+
def __init__(
|
|
341
|
+
self,
|
|
342
|
+
instance: SNowInstance = None,
|
|
343
|
+
seed: int = None,
|
|
344
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
345
|
+
level: int = 2,
|
|
346
|
+
) -> None:
|
|
347
|
+
"""
|
|
348
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
349
|
+
"""
|
|
350
|
+
super().__init__(
|
|
351
|
+
instance=instance,
|
|
352
|
+
seed=seed,
|
|
353
|
+
fixed_config=fixed_config,
|
|
354
|
+
level=level,
|
|
355
|
+
item="Apple iPhone 13 pro",
|
|
356
|
+
question="max",
|
|
357
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
358
|
+
provide_reason=True,
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleIphone13proInfeasibleTask(
|
|
363
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
364
|
+
):
|
|
365
|
+
def __init__(
|
|
366
|
+
self,
|
|
367
|
+
instance: SNowInstance = None,
|
|
368
|
+
seed: int = None,
|
|
369
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
370
|
+
level: int = 2,
|
|
371
|
+
) -> None:
|
|
372
|
+
"""
|
|
373
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
374
|
+
"""
|
|
375
|
+
super().__init__(
|
|
376
|
+
instance=instance,
|
|
377
|
+
seed=seed,
|
|
378
|
+
fixed_config=fixed_config,
|
|
379
|
+
level=level,
|
|
380
|
+
item="Apple iPhone 13 pro",
|
|
381
|
+
question="max",
|
|
382
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
383
|
+
provide_reason=False,
|
|
384
|
+
)
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleIphone13InfeasibleWithReasonTask(
|
|
388
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
389
|
+
):
|
|
390
|
+
def __init__(
|
|
391
|
+
self,
|
|
392
|
+
instance: SNowInstance = None,
|
|
393
|
+
seed: int = None,
|
|
394
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
395
|
+
level: int = 2,
|
|
396
|
+
) -> None:
|
|
397
|
+
"""
|
|
398
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
399
|
+
"""
|
|
400
|
+
super().__init__(
|
|
401
|
+
instance=instance,
|
|
402
|
+
seed=seed,
|
|
403
|
+
fixed_config=fixed_config,
|
|
404
|
+
level=level,
|
|
405
|
+
item="Apple iPhone 13",
|
|
406
|
+
question="max",
|
|
407
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
408
|
+
provide_reason=True,
|
|
409
|
+
)
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
class DashboardRetrieveIncidentAndMaxRequestAppleIphone13InfeasibleTask(
|
|
413
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
414
|
+
):
|
|
415
|
+
def __init__(
|
|
416
|
+
self,
|
|
417
|
+
instance: SNowInstance = None,
|
|
418
|
+
seed: int = None,
|
|
419
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
420
|
+
level: int = 2,
|
|
421
|
+
) -> None:
|
|
422
|
+
"""
|
|
423
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
424
|
+
"""
|
|
425
|
+
super().__init__(
|
|
426
|
+
instance=instance,
|
|
427
|
+
seed=seed,
|
|
428
|
+
fixed_config=fixed_config,
|
|
429
|
+
level=level,
|
|
430
|
+
item="Apple iPhone 13",
|
|
431
|
+
question="max",
|
|
432
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
433
|
+
provide_reason=False,
|
|
434
|
+
)
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
class DashboardRetrieveIncidentAndMaxRequestGalaxyNote20InfeasibleWithReasonTask(
|
|
438
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
439
|
+
):
|
|
440
|
+
def __init__(
|
|
441
|
+
self,
|
|
442
|
+
instance: SNowInstance = None,
|
|
443
|
+
seed: int = None,
|
|
444
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
445
|
+
level: int = 2,
|
|
446
|
+
) -> None:
|
|
447
|
+
"""
|
|
448
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
449
|
+
"""
|
|
450
|
+
super().__init__(
|
|
451
|
+
instance=instance,
|
|
452
|
+
seed=seed,
|
|
453
|
+
fixed_config=fixed_config,
|
|
454
|
+
level=level,
|
|
455
|
+
item="Galaxy Note 20",
|
|
456
|
+
question="max",
|
|
457
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
458
|
+
provide_reason=True,
|
|
459
|
+
)
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
class DashboardRetrieveIncidentAndMaxRequestGalaxyNote20InfeasibleTask(
|
|
463
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
464
|
+
):
|
|
465
|
+
def __init__(
|
|
466
|
+
self,
|
|
467
|
+
instance: SNowInstance = None,
|
|
468
|
+
seed: int = None,
|
|
469
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
470
|
+
level: int = 2,
|
|
471
|
+
) -> None:
|
|
472
|
+
"""
|
|
473
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
474
|
+
"""
|
|
475
|
+
super().__init__(
|
|
476
|
+
instance=instance,
|
|
477
|
+
seed=seed,
|
|
478
|
+
fixed_config=fixed_config,
|
|
479
|
+
level=level,
|
|
480
|
+
item="Galaxy Note 20",
|
|
481
|
+
question="max",
|
|
482
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
483
|
+
provide_reason=False,
|
|
484
|
+
)
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
class DashboardRetrieveIncidentAndMaxRequestGoogleNexus7InfeasibleWithReasonTask(
|
|
488
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
489
|
+
):
|
|
490
|
+
def __init__(
|
|
491
|
+
self,
|
|
492
|
+
instance: SNowInstance = None,
|
|
493
|
+
seed: int = None,
|
|
494
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
495
|
+
level: int = 2,
|
|
496
|
+
) -> None:
|
|
497
|
+
"""
|
|
498
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
499
|
+
"""
|
|
500
|
+
super().__init__(
|
|
501
|
+
instance=instance,
|
|
502
|
+
seed=seed,
|
|
503
|
+
fixed_config=fixed_config,
|
|
504
|
+
level=level,
|
|
505
|
+
item="Google Nexus 7",
|
|
506
|
+
question="max",
|
|
507
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
508
|
+
provide_reason=True,
|
|
509
|
+
)
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
class DashboardRetrieveIncidentAndMaxRequestGoogleNexus7InfeasibleTask(
|
|
513
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
514
|
+
):
|
|
515
|
+
def __init__(
|
|
516
|
+
self,
|
|
517
|
+
instance: SNowInstance = None,
|
|
518
|
+
seed: int = None,
|
|
519
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
520
|
+
level: int = 2,
|
|
521
|
+
) -> None:
|
|
522
|
+
"""
|
|
523
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
524
|
+
"""
|
|
525
|
+
super().__init__(
|
|
526
|
+
instance=instance,
|
|
527
|
+
seed=seed,
|
|
528
|
+
fixed_config=fixed_config,
|
|
529
|
+
level=level,
|
|
530
|
+
item="Google Nexus 7",
|
|
531
|
+
question="max",
|
|
532
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
533
|
+
provide_reason=False,
|
|
534
|
+
)
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
class DashboardRetrieveIncidentAndMaxRequestMicrosoftSurfacePro3InfeasibleWithReasonTask(
|
|
538
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
539
|
+
):
|
|
540
|
+
def __init__(
|
|
541
|
+
self,
|
|
542
|
+
instance: SNowInstance = None,
|
|
543
|
+
seed: int = None,
|
|
544
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
545
|
+
level: int = 2,
|
|
546
|
+
) -> None:
|
|
547
|
+
"""
|
|
548
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
549
|
+
"""
|
|
550
|
+
super().__init__(
|
|
551
|
+
instance=instance,
|
|
552
|
+
seed=seed,
|
|
553
|
+
fixed_config=fixed_config,
|
|
554
|
+
level=level,
|
|
555
|
+
item="Microsoft Surface Pro 3",
|
|
556
|
+
question="max",
|
|
557
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
558
|
+
provide_reason=True,
|
|
559
|
+
)
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
class DashboardRetrieveIncidentAndMaxRequestMicrosoftSurfacePro3InfeasibleTask(
|
|
563
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
564
|
+
):
|
|
565
|
+
def __init__(
|
|
566
|
+
self,
|
|
567
|
+
instance: SNowInstance = None,
|
|
568
|
+
seed: int = None,
|
|
569
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
570
|
+
level: int = 2,
|
|
571
|
+
) -> None:
|
|
572
|
+
"""
|
|
573
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
574
|
+
"""
|
|
575
|
+
super().__init__(
|
|
576
|
+
instance=instance,
|
|
577
|
+
seed=seed,
|
|
578
|
+
fixed_config=fixed_config,
|
|
579
|
+
level=level,
|
|
580
|
+
item="Microsoft Surface Pro 3",
|
|
581
|
+
question="max",
|
|
582
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
583
|
+
provide_reason=False,
|
|
584
|
+
)
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
class DashboardRetrieveIncidentAndMaxRequestPixel4aInfeasibleWithReasonTask(
|
|
588
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
589
|
+
):
|
|
590
|
+
def __init__(
|
|
591
|
+
self,
|
|
592
|
+
instance: SNowInstance = None,
|
|
593
|
+
seed: int = None,
|
|
594
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
595
|
+
level: int = 2,
|
|
596
|
+
) -> None:
|
|
597
|
+
"""
|
|
598
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
599
|
+
"""
|
|
600
|
+
super().__init__(
|
|
601
|
+
instance=instance,
|
|
602
|
+
seed=seed,
|
|
603
|
+
fixed_config=fixed_config,
|
|
604
|
+
level=level,
|
|
605
|
+
item="Pixel 4a",
|
|
606
|
+
question="max",
|
|
607
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
608
|
+
provide_reason=True,
|
|
609
|
+
)
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
class DashboardRetrieveIncidentAndMaxRequestPixel4aInfeasibleTask(
|
|
613
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
614
|
+
):
|
|
615
|
+
def __init__(
|
|
616
|
+
self,
|
|
617
|
+
instance: SNowInstance = None,
|
|
618
|
+
seed: int = None,
|
|
619
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
620
|
+
level: int = 2,
|
|
621
|
+
) -> None:
|
|
622
|
+
"""
|
|
623
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
624
|
+
"""
|
|
625
|
+
super().__init__(
|
|
626
|
+
instance=instance,
|
|
627
|
+
seed=seed,
|
|
628
|
+
fixed_config=fixed_config,
|
|
629
|
+
level=level,
|
|
630
|
+
item="Pixel 4a",
|
|
631
|
+
question="max",
|
|
632
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
633
|
+
provide_reason=False,
|
|
634
|
+
)
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
class DashboardRetrieveIncidentAndMaxRequestWindowsSurfacePro4InfeasibleWithReasonTask(
|
|
638
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
639
|
+
):
|
|
640
|
+
def __init__(
|
|
641
|
+
self,
|
|
642
|
+
instance: SNowInstance = None,
|
|
643
|
+
seed: int = None,
|
|
644
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
645
|
+
level: int = 2,
|
|
646
|
+
) -> None:
|
|
647
|
+
"""
|
|
648
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
649
|
+
"""
|
|
650
|
+
super().__init__(
|
|
651
|
+
instance=instance,
|
|
652
|
+
seed=seed,
|
|
653
|
+
fixed_config=fixed_config,
|
|
654
|
+
level=level,
|
|
655
|
+
item="Windows Surface Pro 4",
|
|
656
|
+
question="max",
|
|
657
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
658
|
+
provide_reason=True,
|
|
659
|
+
)
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
class DashboardRetrieveIncidentAndMaxRequestWindowsSurfacePro4InfeasibleTask(
|
|
663
|
+
DashboardRetrieveIncidentAndRequestItemInfeasibleTask, DashDoFinalTask
|
|
664
|
+
):
|
|
665
|
+
def __init__(
|
|
666
|
+
self,
|
|
667
|
+
instance: SNowInstance = None,
|
|
668
|
+
seed: int = None,
|
|
669
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
670
|
+
level: int = 2,
|
|
671
|
+
) -> None:
|
|
672
|
+
"""
|
|
673
|
+
Retrieve the best performing agent and request an apple watch for them.
|
|
674
|
+
"""
|
|
675
|
+
super().__init__(
|
|
676
|
+
instance=instance,
|
|
677
|
+
seed=seed,
|
|
678
|
+
fixed_config=fixed_config,
|
|
679
|
+
level=level,
|
|
680
|
+
item="Windows Surface Pro 4",
|
|
681
|
+
question="max",
|
|
682
|
+
dashboard_class=ReportMinMaxRetrievalTask,
|
|
683
|
+
provide_reason=False,
|
|
684
|
+
)
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
local_vars = locals().copy()
|
|
688
|
+
|
|
689
|
+
__TASKS__ = [
|
|
690
|
+
var
|
|
691
|
+
for var in local_vars.values()
|
|
692
|
+
if isinstance(var, type) and issubclass(var, DashDoFinalTask) and var is not DashDoFinalTask
|
|
693
|
+
]
|