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.
Files changed (91) hide show
  1. browsergym/workarena/__init__.py +13 -1
  2. browsergym/workarena/api/category.py +74 -0
  3. browsergym/workarena/api/change_request.py +87 -0
  4. browsergym/workarena/api/computer_asset.py +90 -0
  5. browsergym/workarena/api/cost_center.py +19 -0
  6. browsergym/workarena/api/expense_line.py +89 -0
  7. browsergym/workarena/api/incident.py +45 -0
  8. browsergym/workarena/api/knowledge.py +29 -0
  9. browsergym/workarena/api/problem.py +90 -0
  10. browsergym/workarena/api/report.py +183 -0
  11. browsergym/workarena/api/requested_items.py +63 -0
  12. browsergym/workarena/api/user.py +11 -8
  13. browsergym/workarena/api/utils.py +47 -3
  14. browsergym/workarena/config.py +21 -1
  15. browsergym/workarena/data_files/setup_files/forms/expected_incident_form_fields.json +1 -1
  16. browsergym/workarena/data_files/setup_files/forms/expected_request_item_form_fields.json +1 -0
  17. browsergym/workarena/data_files/setup_files/knowledge/protocols.json +46 -0
  18. browsergym/workarena/data_files/setup_files/knowledge/test.html +1 -0
  19. browsergym/workarena/data_files/setup_files/lists/expected_asset_list_columns.json +2 -24
  20. browsergym/workarena/data_files/setup_files/lists/expected_change_request_list_columns.json +4 -40
  21. browsergym/workarena/data_files/setup_files/lists/expected_expense_line_list_columns.json +12 -0
  22. browsergym/workarena/data_files/setup_files/lists/expected_hardware_list_columns.json +1 -42
  23. browsergym/workarena/data_files/setup_files/lists/expected_incident_list_columns.json +2 -18
  24. browsergym/workarena/data_files/setup_files/lists/expected_problem_list_columns.json +12 -0
  25. browsergym/workarena/data_files/setup_files/lists/expected_requested_items_list_columns.json +12 -0
  26. browsergym/workarena/data_files/setup_files/lists/expected_service_catalog_list_columns.json +2 -19
  27. browsergym/workarena/data_files/setup_files/lists/expected_user_list_columns.json +3 -50
  28. browsergym/workarena/data_files/task_configs/all_menu.json +95 -95
  29. browsergym/workarena/data_files/task_configs/dashboard_retrieval_minmax_task.json +1 -1
  30. browsergym/workarena/data_files/task_configs/dashboard_retrieval_value_task.json +1 -1
  31. browsergym/workarena/data_files/task_configs/filter_service_catalog_item_list_task.json +7986 -7982
  32. browsergym/workarena/data_files/task_configs/impersonation_users.json +3 -3
  33. browsergym/workarena/data_files/task_configs/report_retrieval_minmax_task.json +1 -1
  34. browsergym/workarena/data_files/task_configs/report_retrieval_value_task.json +1 -1
  35. browsergym/workarena/human_eval/console.js +176 -0
  36. browsergym/workarena/human_eval/tool.py +366 -0
  37. browsergym/workarena/install.py +81 -20
  38. browsergym/workarena/tasks/base.py +55 -20
  39. browsergym/workarena/tasks/comp_building_block.py +4 -0
  40. browsergym/workarena/tasks/compositional/__init__.py +76 -0
  41. browsergym/workarena/tasks/compositional/base.py +364 -0
  42. browsergym/workarena/tasks/compositional/dash_do_base.py +1366 -0
  43. browsergym/workarena/tasks/compositional/dash_do_catalog.py +1127 -0
  44. browsergym/workarena/tasks/compositional/dash_do_catalog_infeasible.py +2047 -0
  45. browsergym/workarena/tasks/compositional/dash_do_create_incident.py +403 -0
  46. browsergym/workarena/tasks/compositional/dash_do_create_incident_infeasible.py +278 -0
  47. browsergym/workarena/tasks/compositional/dash_do_create_problem.py +336 -0
  48. browsergym/workarena/tasks/compositional/dash_do_create_problem_infeasible.py +235 -0
  49. browsergym/workarena/tasks/compositional/dash_do_filter.py +1600 -0
  50. browsergym/workarena/tasks/compositional/dash_do_request_item.py +1315 -0
  51. browsergym/workarena/tasks/compositional/dash_do_request_item_infeasible.py +693 -0
  52. browsergym/workarena/tasks/compositional/delete_record.py +341 -0
  53. browsergym/workarena/tasks/compositional/edit_knowledge_base.py +457 -0
  54. browsergym/workarena/tasks/compositional/expense_management.py +598 -0
  55. browsergym/workarena/tasks/compositional/filter_and_do.py +139 -0
  56. browsergym/workarena/tasks/compositional/find_and_order_item.py +345 -0
  57. browsergym/workarena/tasks/compositional/manage_change_request_schedule.py +1417 -0
  58. browsergym/workarena/tasks/compositional/mark_duplicate_problems.py +499 -0
  59. browsergym/workarena/tasks/compositional/maximize_investment_return.py +1763 -0
  60. browsergym/workarena/tasks/compositional/navigate_and_do.py +1151 -0
  61. browsergym/workarena/tasks/compositional/navigate_and_do_infeasible.py +2100 -0
  62. browsergym/workarena/tasks/compositional/offboard_user.py +207 -0
  63. browsergym/workarena/tasks/compositional/onboard_user.py +226 -0
  64. browsergym/workarena/tasks/compositional/update_task.py +145 -0
  65. browsergym/workarena/tasks/compositional/utils/curriculum.py +215 -0
  66. browsergym/workarena/tasks/compositional/utils/infeasible_configs.py +151 -0
  67. browsergym/workarena/tasks/compositional/utils/knapsack.py +192 -0
  68. browsergym/workarena/tasks/compositional/warranty_check.py +227 -0
  69. browsergym/workarena/tasks/compositional/work_assignment.py +804 -0
  70. browsergym/workarena/tasks/compositional/workload_balancing.py +396 -0
  71. browsergym/workarena/tasks/dashboard.py +188 -8
  72. browsergym/workarena/tasks/form.py +1024 -232
  73. browsergym/workarena/tasks/knowledge.py +216 -25
  74. browsergym/workarena/tasks/list.py +519 -102
  75. browsergym/workarena/tasks/mark_duplicate_problem.py +171 -0
  76. browsergym/workarena/tasks/navigation.py +55 -13
  77. browsergym/workarena/tasks/scripts/extract_all_menu_items.py +9 -2
  78. browsergym/workarena/tasks/scripts/generate_dashboard_configs.py +6 -5
  79. browsergym/workarena/tasks/scripts/service_catalog.py +2 -1
  80. browsergym/workarena/tasks/scripts/validate.py +8 -2
  81. browsergym/workarena/tasks/send_chat_message.py +90 -0
  82. browsergym/workarena/tasks/service_catalog.py +94 -26
  83. browsergym/workarena/tasks/utils/form.py +1 -4
  84. browsergym/workarena/tasks/utils/private_tasks.py +63 -0
  85. browsergym/workarena/tasks/utils/utils.py +13 -0
  86. {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/METADATA +27 -20
  87. browsergym_workarena-0.3.0.dist-info/RECORD +138 -0
  88. {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/entry_points.txt +1 -0
  89. browsergym_workarena-0.2.0.dist-info/RECORD +0 -85
  90. {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/WHEEL +0 -0
  91. {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,2100 @@
1
+ from faker import Faker
2
+
3
+ fake = Faker()
4
+ from functools import partial
5
+
6
+ from playwright.sync_api._generated import Page
7
+
8
+ from browsergym.workarena.tasks.form import (
9
+ CreateChangeRequestTask,
10
+ CreateHardwareAssetTask,
11
+ CreateIncidentTask,
12
+ CreateProblemTask,
13
+ CreateUserTask,
14
+ )
15
+ from browsergym.workarena.tasks.list import (
16
+ FilterAssetListTask,
17
+ FilterChangeRequestListTask,
18
+ FilterHardwareListTask,
19
+ FilterIncidentListTask,
20
+ FilterServiceCatalogItemListTask,
21
+ FilterUserListTask,
22
+ SortAssetListTask,
23
+ SortChangeRequestListTask,
24
+ SortHardwareListTask,
25
+ SortIncidentListTask,
26
+ SortServiceCatalogItemListTask,
27
+ SortUserListTask,
28
+ )
29
+ from browsergym.workarena.tasks.navigation import AllMenuTask
30
+ from browsergym.workarena.tasks.service_catalog import (
31
+ OrderDeveloperLaptopTask,
32
+ OrderIpadMiniTask,
33
+ OrderIpadProTask,
34
+ OrderSalesLaptopTask,
35
+ OrderStandardLaptopTask,
36
+ OrderAppleWatchTask,
37
+ OrderAppleMacBookPro15Task,
38
+ OrderDevelopmentLaptopPCTask,
39
+ OrderLoanerLaptopTask,
40
+ )
41
+
42
+ from .base import HumanEvalTask, InfeasibleCompositionalTask
43
+ from .utils.infeasible_configs import (
44
+ get_infeasible_form_config,
45
+ get_infeasible_service_catalog_config,
46
+ get_infeasible_filter_config,
47
+ get_infeasible_sort_config,
48
+ )
49
+
50
+ from ..base import AbstractServiceNowTask
51
+
52
+ from ...instance import SNowInstance
53
+
54
+
55
+ class InfeasibleNavigateAndDoTask(InfeasibleCompositionalTask, HumanEvalTask):
56
+ def __init__(
57
+ self,
58
+ seed: int = None,
59
+ instance: SNowInstance = None,
60
+ fixed_config: list[AbstractServiceNowTask] = None,
61
+ function: callable = None,
62
+ provide_reason: bool = True,
63
+ navigation_config: dict = None,
64
+ level: int = 2,
65
+ task_class: AbstractServiceNowTask = None,
66
+ ) -> None:
67
+ """
68
+ Generic task to navigate to a specific page and perform a task.
69
+
70
+ Parameters:
71
+ -----------
72
+ instance: SNowInstance
73
+ The ServiceNow instance to run the task on.
74
+ fixed_config: list[AbstractServiceNowTask]
75
+ A list of tuples, each containing a subtask
76
+ function: callable
77
+ Function that takes a valid config and renders it infeasible.
78
+ provide_reason: bool
79
+ Whether to provide a reason for the infeasibility. If False, the list of reasons will be [""] so that
80
+ any infeasibility can be detected by the absence of a reason.
81
+ navigation_config: dict
82
+ Configuration to use for the navigation task. Contains the application and the module; the URL is not necessary as the
83
+ nav step is not validated.
84
+ level: int
85
+ 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.
86
+ L3 will start in a private task page describing the information needed to complete the task and the related company protocol
87
+ to complete it.
88
+ task: AbstractServiceNowTask
89
+ The task to perform after navigating to the page.
90
+
91
+ Attributes:
92
+ -----------
93
+ task_description: str
94
+ The start of the task description to be completed. Provided by the child class.
95
+ short_description: str
96
+ A short description of the task to be completed. "Create a new user". Provided by the child class.
97
+ """
98
+ assert level in [2, 3], "Level must be either 2 or 3"
99
+ self.level = level
100
+ super().__init__(
101
+ seed=seed,
102
+ instance=instance,
103
+ fixed_config=fixed_config,
104
+ level=level,
105
+ )
106
+ self.used_in_level_2 = self.level == 2
107
+ self.task_class = task_class
108
+ self.task_description = None
109
+ self.short_description = None
110
+ # Get the navigation configuration; there is only one configuration for each application and module combo
111
+ self.navigation_config = navigation_config
112
+ self.function = partial(function, provide_reason=provide_reason)
113
+
114
+ def setup_goal(self, page: Page) -> tuple[str, dict]:
115
+ config = self.fixed_config if self.fixed_config else self._get_config()
116
+ goal, info = super().setup_goal(page=page, config=config)
117
+
118
+ return goal, info
119
+
120
+ def _get_config(self) -> list[AbstractServiceNowTask]:
121
+ valid_task_config = self.random.choice(self.task_class.all_configs())
122
+ infeasible_task_config, self.infeasible_reasons = self.function(
123
+ config=valid_task_config, random=self.random
124
+ )
125
+ config = [
126
+ # Infeasible version of navigate to the task start page
127
+ AllMenuTask(
128
+ instance=self.instance,
129
+ fixed_config=self.navigation_config,
130
+ is_validated=False,
131
+ used_in_level_2=True,
132
+ has_description=True,
133
+ ),
134
+ self.task_class(
135
+ seed=self.seed,
136
+ instance=self.instance,
137
+ fixed_config=infeasible_task_config,
138
+ is_validated=False,
139
+ has_description=True,
140
+ used_in_level_2=self.used_in_level_2,
141
+ ),
142
+ ]
143
+
144
+ return config
145
+
146
+
147
+ class InfeasibleNavigateAndCreateUserWithReasonTask(InfeasibleNavigateAndDoTask):
148
+ def __init__(
149
+ self,
150
+ seed: int = None,
151
+ instance: SNowInstance = None,
152
+ fixed_config: list[AbstractServiceNowTask] = None,
153
+ level: int = 2,
154
+ ) -> None:
155
+ """
156
+ Infeasible version of navigate to the user list page and create a new user.
157
+
158
+ Attributes:
159
+ -----------
160
+ task_description: str
161
+ The start of the task description to be completed.
162
+ short_description: str
163
+ A short description of the task to be completed. "Create a new user"
164
+ """
165
+ super().__init__(
166
+ seed=seed,
167
+ instance=instance,
168
+ fixed_config=fixed_config,
169
+ navigation_config={
170
+ "application": "Organization",
171
+ "module": "Users",
172
+ },
173
+ level=level,
174
+ function=get_infeasible_form_config,
175
+ task_class=CreateUserTask,
176
+ provide_reason=True,
177
+ )
178
+ self.task_description = "Create a new user with the required information. \n"
179
+ self.short_description = "Create a new user"
180
+
181
+
182
+ class InfeasibleNavigateAndCreateUserTask(InfeasibleNavigateAndDoTask):
183
+ def __init__(
184
+ self,
185
+ seed: int = None,
186
+ instance: SNowInstance = None,
187
+ fixed_config: list[AbstractServiceNowTask] = None,
188
+ level: int = 2,
189
+ ) -> None:
190
+ """
191
+ Infeasible version of navigate to the user list page and create a new user.
192
+
193
+ Attributes:
194
+ -----------
195
+ task_description: str
196
+ The start of the task description to be completed.
197
+ short_description: str
198
+ A short description of the task to be completed. "Create a new user"
199
+ """
200
+ super().__init__(
201
+ seed=seed,
202
+ instance=instance,
203
+ fixed_config=fixed_config,
204
+ navigation_config={
205
+ "application": "Organization",
206
+ "module": "Users",
207
+ },
208
+ level=level,
209
+ provide_reason=False,
210
+ function=get_infeasible_form_config,
211
+ task_class=CreateUserTask,
212
+ )
213
+ self.task_description = "Create a new user with the required information. \n"
214
+ self.short_description = "Create a new user"
215
+
216
+
217
+ class InfeasibleNavigateAndCreateIncidentWithReasonTask(InfeasibleNavigateAndDoTask):
218
+ def __init__(
219
+ self,
220
+ seed: int = None,
221
+ instance: SNowInstance = None,
222
+ fixed_config: list[AbstractServiceNowTask] = None,
223
+ level: int = 2,
224
+ ) -> None:
225
+ """
226
+ Infeasible version of navigate to the incident list page and create a new incident.
227
+
228
+ Attributes:
229
+ -----------
230
+ task_description: str
231
+ The start of the task description to be completed.
232
+ short_description: str
233
+ A short description of the task to be completed. "Create a new incident"
234
+ """
235
+ super().__init__(
236
+ seed=seed,
237
+ instance=instance,
238
+ fixed_config=fixed_config,
239
+ navigation_config={
240
+ "application": "Service Desk",
241
+ "module": "Incidents",
242
+ },
243
+ level=level,
244
+ function=get_infeasible_form_config,
245
+ task_class=CreateIncidentTask,
246
+ provide_reason=True,
247
+ )
248
+ self.task_description = "Create a new incident with the required information. \n"
249
+ self.short_description = "Create a new incident"
250
+
251
+
252
+ class InfeasibleNavigateAndCreateIncidentTask(InfeasibleNavigateAndDoTask):
253
+ def __init__(
254
+ self,
255
+ seed: int = None,
256
+ instance: SNowInstance = None,
257
+ fixed_config: list[AbstractServiceNowTask] = None,
258
+ level: int = 2,
259
+ ) -> None:
260
+ """
261
+ Infeasible version of navigate to the incident list page and create a new incident.
262
+
263
+ Attributes:
264
+ -----------
265
+ task_description: str
266
+ The start of the task description to be completed.
267
+ short_description: str
268
+ A short description of the task to be completed. "Create a new incident"
269
+ """
270
+ super().__init__(
271
+ seed=seed,
272
+ instance=instance,
273
+ fixed_config=fixed_config,
274
+ navigation_config={
275
+ "application": "Service Desk",
276
+ "module": "Incidents",
277
+ },
278
+ level=level,
279
+ provide_reason=False,
280
+ function=get_infeasible_form_config,
281
+ task_class=CreateIncidentTask,
282
+ )
283
+ self.task_description = "Create a new incident with the required information. \n"
284
+ self.short_description = "Create a new incident"
285
+
286
+
287
+ class InfeasibleNavigateAndCreateChangeRequestWithReasonTask(InfeasibleNavigateAndDoTask):
288
+ def __init__(
289
+ self,
290
+ seed: int = None,
291
+ instance: SNowInstance = None,
292
+ fixed_config: list[AbstractServiceNowTask] = None,
293
+ level: int = 2,
294
+ ) -> None:
295
+ """
296
+ Infeasible version of navigate to the change request list page and create a new change request.
297
+
298
+ Attributes:
299
+ -----------
300
+ task_description: str
301
+ The start of the task description to be completed.
302
+ short_description: str
303
+ A short description of the task to be completed. "Create a new change request"
304
+ """
305
+ super().__init__(
306
+ seed=seed,
307
+ instance=instance,
308
+ fixed_config=fixed_config,
309
+ navigation_config={
310
+ "application": "Change",
311
+ "module": "All",
312
+ },
313
+ level=level,
314
+ function=get_infeasible_form_config,
315
+ task_class=CreateChangeRequestTask,
316
+ provide_reason=True,
317
+ )
318
+ self.task_description = (
319
+ 'Create a new "Normal" change request with the required information. \n'
320
+ )
321
+ self.short_description = 'Create a new "Normal" change request'
322
+
323
+
324
+ class InfeasibleNavigateAndCreateChangeRequestTask(InfeasibleNavigateAndDoTask):
325
+ def __init__(
326
+ self,
327
+ seed: int = None,
328
+ instance: SNowInstance = None,
329
+ fixed_config: list[AbstractServiceNowTask] = None,
330
+ level: int = 2,
331
+ ) -> None:
332
+ """
333
+ Infeasible version of navigate to the change request list page and create a new change request.
334
+
335
+ Attributes:
336
+ -----------
337
+ task_description: str
338
+ The start of the task description to be completed.
339
+ short_description: str
340
+ A short description of the task to be completed. "Create a new change request"
341
+ """
342
+ super().__init__(
343
+ seed=seed,
344
+ instance=instance,
345
+ fixed_config=fixed_config,
346
+ navigation_config={
347
+ "application": "Change",
348
+ "module": "All",
349
+ },
350
+ level=level,
351
+ provide_reason=False,
352
+ function=get_infeasible_form_config,
353
+ task_class=CreateChangeRequestTask,
354
+ )
355
+ self.task_description = (
356
+ 'Create a new "Normal" change request with the required information. \n'
357
+ )
358
+ self.short_description = 'Create a new "Normal" change request'
359
+
360
+
361
+ class InfeasibleNavigateAndCreateProblemWithReasonTask(InfeasibleNavigateAndDoTask):
362
+ def __init__(
363
+ self,
364
+ seed: int = None,
365
+ instance: SNowInstance = None,
366
+ fixed_config: list[AbstractServiceNowTask] = None,
367
+ level: int = 2,
368
+ ) -> None:
369
+ """
370
+ Infeasible version of navigate to the problem list page and create a new problem.
371
+
372
+ Attributes:
373
+ -----------
374
+ task_description: str
375
+ The start of the task description to be completed.
376
+ short_description: str
377
+ A short description of the task to be completed. "Create a new problem"
378
+ """
379
+ super().__init__(
380
+ seed=seed,
381
+ instance=instance,
382
+ fixed_config=fixed_config,
383
+ navigation_config={
384
+ "application": "Problem",
385
+ "module": "All",
386
+ },
387
+ level=level,
388
+ function=get_infeasible_form_config,
389
+ task_class=CreateProblemTask,
390
+ provide_reason=True,
391
+ )
392
+ self.task_description = "Create a new problem with the required information. \n"
393
+ self.short_description = "Create a new problem"
394
+
395
+
396
+ class InfeasibleNavigateAndCreateProblemTask(InfeasibleNavigateAndDoTask):
397
+ def __init__(
398
+ self,
399
+ seed: int = None,
400
+ instance: SNowInstance = None,
401
+ fixed_config: list[AbstractServiceNowTask] = None,
402
+ level: int = 2,
403
+ ) -> None:
404
+ """
405
+ Infeasible version of navigate to the problem list page and create a new problem.
406
+
407
+ Attributes:
408
+ -----------
409
+ task_description: str
410
+ The start of the task description to be completed.
411
+ short_description: str
412
+ A short description of the task to be completed. "Create a new problem"
413
+ """
414
+ super().__init__(
415
+ seed=seed,
416
+ instance=instance,
417
+ fixed_config=fixed_config,
418
+ navigation_config={
419
+ "application": "Problem",
420
+ "module": "All",
421
+ },
422
+ level=level,
423
+ provide_reason=False,
424
+ function=get_infeasible_form_config,
425
+ task_class=CreateProblemTask,
426
+ )
427
+ self.task_description = "Create a new problem with the required information. \n"
428
+ self.short_description = "Create a new problem"
429
+
430
+
431
+ class InfeasibleNavigateAndCreateHardwareAssetWithReasonTask(InfeasibleNavigateAndDoTask):
432
+ def __init__(
433
+ self,
434
+ seed: int = None,
435
+ instance: SNowInstance = None,
436
+ fixed_config: list[AbstractServiceNowTask] = None,
437
+ level: int = 2,
438
+ ) -> None:
439
+ """
440
+ Infeasible version of navigate to the hardware asset list page and create a new hardware asset.
441
+
442
+ Attributes:
443
+ -----------
444
+ task_description: str
445
+ The start of the task description to be completed.
446
+ short_description: str
447
+ A short description of the task to be completed. "Create a new hardware asset"
448
+ """
449
+ super().__init__(
450
+ seed=seed,
451
+ instance=instance,
452
+ fixed_config=fixed_config,
453
+ navigation_config={
454
+ "application": "Asset",
455
+ "module": "Portfolios > Hardware Assets",
456
+ },
457
+ level=level,
458
+ function=get_infeasible_form_config,
459
+ task_class=CreateHardwareAssetTask,
460
+ provide_reason=True,
461
+ )
462
+ self.task_description = "Create a new hardware asset with the required information. \n"
463
+ self.short_description = "Create a new hardware asset"
464
+
465
+
466
+ class InfeasibleNavigateAndCreateHardwareAssetTask(InfeasibleNavigateAndDoTask):
467
+ def __init__(
468
+ self,
469
+ seed: int = None,
470
+ instance: SNowInstance = None,
471
+ fixed_config: list[AbstractServiceNowTask] = None,
472
+ level: int = 2,
473
+ ) -> None:
474
+ """
475
+ Infeasible version of navigate to the hardware asset list page and create a new hardware asset.
476
+
477
+ Attributes:
478
+ -----------
479
+ task_description: str
480
+ The start of the task description to be completed.
481
+ short_description: str
482
+ A short description of the task to be completed. "Create a new hardware asset"
483
+ """
484
+ super().__init__(
485
+ seed=seed,
486
+ instance=instance,
487
+ fixed_config=fixed_config,
488
+ navigation_config={
489
+ "application": "Asset",
490
+ "module": "Portfolios > Hardware Assets",
491
+ },
492
+ level=level,
493
+ provide_reason=False,
494
+ function=get_infeasible_form_config,
495
+ task_class=CreateHardwareAssetTask,
496
+ )
497
+ self.task_description = "Create a new hardware asset with the required information. \n"
498
+ self.short_description = "Create a new hardware asset"
499
+
500
+
501
+ class InfeasibleNavigateAndOrderStandardLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
502
+ def __init__(
503
+ self,
504
+ seed: int = None,
505
+ instance: SNowInstance = None,
506
+ fixed_config: list[AbstractServiceNowTask] = None,
507
+ level: int = 2,
508
+ ) -> None:
509
+ """
510
+ Infeasible version of navigate to the service catalog item list page and order a standard laptop.
511
+
512
+ Attributes:
513
+ -----------
514
+ task_description: str
515
+ The start of the task description to be completed.
516
+ short_description: str
517
+ A short description of the task to be completed. "Order a standard laptop"
518
+ """
519
+ super().__init__(
520
+ seed=seed,
521
+ instance=instance,
522
+ fixed_config=fixed_config,
523
+ navigation_config={
524
+ "application": "Self-Service",
525
+ "module": "Service Catalog",
526
+ },
527
+ level=level,
528
+ function=get_infeasible_service_catalog_config,
529
+ task_class=OrderStandardLaptopTask,
530
+ provide_reason=True,
531
+ )
532
+ self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
533
+ self.short_description = "Order a standard laptop from the service catalog"
534
+
535
+
536
+ class InfeasibleNavigateAndOrderStandardLaptopTask(InfeasibleNavigateAndDoTask):
537
+ def __init__(
538
+ self,
539
+ seed: int = None,
540
+ instance: SNowInstance = None,
541
+ fixed_config: list[AbstractServiceNowTask] = None,
542
+ level: int = 2,
543
+ ) -> None:
544
+ """
545
+ Infeasible version of navigate to the service catalog item list page and order a standard laptop.
546
+
547
+ Attributes:
548
+ -----------
549
+ task_description: str
550
+ The start of the task description to be completed.
551
+ short_description: str
552
+ A short description of the task to be completed. "Order a standard laptop"
553
+ """
554
+ super().__init__(
555
+ seed=seed,
556
+ instance=instance,
557
+ fixed_config=fixed_config,
558
+ navigation_config={
559
+ "application": "Self-Service",
560
+ "module": "Service Catalog",
561
+ },
562
+ level=level,
563
+ provide_reason=False,
564
+ function=get_infeasible_service_catalog_config,
565
+ task_class=OrderStandardLaptopTask,
566
+ )
567
+ self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
568
+ self.short_description = "Order a standard laptop from the service catalog"
569
+
570
+
571
+ class InfeasibleNavigateAndOrderSalesLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
572
+ def __init__(
573
+ self,
574
+ seed: int = None,
575
+ instance: SNowInstance = None,
576
+ fixed_config: list[AbstractServiceNowTask] = None,
577
+ level: int = 2,
578
+ ) -> None:
579
+ """
580
+ Infeasible version of navigate to the service catalog item list page and order a sales laptop.
581
+
582
+ Attributes:
583
+ -----------
584
+ task_description: str
585
+ The start of the task description to be completed.
586
+ short_description: str
587
+ A short description of the task to be completed. "Order a sales laptop"
588
+ """
589
+ super().__init__(
590
+ seed=seed,
591
+ instance=instance,
592
+ fixed_config=fixed_config,
593
+ navigation_config={
594
+ "application": "Self-Service",
595
+ "module": "Service Catalog",
596
+ },
597
+ level=level,
598
+ function=get_infeasible_service_catalog_config,
599
+ task_class=OrderSalesLaptopTask,
600
+ provide_reason=True,
601
+ )
602
+ self.task_description = "Order a sales laptop from the service catalog with the required configuration if applicable. \n"
603
+ self.short_description = "Order a sales laptop from the service catalog"
604
+
605
+
606
+ class InfeasibleNavigateAndOrderSalesLaptopTask(InfeasibleNavigateAndDoTask):
607
+ def __init__(
608
+ self,
609
+ seed: int = None,
610
+ instance: SNowInstance = None,
611
+ fixed_config: list[AbstractServiceNowTask] = None,
612
+ level: int = 2,
613
+ ) -> None:
614
+ """
615
+ Infeasible version of navigate to the service catalog item list page and order a sales laptop.
616
+
617
+ Attributes:
618
+ -----------
619
+ task_description: str
620
+ The start of the task description to be completed.
621
+ short_description: str
622
+ A short description of the task to be completed. "Order a sales laptop"
623
+ """
624
+ super().__init__(
625
+ seed=seed,
626
+ instance=instance,
627
+ fixed_config=fixed_config,
628
+ navigation_config={
629
+ "application": "Self-Service",
630
+ "module": "Service Catalog",
631
+ },
632
+ level=level,
633
+ provide_reason=False,
634
+ function=get_infeasible_service_catalog_config,
635
+ task_class=OrderSalesLaptopTask,
636
+ )
637
+ self.task_description = "Order a sales laptop from the service catalog with the required configuration if applicable. \n"
638
+ self.short_description = "Order a sales laptop from the service catalog"
639
+
640
+
641
+ class InfeasibleNavigateAndOrderDeveloperLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
642
+ def __init__(
643
+ self,
644
+ seed: int = None,
645
+ instance: SNowInstance = None,
646
+ fixed_config: list[AbstractServiceNowTask] = None,
647
+ level: int = 2,
648
+ ) -> None:
649
+ """
650
+ Infeasible version of navigate to the service catalog item list page and order a developer laptop.
651
+
652
+ Attributes:
653
+ -----------
654
+ task_description: str
655
+ The start of the task description to be completed.
656
+ short_description: str
657
+ A short description of the task to be completed. "Order a developer laptop"
658
+ """
659
+ super().__init__(
660
+ seed=seed,
661
+ instance=instance,
662
+ fixed_config=fixed_config,
663
+ navigation_config={
664
+ "application": "Self-Service",
665
+ "module": "Service Catalog",
666
+ },
667
+ level=level,
668
+ function=get_infeasible_service_catalog_config,
669
+ task_class=OrderDeveloperLaptopTask,
670
+ provide_reason=True,
671
+ )
672
+ self.task_description = "Order a developer laptop from the service catalog with the required configuration if applicable. \n"
673
+ self.short_description = "Order a developer laptop from the service catalog"
674
+
675
+
676
+ class InfeasibleNavigateAndOrderDeveloperLaptopTask(InfeasibleNavigateAndDoTask):
677
+ def __init__(
678
+ self,
679
+ seed: int = None,
680
+ instance: SNowInstance = None,
681
+ fixed_config: list[AbstractServiceNowTask] = None,
682
+ level: int = 2,
683
+ ) -> None:
684
+ """
685
+ Infeasible version of navigate to the service catalog item list page and order a developer laptop.
686
+
687
+ Attributes:
688
+ -----------
689
+ task_description: str
690
+ The start of the task description to be completed.
691
+ short_description: str
692
+ A short description of the task to be completed. "Order a developer laptop"
693
+ """
694
+ super().__init__(
695
+ seed=seed,
696
+ instance=instance,
697
+ fixed_config=fixed_config,
698
+ navigation_config={
699
+ "application": "Self-Service",
700
+ "module": "Service Catalog",
701
+ },
702
+ level=level,
703
+ provide_reason=False,
704
+ function=get_infeasible_service_catalog_config,
705
+ task_class=OrderDeveloperLaptopTask,
706
+ )
707
+ self.task_description = "Order a developer laptop from the service catalog with the required configuration if applicable. \n"
708
+ self.short_description = "Order a developer laptop from the service catalog"
709
+
710
+
711
+ class InfeasibleNavigateAndOrderIpadProWithReasonTask(InfeasibleNavigateAndDoTask):
712
+ def __init__(
713
+ self,
714
+ seed: int = None,
715
+ instance: SNowInstance = None,
716
+ fixed_config: list[AbstractServiceNowTask] = None,
717
+ level: int = 2,
718
+ ) -> None:
719
+ """
720
+ Infeasible version of navigate to the service catalog item list page and order an iPad Pro.
721
+
722
+ Attributes:
723
+ -----------
724
+ task_description: str
725
+ The start of the task description to be completed.
726
+ short_description: str
727
+ A short description of the task to be completed. "Order an iPad Pro"
728
+ """
729
+ super().__init__(
730
+ seed=seed,
731
+ instance=instance,
732
+ fixed_config=fixed_config,
733
+ navigation_config={
734
+ "application": "Self-Service",
735
+ "module": "Service Catalog",
736
+ },
737
+ level=level,
738
+ function=get_infeasible_service_catalog_config,
739
+ task_class=OrderIpadProTask,
740
+ provide_reason=True,
741
+ )
742
+ self.task_description = "Order an iPad Pro from the service catalog with the required configuration if applicable. \n"
743
+ self.short_description = "Order an iPad Pro from the service catalog"
744
+
745
+
746
+ class InfeasibleNavigateAndOrderIpadProTask(InfeasibleNavigateAndDoTask):
747
+ def __init__(
748
+ self,
749
+ seed: int = None,
750
+ instance: SNowInstance = None,
751
+ fixed_config: list[AbstractServiceNowTask] = None,
752
+ level: int = 2,
753
+ ) -> None:
754
+ """
755
+ Infeasible version of navigate to the service catalog item list page and order an iPad Pro.
756
+
757
+ Attributes:
758
+ -----------
759
+ task_description: str
760
+ The start of the task description to be completed.
761
+ short_description: str
762
+ A short description of the task to be completed. "Order an iPad Pro"
763
+ """
764
+ super().__init__(
765
+ seed=seed,
766
+ instance=instance,
767
+ fixed_config=fixed_config,
768
+ navigation_config={
769
+ "application": "Self-Service",
770
+ "module": "Service Catalog",
771
+ },
772
+ level=level,
773
+ provide_reason=False,
774
+ function=get_infeasible_service_catalog_config,
775
+ task_class=OrderIpadProTask,
776
+ )
777
+ self.task_description = "Order an iPad Pro from the service catalog with the required configuration if applicable. \n"
778
+ self.short_description = "Order an iPad Pro from the service catalog"
779
+
780
+
781
+ class InfeasibleNavigateAndOrderIpadMiniWithReasonTask(InfeasibleNavigateAndDoTask):
782
+ def __init__(
783
+ self,
784
+ seed: int = None,
785
+ instance: SNowInstance = None,
786
+ fixed_config: list[AbstractServiceNowTask] = None,
787
+ level: int = 2,
788
+ ) -> None:
789
+ """
790
+ Infeasible version of navigate to the service catalog item list page and order an iPad Mini.
791
+
792
+ Attributes:
793
+ -----------
794
+ task_description: str
795
+ The start of the task description to be completed.
796
+ short_description: str
797
+ A short description of the task to be completed. "Order an iPad Mini"
798
+ """
799
+ super().__init__(
800
+ seed=seed,
801
+ instance=instance,
802
+ fixed_config=fixed_config,
803
+ navigation_config={
804
+ "application": "Self-Service",
805
+ "module": "Service Catalog",
806
+ },
807
+ level=level,
808
+ function=get_infeasible_service_catalog_config,
809
+ task_class=OrderIpadMiniTask,
810
+ provide_reason=True,
811
+ )
812
+ self.task_description = "Order an iPad Mini from the service catalog with the required configuration if applicable. \n"
813
+ self.short_description = "Order an iPad Mini from the service catalog"
814
+
815
+
816
+ class InfeasibleNavigateAndOrderIpadMiniTask(InfeasibleNavigateAndDoTask):
817
+ def __init__(
818
+ self,
819
+ seed: int = None,
820
+ instance: SNowInstance = None,
821
+ fixed_config: list[AbstractServiceNowTask] = None,
822
+ level: int = 2,
823
+ ) -> None:
824
+ """
825
+ Infeasible version of navigate to the service catalog item list page and order an iPad Mini.
826
+
827
+ Attributes:
828
+ -----------
829
+ task_description: str
830
+ The start of the task description to be completed.
831
+ short_description: str
832
+ A short description of the task to be completed. "Order an iPad Mini"
833
+ """
834
+ super().__init__(
835
+ seed=seed,
836
+ instance=instance,
837
+ fixed_config=fixed_config,
838
+ navigation_config={
839
+ "application": "Self-Service",
840
+ "module": "Service Catalog",
841
+ },
842
+ level=level,
843
+ provide_reason=False,
844
+ function=get_infeasible_service_catalog_config,
845
+ task_class=OrderIpadMiniTask,
846
+ )
847
+ self.task_description = "Order an iPad Mini from the service catalog with the required configuration if applicable. \n"
848
+ self.short_description = "Order an iPad Mini from the service catalog"
849
+
850
+
851
+ class InfeasibleNavigateAndOrderAppleWatchWithReasonTask(InfeasibleNavigateAndDoTask):
852
+ def __init__(
853
+ self,
854
+ seed: int = None,
855
+ instance: SNowInstance = None,
856
+ fixed_config: list[AbstractServiceNowTask] = None,
857
+ level: int = 2,
858
+ ) -> None:
859
+ """
860
+ Infeasible version of navigate to the service catalog item list page and order an Apple Watch.
861
+
862
+ Attributes:
863
+ -----------
864
+ task_description: str
865
+ The start of the task description to be completed.
866
+ short_description: str
867
+ A short description of the task to be completed. "Order an Apple Watch"
868
+ """
869
+ super().__init__(
870
+ seed=seed,
871
+ instance=instance,
872
+ fixed_config=fixed_config,
873
+ navigation_config={
874
+ "application": "Self-Service",
875
+ "module": "Service Catalog",
876
+ },
877
+ level=level,
878
+ function=get_infeasible_service_catalog_config,
879
+ task_class=OrderAppleWatchTask,
880
+ provide_reason=True,
881
+ )
882
+ self.task_description = "Order an Apple Watch from the service catalog with the required configuration if applicable. \n"
883
+ self.short_description = "Order an Apple Watch from the service catalog"
884
+
885
+
886
+ class InfeasibleNavigateAndOrderAppleWatchTask(InfeasibleNavigateAndDoTask):
887
+ def __init__(
888
+ self,
889
+ seed: int = None,
890
+ instance: SNowInstance = None,
891
+ fixed_config: list[AbstractServiceNowTask] = None,
892
+ level: int = 2,
893
+ ) -> None:
894
+ """
895
+ Infeasible version of navigate to the service catalog item list page and order an Apple Watch.
896
+
897
+ Attributes:
898
+ -----------
899
+ task_description: str
900
+ The start of the task description to be completed.
901
+ short_description: str
902
+ A short description of the task to be completed. "Order an Apple Watch"
903
+ """
904
+ super().__init__(
905
+ seed=seed,
906
+ instance=instance,
907
+ fixed_config=fixed_config,
908
+ navigation_config={
909
+ "application": "Self-Service",
910
+ "module": "Service Catalog",
911
+ },
912
+ level=level,
913
+ provide_reason=False,
914
+ function=get_infeasible_service_catalog_config,
915
+ task_class=OrderAppleWatchTask,
916
+ )
917
+ self.task_description = "Order an Apple Watch from the service catalog with the required configuration if applicable. \n"
918
+ self.short_description = "Order an Apple Watch from the service catalog"
919
+
920
+
921
+ class InfeasibleNavigateAndOrderAppleMacBookPro15WithReasonTask(InfeasibleNavigateAndDoTask):
922
+ def __init__(
923
+ self,
924
+ seed: int = None,
925
+ instance: SNowInstance = None,
926
+ fixed_config: list[AbstractServiceNowTask] = None,
927
+ level: int = 2,
928
+ ) -> None:
929
+ """
930
+ Infeasible version of navigate to the service catalog item list page and order an Apple MacBook Pro 15".
931
+
932
+ Attributes:
933
+ -----------
934
+ task_description: str
935
+ The start of the task description to be completed.
936
+ short_description: str
937
+ A short description of the task to be completed. "Order an Apple MacBook Pro 15"
938
+ """
939
+ super().__init__(
940
+ seed=seed,
941
+ instance=instance,
942
+ fixed_config=fixed_config,
943
+ navigation_config={
944
+ "application": "Self-Service",
945
+ "module": "Service Catalog",
946
+ },
947
+ level=level,
948
+ function=get_infeasible_service_catalog_config,
949
+ task_class=OrderAppleMacBookPro15Task,
950
+ provide_reason=True,
951
+ )
952
+ self.task_description = 'Order an Apple MacBook Pro 15" from the service catalog with the required configuration if applicable. \n'
953
+ self.short_description = 'Order an Apple MacBook Pro 15" from the service catalog'
954
+
955
+
956
+ class InfeasibleNavigateAndOrderAppleMacBookPro15Task(InfeasibleNavigateAndDoTask):
957
+ def __init__(
958
+ self,
959
+ seed: int = None,
960
+ instance: SNowInstance = None,
961
+ fixed_config: list[AbstractServiceNowTask] = None,
962
+ level: int = 2,
963
+ ) -> None:
964
+ """
965
+ Infeasible version of navigate to the service catalog item list page and order an Apple MacBook Pro 15".
966
+
967
+ Attributes:
968
+ -----------
969
+ task_description: str
970
+ The start of the task description to be completed.
971
+ short_description: str
972
+ A short description of the task to be completed. "Order an Apple MacBook Pro 15"
973
+ """
974
+ super().__init__(
975
+ seed=seed,
976
+ instance=instance,
977
+ fixed_config=fixed_config,
978
+ navigation_config={
979
+ "application": "Self-Service",
980
+ "module": "Service Catalog",
981
+ },
982
+ level=level,
983
+ provide_reason=False,
984
+ function=get_infeasible_service_catalog_config,
985
+ task_class=OrderAppleMacBookPro15Task,
986
+ )
987
+ self.task_description = 'Order an Apple MacBook Pro 15" from the service catalog with the required configuration if applicable. \n'
988
+ self.short_description = 'Order an Apple MacBook Pro 15" from the service catalog'
989
+
990
+
991
+ class InfeasibleNavigateAndOrderDevelopmentLaptopPCWithReasonTask(InfeasibleNavigateAndDoTask):
992
+ def __init__(
993
+ self,
994
+ seed: int = None,
995
+ instance: SNowInstance = None,
996
+ fixed_config: list[AbstractServiceNowTask] = None,
997
+ level: int = 2,
998
+ ) -> None:
999
+ """
1000
+ Infeasible version of navigate to the service catalog item list page and order a development laptop PC.
1001
+
1002
+ Attributes:
1003
+ -----------
1004
+ task_description: str
1005
+ The start of the task description to be completed.
1006
+ short_description: str
1007
+ A short description of the task to be completed. "Order a development laptop PC"
1008
+ """
1009
+ super().__init__(
1010
+ seed=seed,
1011
+ instance=instance,
1012
+ fixed_config=fixed_config,
1013
+ navigation_config={
1014
+ "application": "Self-Service",
1015
+ "module": "Service Catalog",
1016
+ },
1017
+ level=level,
1018
+ function=get_infeasible_service_catalog_config,
1019
+ task_class=OrderDevelopmentLaptopPCTask,
1020
+ provide_reason=True,
1021
+ )
1022
+ self.task_description = "Order a development laptop PC from the service catalog with the required configuration if applicable. \n"
1023
+ self.short_description = "Order a development laptop PC from the service catalog"
1024
+
1025
+
1026
+ class InfeasibleNavigateAndOrderDevelopmentLaptopPCTask(InfeasibleNavigateAndDoTask):
1027
+ def __init__(
1028
+ self,
1029
+ seed: int = None,
1030
+ instance: SNowInstance = None,
1031
+ fixed_config: list[AbstractServiceNowTask] = None,
1032
+ level: int = 2,
1033
+ ) -> None:
1034
+ """
1035
+ Infeasible version of navigate to the service catalog item list page and order a development laptop PC.
1036
+
1037
+ Attributes:
1038
+ -----------
1039
+ task_description: str
1040
+ The start of the task description to be completed.
1041
+ short_description: str
1042
+ A short description of the task to be completed. "Order a development laptop PC"
1043
+ """
1044
+ super().__init__(
1045
+ seed=seed,
1046
+ instance=instance,
1047
+ fixed_config=fixed_config,
1048
+ navigation_config={
1049
+ "application": "Self-Service",
1050
+ "module": "Service Catalog",
1051
+ },
1052
+ level=level,
1053
+ provide_reason=False,
1054
+ function=get_infeasible_service_catalog_config,
1055
+ task_class=OrderDevelopmentLaptopPCTask,
1056
+ )
1057
+ self.task_description = "Order a development laptop PC from the service catalog with the required configuration if applicable. \n"
1058
+ self.short_description = "Order a development laptop PC from the service catalog"
1059
+
1060
+
1061
+ class InfeasibleNavigateAndOrderLoanerLaptopWithReasonTask(InfeasibleNavigateAndDoTask):
1062
+ def __init__(
1063
+ self,
1064
+ seed: int = None,
1065
+ instance: SNowInstance = None,
1066
+ fixed_config: list[AbstractServiceNowTask] = None,
1067
+ level: int = 2,
1068
+ ) -> None:
1069
+ """
1070
+ Infeasible version of navigate to the service catalog item list page and order a loaner laptop.
1071
+
1072
+ Attributes:
1073
+ -----------
1074
+ task_description: str
1075
+ The start of the task description to be completed.
1076
+ short_description: str
1077
+ A short description of the task to be completed. "Order a loaner laptop"
1078
+ """
1079
+ super().__init__(
1080
+ seed=seed,
1081
+ instance=instance,
1082
+ fixed_config=fixed_config,
1083
+ navigation_config={
1084
+ "application": "Self-Service",
1085
+ "module": "Service Catalog",
1086
+ },
1087
+ level=level,
1088
+ function=get_infeasible_service_catalog_config,
1089
+ task_class=OrderLoanerLaptopTask,
1090
+ provide_reason=True,
1091
+ )
1092
+ self.task_description = "Order a loaner laptop from the service catalog with the required configuration if applicable. \n"
1093
+ self.short_description = "Order a loaner laptop from the service catalog"
1094
+
1095
+
1096
+ class InfeasibleNavigateAndOrderLoanerLaptopTask(InfeasibleNavigateAndDoTask):
1097
+ def __init__(
1098
+ self,
1099
+ seed: int = None,
1100
+ instance: SNowInstance = None,
1101
+ fixed_config: list[AbstractServiceNowTask] = None,
1102
+ level: int = 2,
1103
+ ) -> None:
1104
+ """
1105
+ Infeasible version of navigate to the service catalog item list page and order a loaner laptop.
1106
+
1107
+ Attributes:
1108
+ -----------
1109
+ task_description: str
1110
+ The start of the task description to be completed.
1111
+ short_description: str
1112
+ A short description of the task to be completed. "Order a loaner laptop"
1113
+ """
1114
+ super().__init__(
1115
+ seed=seed,
1116
+ instance=instance,
1117
+ fixed_config=fixed_config,
1118
+ navigation_config={
1119
+ "application": "Self-Service",
1120
+ "module": "Service Catalog",
1121
+ },
1122
+ level=level,
1123
+ provide_reason=False,
1124
+ function=get_infeasible_service_catalog_config,
1125
+ task_class=OrderLoanerLaptopTask,
1126
+ )
1127
+ self.task_description = "Order a loaner laptop from the service catalog with the required configuration if applicable. \n"
1128
+ self.short_description = "Order a loaner laptop from the service catalog"
1129
+
1130
+
1131
+ class InfeasibleNavigateAndFilterAssetListWithReasonTask(InfeasibleNavigateAndDoTask):
1132
+ def __init__(
1133
+ self,
1134
+ seed: int = None,
1135
+ instance: SNowInstance = None,
1136
+ fixed_config: list[AbstractServiceNowTask] = None,
1137
+ level: int = 2,
1138
+ list_name: str = "alm_asset",
1139
+ ) -> None:
1140
+ """
1141
+ Infeasible version of navigate to the user list page and filter the list based on a specific criteria.
1142
+
1143
+ Attributes:
1144
+ -----------
1145
+ task_description: str
1146
+ The start of the task description to be completed.
1147
+ short_description: str
1148
+ A short description of the task to be completed. "Filter the asset list"
1149
+ """
1150
+ super().__init__(
1151
+ seed=seed,
1152
+ instance=instance,
1153
+ fixed_config=fixed_config,
1154
+ navigation_config={
1155
+ "application": "Asset",
1156
+ "module": "Portfolios > All Assets",
1157
+ },
1158
+ level=level,
1159
+ function=get_infeasible_filter_config,
1160
+ task_class=FilterAssetListTask,
1161
+ provide_reason=True,
1162
+ )
1163
+ self.task_description = "Filter the asset list - in Asset > Portflios > All Assets - based on specific criteria. \n"
1164
+ self.short_description = "Filter the asset list."
1165
+ self.list_name = list_name
1166
+
1167
+
1168
+ class InfeasibleNavigateAndFilterAssetListTask(InfeasibleNavigateAndDoTask):
1169
+ def __init__(
1170
+ self,
1171
+ seed: int = None,
1172
+ instance: SNowInstance = None,
1173
+ fixed_config: list[AbstractServiceNowTask] = None,
1174
+ level: int = 2,
1175
+ list_name: str = "alm_asset",
1176
+ ) -> None:
1177
+ """
1178
+ Infeasible version of navigate to the user list page and filter the list based on a specific criteria.
1179
+
1180
+ Attributes:
1181
+ -----------
1182
+ task_description: str
1183
+ The start of the task description to be completed.
1184
+ short_description: str
1185
+ A short description of the task to be completed. "Filter the asset list"
1186
+ """
1187
+ super().__init__(
1188
+ seed=seed,
1189
+ instance=instance,
1190
+ fixed_config=fixed_config,
1191
+ navigation_config={
1192
+ "application": "Asset",
1193
+ "module": "Portfolios > All Assets",
1194
+ },
1195
+ level=level,
1196
+ provide_reason=False,
1197
+ function=get_infeasible_filter_config,
1198
+ task_class=FilterAssetListTask,
1199
+ )
1200
+ self.task_description = "Filter the asset list - in Asset > Portflios > All Assets - based on specific criteria. \n"
1201
+ self.short_description = "Filter the asset list."
1202
+ self.list_name = list_name
1203
+
1204
+
1205
+ class InfeasibleNavigateAndFilterUserListWithReasonTask(InfeasibleNavigateAndDoTask):
1206
+ def __init__(
1207
+ self,
1208
+ seed: int = None,
1209
+ instance: SNowInstance = None,
1210
+ fixed_config: list[AbstractServiceNowTask] = None,
1211
+ level: int = 2,
1212
+ list_name: str = "user",
1213
+ ) -> None:
1214
+ """
1215
+ Infeasible version of navigate to the user list page and filter the list based on a specific criteria.
1216
+
1217
+ Attributes:
1218
+ -----------
1219
+ task_description: str
1220
+ The start of the task description to be completed.
1221
+ short_description: str
1222
+ A short description of the task to be completed. "Filter the user list"
1223
+ """
1224
+ super().__init__(
1225
+ seed=seed,
1226
+ instance=instance,
1227
+ fixed_config=fixed_config,
1228
+ navigation_config={
1229
+ "application": "Organization",
1230
+ "module": "Users",
1231
+ },
1232
+ level=level,
1233
+ function=get_infeasible_filter_config,
1234
+ task_class=FilterUserListTask,
1235
+ provide_reason=True,
1236
+ )
1237
+ self.task_description = "Filter the user list based on specific criteria. \n"
1238
+ self.short_description = "Filter the user list."
1239
+ self.list_name = list_name
1240
+
1241
+
1242
+ class InfeasibleNavigateAndFilterUserListTask(InfeasibleNavigateAndDoTask):
1243
+ def __init__(
1244
+ self,
1245
+ seed: int = None,
1246
+ instance: SNowInstance = None,
1247
+ fixed_config: list[AbstractServiceNowTask] = None,
1248
+ level: int = 2,
1249
+ list_name: str = "user",
1250
+ ) -> None:
1251
+ """
1252
+ Infeasible version of navigate to the user list page and filter the list based on a specific criteria.
1253
+
1254
+ Attributes:
1255
+ -----------
1256
+ task_description: str
1257
+ The start of the task description to be completed.
1258
+ short_description: str
1259
+ A short description of the task to be completed. "Filter the user list"
1260
+ """
1261
+ super().__init__(
1262
+ seed=seed,
1263
+ instance=instance,
1264
+ fixed_config=fixed_config,
1265
+ navigation_config={
1266
+ "application": "Organization",
1267
+ "module": "Users",
1268
+ },
1269
+ level=level,
1270
+ provide_reason=False,
1271
+ function=get_infeasible_filter_config,
1272
+ task_class=FilterUserListTask,
1273
+ )
1274
+ self.task_description = "Filter the user list based on specific criteria. \n"
1275
+ self.short_description = "Filter the user list."
1276
+ self.list_name = list_name
1277
+
1278
+
1279
+ class InfeasibleNavigateAndFilterIncidentListWithReasonTask(InfeasibleNavigateAndDoTask):
1280
+ def __init__(
1281
+ self,
1282
+ seed: int = None,
1283
+ instance: SNowInstance = None,
1284
+ fixed_config: list[AbstractServiceNowTask] = None,
1285
+ level: int = 2,
1286
+ list_name: str = "incident",
1287
+ ) -> None:
1288
+ """
1289
+ Infeasible version of navigate to the incident list page and filter the list based on a specific criteria.
1290
+
1291
+ Attributes:
1292
+ -----------
1293
+ task_description: str
1294
+ The start of the task description to be completed.
1295
+ short_description: str
1296
+ A short description of the task to be completed. "Filter the incident list"
1297
+ """
1298
+ super().__init__(
1299
+ seed=seed,
1300
+ instance=instance,
1301
+ fixed_config=fixed_config,
1302
+ navigation_config={
1303
+ "application": "Service Desk",
1304
+ "module": "Incidents",
1305
+ },
1306
+ level=level,
1307
+ function=get_infeasible_filter_config,
1308
+ task_class=FilterIncidentListTask,
1309
+ provide_reason=True,
1310
+ )
1311
+ self.task_description = "Filter the incident list based on specific criteria. \n"
1312
+ self.short_description = "Filter the incident list."
1313
+ self.list_name = list_name
1314
+
1315
+
1316
+ class InfeasibleNavigateAndFilterIncidentListTask(InfeasibleNavigateAndDoTask):
1317
+ def __init__(
1318
+ self,
1319
+ seed: int = None,
1320
+ instance: SNowInstance = None,
1321
+ fixed_config: list[AbstractServiceNowTask] = None,
1322
+ level: int = 2,
1323
+ list_name: str = "incident",
1324
+ ) -> None:
1325
+ """
1326
+ Infeasible version of navigate to the incident list page and filter the list based on a specific criteria.
1327
+
1328
+ Attributes:
1329
+ -----------
1330
+ task_description: str
1331
+ The start of the task description to be completed.
1332
+ short_description: str
1333
+ A short description of the task to be completed. "Filter the incident list"
1334
+ """
1335
+ super().__init__(
1336
+ seed=seed,
1337
+ instance=instance,
1338
+ fixed_config=fixed_config,
1339
+ navigation_config={
1340
+ "application": "Service Desk",
1341
+ "module": "Incidents",
1342
+ },
1343
+ level=level,
1344
+ provide_reason=False,
1345
+ function=get_infeasible_filter_config,
1346
+ task_class=FilterIncidentListTask,
1347
+ )
1348
+ self.task_description = "Filter the incident list based on specific criteria. \n"
1349
+ self.short_description = "Filter the incident list."
1350
+ self.list_name = list_name
1351
+
1352
+
1353
+ class InfeasibleNavigateAndFilterChangeRequestListWithReasonTask(InfeasibleNavigateAndDoTask):
1354
+ def __init__(
1355
+ self,
1356
+ seed: int = None,
1357
+ instance: SNowInstance = None,
1358
+ fixed_config: list[AbstractServiceNowTask] = None,
1359
+ level: int = 2,
1360
+ list_name: str = "change_request",
1361
+ ) -> None:
1362
+ """
1363
+ Infeasible version of navigate to the change request list page and filter the list based on a specific criteria.
1364
+
1365
+ Attributes:
1366
+ -----------
1367
+ task_description: str
1368
+ The start of the task description to be completed.
1369
+ short_description: str
1370
+ A short description of the task to be completed. "Filter the change request list"
1371
+ """
1372
+ super().__init__(
1373
+ seed=seed,
1374
+ instance=instance,
1375
+ fixed_config=fixed_config,
1376
+ navigation_config={
1377
+ "application": "Change",
1378
+ "module": "All",
1379
+ },
1380
+ level=level,
1381
+ function=get_infeasible_filter_config,
1382
+ task_class=FilterChangeRequestListTask,
1383
+ provide_reason=True,
1384
+ )
1385
+ self.task_description = "Filter the change request list based on specific criteria. \n"
1386
+ self.short_description = "Filter the change request list."
1387
+ self.list_name = list_name
1388
+
1389
+
1390
+ class InfeasibleNavigateAndFilterChangeRequestListTask(InfeasibleNavigateAndDoTask):
1391
+ def __init__(
1392
+ self,
1393
+ seed: int = None,
1394
+ instance: SNowInstance = None,
1395
+ fixed_config: list[AbstractServiceNowTask] = None,
1396
+ level: int = 2,
1397
+ list_name: str = "change_request",
1398
+ ) -> None:
1399
+ """
1400
+ Infeasible version of navigate to the change request list page and filter the list based on a specific criteria.
1401
+
1402
+ Attributes:
1403
+ -----------
1404
+ task_description: str
1405
+ The start of the task description to be completed.
1406
+ short_description: str
1407
+ A short description of the task to be completed. "Filter the change request list"
1408
+ """
1409
+ super().__init__(
1410
+ seed=seed,
1411
+ instance=instance,
1412
+ fixed_config=fixed_config,
1413
+ navigation_config={
1414
+ "application": "Change",
1415
+ "module": "All",
1416
+ },
1417
+ level=level,
1418
+ provide_reason=False,
1419
+ function=get_infeasible_filter_config,
1420
+ task_class=FilterChangeRequestListTask,
1421
+ )
1422
+ self.task_description = "Filter the change request list based on specific criteria. \n"
1423
+ self.short_description = "Filter the change request list."
1424
+ self.list_name = list_name
1425
+
1426
+
1427
+ class InfeasibleNavigateAndFilterHardwareListWithReasonTask(InfeasibleNavigateAndDoTask):
1428
+ def __init__(
1429
+ self,
1430
+ seed: int = None,
1431
+ instance: SNowInstance = None,
1432
+ fixed_config: list[AbstractServiceNowTask] = None,
1433
+ level: int = 2,
1434
+ list_name: str = "hardware_asset",
1435
+ ) -> None:
1436
+ """
1437
+ Infeasible version of navigate to the hardware asset list page and filter the list based on a specific criteria.
1438
+
1439
+ Attributes:
1440
+ -----------
1441
+ task_description: str
1442
+ The start of the task description to be completed.
1443
+ short_description: str
1444
+ A short description of the task to be completed. "Filter the hardware asset list"
1445
+ """
1446
+ super().__init__(
1447
+ seed=seed,
1448
+ instance=instance,
1449
+ fixed_config=fixed_config,
1450
+ navigation_config={
1451
+ "application": "Asset",
1452
+ "module": "Portfolios > Hardware Assets",
1453
+ },
1454
+ level=level,
1455
+ function=get_infeasible_filter_config,
1456
+ task_class=FilterHardwareListTask,
1457
+ provide_reason=True,
1458
+ )
1459
+ self.task_description = "Filter the hardware asset list based on specific criteria. \n"
1460
+ self.short_description = "Filter the hardware asset list."
1461
+ self.list_name = list_name
1462
+
1463
+
1464
+ class InfeasibleNavigateAndFilterHardwareListTask(InfeasibleNavigateAndDoTask):
1465
+ def __init__(
1466
+ self,
1467
+ seed: int = None,
1468
+ instance: SNowInstance = None,
1469
+ fixed_config: list[AbstractServiceNowTask] = None,
1470
+ level: int = 2,
1471
+ list_name: str = "hardware_asset",
1472
+ ) -> None:
1473
+ """
1474
+ Infeasible version of navigate to the hardware asset list page and filter the list based on a specific criteria.
1475
+
1476
+ Attributes:
1477
+ -----------
1478
+ task_description: str
1479
+ The start of the task description to be completed.
1480
+ short_description: str
1481
+ A short description of the task to be completed. "Filter the hardware asset list"
1482
+ """
1483
+ super().__init__(
1484
+ seed=seed,
1485
+ instance=instance,
1486
+ fixed_config=fixed_config,
1487
+ navigation_config={
1488
+ "application": "Asset",
1489
+ "module": "Portfolios > Hardware Assets",
1490
+ },
1491
+ level=level,
1492
+ provide_reason=False,
1493
+ function=get_infeasible_filter_config,
1494
+ task_class=FilterHardwareListTask,
1495
+ )
1496
+ self.task_description = "Filter the hardware asset list based on specific criteria. \n"
1497
+ self.short_description = "Filter the hardware asset list."
1498
+ self.list_name = list_name
1499
+
1500
+
1501
+ class InfeasibleNavigateAndFilterServiceCatalogItemListWithReasonTask(InfeasibleNavigateAndDoTask):
1502
+ def __init__(
1503
+ self,
1504
+ seed: int = None,
1505
+ instance: SNowInstance = None,
1506
+ fixed_config: list[AbstractServiceNowTask] = None,
1507
+ level: int = 2,
1508
+ list_name: str = "service_catalog_item",
1509
+ ) -> None:
1510
+ """
1511
+ Infeasible version of navigate to the service catalog item list page and filter the list based on a specific criteria.
1512
+
1513
+ Attributes:
1514
+ -----------
1515
+ task_description: str
1516
+ The start of the task description to be completed.
1517
+ short_description: str
1518
+ A short description of the task to be completed. "Filter the service catalog item list"
1519
+ """
1520
+ super().__init__(
1521
+ seed=seed,
1522
+ instance=instance,
1523
+ fixed_config=fixed_config,
1524
+ navigation_config={
1525
+ "application": "Service Catalog",
1526
+ "module": "Catalog Definitions > Maintain Items",
1527
+ },
1528
+ level=level,
1529
+ function=get_infeasible_filter_config,
1530
+ task_class=FilterServiceCatalogItemListTask,
1531
+ provide_reason=True,
1532
+ )
1533
+ self.task_description = (
1534
+ "Filter the service catalog item list based on specific criteria. \n"
1535
+ )
1536
+ self.short_description = "Filter the service catalog item list."
1537
+ self.list_name = list_name
1538
+
1539
+
1540
+ class InfeasibleNavigateAndFilterServiceCatalogItemListTask(InfeasibleNavigateAndDoTask):
1541
+ def __init__(
1542
+ self,
1543
+ seed: int = None,
1544
+ instance: SNowInstance = None,
1545
+ fixed_config: list[AbstractServiceNowTask] = None,
1546
+ level: int = 2,
1547
+ list_name: str = "service_catalog_item",
1548
+ ) -> None:
1549
+ """
1550
+ Infeasible version of navigate to the service catalog item list page and filter the list based on a specific criteria.
1551
+
1552
+ Attributes:
1553
+ -----------
1554
+ task_description: str
1555
+ The start of the task description to be completed.
1556
+ short_description: str
1557
+ A short description of the task to be completed. "Filter the service catalog item list"
1558
+ """
1559
+ super().__init__(
1560
+ seed=seed,
1561
+ instance=instance,
1562
+ fixed_config=fixed_config,
1563
+ navigation_config={
1564
+ "application": "Service Catalog",
1565
+ "module": "Catalog Definitions > Maintain Items",
1566
+ },
1567
+ level=level,
1568
+ provide_reason=False,
1569
+ function=get_infeasible_filter_config,
1570
+ task_class=FilterServiceCatalogItemListTask,
1571
+ )
1572
+ self.task_description = (
1573
+ "Filter the service catalog item list based on specific criteria. \n"
1574
+ )
1575
+ self.short_description = "Filter the service catalog item list."
1576
+ self.list_name = list_name
1577
+
1578
+
1579
+ class InfeasibleNavigateAndSortAssetListWithReasonTask(InfeasibleNavigateAndDoTask):
1580
+ def __init__(
1581
+ self,
1582
+ seed: int = None,
1583
+ instance: SNowInstance = None,
1584
+ fixed_config: list[AbstractServiceNowTask] = None,
1585
+ level: int = 2,
1586
+ list_name: str = "alm_asset",
1587
+ ) -> None:
1588
+ """
1589
+ Infeasible version of navigate to the user list page and sort the list based on a specific criteria.
1590
+
1591
+ Attributes:
1592
+ -----------
1593
+ task_description: str
1594
+ The start of the task description to be completed.
1595
+ short_description: str
1596
+ A short description of the task to be completed. "Filter the asset list"
1597
+ """
1598
+ super().__init__(
1599
+ seed=seed,
1600
+ instance=instance,
1601
+ fixed_config=fixed_config,
1602
+ navigation_config={
1603
+ "application": "Asset",
1604
+ "module": "Portfolios > All Assets",
1605
+ },
1606
+ level=level,
1607
+ function=get_infeasible_sort_config,
1608
+ task_class=SortAssetListTask,
1609
+ provide_reason=True,
1610
+ )
1611
+ self.task_description = "Sort the asset list - in Asset > Portflios > All Assets - based on specific criteria. \n"
1612
+ self.short_description = "Sort the asset list."
1613
+ self.list_name = list_name
1614
+
1615
+
1616
+ class InfeasibleNavigateAndSortAssetListTask(InfeasibleNavigateAndDoTask):
1617
+ def __init__(
1618
+ self,
1619
+ seed: int = None,
1620
+ instance: SNowInstance = None,
1621
+ fixed_config: list[AbstractServiceNowTask] = None,
1622
+ level: int = 2,
1623
+ list_name: str = "alm_asset",
1624
+ ) -> None:
1625
+ """
1626
+ Infeasible version of navigate to the user list page and sort the list based on a specific criteria.
1627
+
1628
+ Attributes:
1629
+ -----------
1630
+ task_description: str
1631
+ The start of the task description to be completed.
1632
+ short_description: str
1633
+ A short description of the task to be completed. "Filter the asset list"
1634
+ """
1635
+ super().__init__(
1636
+ seed=seed,
1637
+ instance=instance,
1638
+ fixed_config=fixed_config,
1639
+ navigation_config={
1640
+ "application": "Asset",
1641
+ "module": "Portfolios > All Assets",
1642
+ },
1643
+ level=level,
1644
+ provide_reason=False,
1645
+ function=get_infeasible_sort_config,
1646
+ task_class=SortAssetListTask,
1647
+ )
1648
+ self.task_description = "Sort the asset list - in Asset > Portflios > All Assets - based on specific criteria. \n"
1649
+ self.short_description = "Sort the asset list."
1650
+ self.list_name = list_name
1651
+
1652
+
1653
+ class InfeasibleNavigateAndSortUserListWithReasonTask(InfeasibleNavigateAndDoTask):
1654
+ def __init__(
1655
+ self,
1656
+ seed: int = None,
1657
+ instance: SNowInstance = None,
1658
+ fixed_config: list[AbstractServiceNowTask] = None,
1659
+ level: int = 2,
1660
+ list_name: str = "user",
1661
+ ) -> None:
1662
+ """
1663
+ Infeasible version of navigate to the user list page and sort the list based on a specific criteria.
1664
+
1665
+ Attributes:
1666
+ -----------
1667
+ task_description: str
1668
+ The start of the task description to be completed.
1669
+ short_description: str
1670
+ A short description of the task to be completed. "Sort the user list"
1671
+ """
1672
+ super().__init__(
1673
+ seed=seed,
1674
+ instance=instance,
1675
+ fixed_config=fixed_config,
1676
+ navigation_config={
1677
+ "application": "Organization",
1678
+ "module": "Users",
1679
+ },
1680
+ level=level,
1681
+ function=get_infeasible_sort_config,
1682
+ task_class=SortUserListTask,
1683
+ provide_reason=True,
1684
+ )
1685
+ self.task_description = "Sort the user list based on specific criteria. \n"
1686
+ self.short_description = "Sort the user list."
1687
+ self.list_name = list_name
1688
+
1689
+
1690
+ class InfeasibleNavigateAndSortUserListTask(InfeasibleNavigateAndDoTask):
1691
+ def __init__(
1692
+ self,
1693
+ seed: int = None,
1694
+ instance: SNowInstance = None,
1695
+ fixed_config: list[AbstractServiceNowTask] = None,
1696
+ level: int = 2,
1697
+ list_name: str = "user",
1698
+ ) -> None:
1699
+ """
1700
+ Infeasible version of navigate to the user list page and sort the list based on a specific criteria.
1701
+
1702
+ Attributes:
1703
+ -----------
1704
+ task_description: str
1705
+ The start of the task description to be completed.
1706
+ short_description: str
1707
+ A short description of the task to be completed. "Sort the user list"
1708
+ """
1709
+ super().__init__(
1710
+ seed=seed,
1711
+ instance=instance,
1712
+ fixed_config=fixed_config,
1713
+ navigation_config={
1714
+ "application": "Organization",
1715
+ "module": "Users",
1716
+ },
1717
+ level=level,
1718
+ provide_reason=False,
1719
+ function=get_infeasible_sort_config,
1720
+ task_class=SortUserListTask,
1721
+ )
1722
+ self.task_description = "Sort the user list based on specific criteria. \n"
1723
+ self.short_description = "Sort the user list."
1724
+ self.list_name = list_name
1725
+
1726
+
1727
+ class InfeasibleNavigateAndSortIncidentListWithReasonTask(InfeasibleNavigateAndDoTask):
1728
+ def __init__(
1729
+ self,
1730
+ seed: int = None,
1731
+ instance: SNowInstance = None,
1732
+ fixed_config: list[AbstractServiceNowTask] = None,
1733
+ level: int = 2,
1734
+ list_name: str = "incident",
1735
+ ) -> None:
1736
+ """
1737
+ Infeasible version of navigate to the incident list page and sort the list based on a specific criteria.
1738
+
1739
+ Attributes:
1740
+ -----------
1741
+ task_description: str
1742
+ The start of the task description to be completed.
1743
+ short_description: str
1744
+ A short description of the task to be completed. "Sort the incident list"
1745
+ """
1746
+ super().__init__(
1747
+ seed=seed,
1748
+ instance=instance,
1749
+ fixed_config=fixed_config,
1750
+ navigation_config={
1751
+ "application": "Service Desk",
1752
+ "module": "Incidents",
1753
+ },
1754
+ level=level,
1755
+ function=get_infeasible_sort_config,
1756
+ task_class=SortIncidentListTask,
1757
+ provide_reason=True,
1758
+ )
1759
+ self.task_description = "Sort the incident list based on specific criteria. \n"
1760
+ self.short_description = "Sort the incident list."
1761
+ self.list_name = list_name
1762
+
1763
+
1764
+ class InfeasibleNavigateAndSortIncidentListTask(InfeasibleNavigateAndDoTask):
1765
+ def __init__(
1766
+ self,
1767
+ seed: int = None,
1768
+ instance: SNowInstance = None,
1769
+ fixed_config: list[AbstractServiceNowTask] = None,
1770
+ level: int = 2,
1771
+ list_name: str = "incident",
1772
+ ) -> None:
1773
+ """
1774
+ Infeasible version of navigate to the incident list page and sort the list based on a specific criteria.
1775
+
1776
+ Attributes:
1777
+ -----------
1778
+ task_description: str
1779
+ The start of the task description to be completed.
1780
+ short_description: str
1781
+ A short description of the task to be completed. "Sort the incident list"
1782
+ """
1783
+ super().__init__(
1784
+ seed=seed,
1785
+ instance=instance,
1786
+ fixed_config=fixed_config,
1787
+ navigation_config={
1788
+ "application": "Service Desk",
1789
+ "module": "Incidents",
1790
+ },
1791
+ level=level,
1792
+ provide_reason=False,
1793
+ function=get_infeasible_sort_config,
1794
+ task_class=SortIncidentListTask,
1795
+ )
1796
+ self.task_description = "Sort the incident list based on specific criteria. \n"
1797
+ self.short_description = "Sort the incident list."
1798
+ self.list_name = list_name
1799
+
1800
+
1801
+ class InfeasibleNavigateAndSortChangeRequestListWithReasonTask(InfeasibleNavigateAndDoTask):
1802
+ def __init__(
1803
+ self,
1804
+ seed: int = None,
1805
+ instance: SNowInstance = None,
1806
+ fixed_config: list[AbstractServiceNowTask] = None,
1807
+ level: int = 2,
1808
+ list_name: str = "change_request",
1809
+ ) -> None:
1810
+ """
1811
+ Infeasible version of navigate to the change request list page and sort the list based on a specific criteria.
1812
+
1813
+ Attributes:
1814
+ -----------
1815
+ task_description: str
1816
+ The start of the task description to be completed.
1817
+ short_description: str
1818
+ A short description of the task to be completed. "Sort the change request list"
1819
+ """
1820
+ super().__init__(
1821
+ seed=seed,
1822
+ instance=instance,
1823
+ fixed_config=fixed_config,
1824
+ navigation_config={
1825
+ "application": "Change",
1826
+ "module": "All",
1827
+ },
1828
+ level=level,
1829
+ function=get_infeasible_sort_config,
1830
+ task_class=SortChangeRequestListTask,
1831
+ provide_reason=True,
1832
+ )
1833
+ self.task_description = "Sort the change request list based on specific criteria. \n"
1834
+ self.short_description = "Sort the change request list."
1835
+ self.list_name = list_name
1836
+
1837
+
1838
+ class InfeasibleNavigateAndSortChangeRequestListTask(InfeasibleNavigateAndDoTask):
1839
+ def __init__(
1840
+ self,
1841
+ seed: int = None,
1842
+ instance: SNowInstance = None,
1843
+ fixed_config: list[AbstractServiceNowTask] = None,
1844
+ level: int = 2,
1845
+ list_name: str = "change_request",
1846
+ ) -> None:
1847
+ """
1848
+ Infeasible version of navigate to the change request list page and sort the list based on a specific criteria.
1849
+
1850
+ Attributes:
1851
+ -----------
1852
+ task_description: str
1853
+ The start of the task description to be completed.
1854
+ short_description: str
1855
+ A short description of the task to be completed. "Sort the change request list"
1856
+ """
1857
+ super().__init__(
1858
+ seed=seed,
1859
+ instance=instance,
1860
+ fixed_config=fixed_config,
1861
+ navigation_config={
1862
+ "application": "Change",
1863
+ "module": "All",
1864
+ },
1865
+ level=level,
1866
+ provide_reason=False,
1867
+ function=get_infeasible_sort_config,
1868
+ task_class=SortChangeRequestListTask,
1869
+ )
1870
+ self.task_description = "Sort the change request list based on specific criteria. \n"
1871
+ self.short_description = "Sort the change request list."
1872
+ self.list_name = list_name
1873
+
1874
+
1875
+ class InfeasibleNavigateAndSortHardwareListWithReasonTask(InfeasibleNavigateAndDoTask):
1876
+ def __init__(
1877
+ self,
1878
+ seed: int = None,
1879
+ instance: SNowInstance = None,
1880
+ fixed_config: list[AbstractServiceNowTask] = None,
1881
+ level: int = 2,
1882
+ list_name: str = "hardware_asset",
1883
+ ) -> None:
1884
+ """
1885
+ Infeasible version of navigate to the hardware asset list page and sort the list based on a specific criteria.
1886
+
1887
+ Attributes:
1888
+ -----------
1889
+ task_description: str
1890
+ The start of the task description to be completed.
1891
+ short_description: str
1892
+ A short description of the task to be completed. "Sort the hardware asset list"
1893
+ """
1894
+ super().__init__(
1895
+ seed=seed,
1896
+ instance=instance,
1897
+ fixed_config=fixed_config,
1898
+ navigation_config={
1899
+ "application": "Asset",
1900
+ "module": "Portfolios > Hardware Assets",
1901
+ },
1902
+ level=level,
1903
+ function=get_infeasible_sort_config,
1904
+ task_class=SortHardwareListTask,
1905
+ provide_reason=True,
1906
+ )
1907
+ self.task_description = "Sort the hardware asset list based on specific criteria. \n"
1908
+ self.short_description = "Sort the hardware asset list."
1909
+ self.list_name = list_name
1910
+
1911
+
1912
+ class InfeasibleNavigateAndSortHardwareListTask(InfeasibleNavigateAndDoTask):
1913
+ def __init__(
1914
+ self,
1915
+ seed: int = None,
1916
+ instance: SNowInstance = None,
1917
+ fixed_config: list[AbstractServiceNowTask] = None,
1918
+ level: int = 2,
1919
+ list_name: str = "hardware_asset",
1920
+ ) -> None:
1921
+ """
1922
+ Infeasible version of navigate to the hardware asset list page and sort the list based on a specific criteria.
1923
+
1924
+ Attributes:
1925
+ -----------
1926
+ task_description: str
1927
+ The start of the task description to be completed.
1928
+ short_description: str
1929
+ A short description of the task to be completed. "Sort the hardware asset list"
1930
+ """
1931
+ super().__init__(
1932
+ seed=seed,
1933
+ instance=instance,
1934
+ fixed_config=fixed_config,
1935
+ navigation_config={
1936
+ "application": "Asset",
1937
+ "module": "Portfolios > Hardware Assets",
1938
+ },
1939
+ level=level,
1940
+ provide_reason=False,
1941
+ function=get_infeasible_sort_config,
1942
+ task_class=SortHardwareListTask,
1943
+ )
1944
+ self.task_description = "Sort the hardware asset list based on specific criteria. \n"
1945
+ self.short_description = "Sort the hardware asset list."
1946
+ self.list_name = list_name
1947
+
1948
+
1949
+ class InfeasibleNavigateAndSortServiceCatalogItemListWithReasonTask(InfeasibleNavigateAndDoTask):
1950
+ def __init__(
1951
+ self,
1952
+ seed: int = None,
1953
+ instance: SNowInstance = None,
1954
+ fixed_config: list[AbstractServiceNowTask] = None,
1955
+ level: int = 2,
1956
+ list_name: str = "service_catalog_item",
1957
+ ) -> None:
1958
+ """
1959
+ Infeasible version of navigate to the service catalog item list page and sort the list based on a specific criteria.
1960
+
1961
+ Attributes:
1962
+ -----------
1963
+ task_description: str
1964
+ The start of the task description to be completed.
1965
+ short_description: str
1966
+ A short description of the task to be completed. "Sort the service catalog item list"
1967
+ """
1968
+ super().__init__(
1969
+ seed=seed,
1970
+ instance=instance,
1971
+ fixed_config=fixed_config,
1972
+ navigation_config={
1973
+ "application": "Service Catalog",
1974
+ "module": "Catalog Definitions > Maintain Items",
1975
+ },
1976
+ level=level,
1977
+ function=get_infeasible_sort_config,
1978
+ task_class=SortServiceCatalogItemListTask,
1979
+ provide_reason=True,
1980
+ )
1981
+ self.task_description = "Sort the service catalog item list based on specific criteria. \n"
1982
+ self.short_description = "Sort the service catalog item list."
1983
+ self.list_name = list_name
1984
+
1985
+
1986
+ class InfeasibleNavigateAndSortServiceCatalogItemListTask(InfeasibleNavigateAndDoTask):
1987
+ def __init__(
1988
+ self,
1989
+ seed: int = None,
1990
+ instance: SNowInstance = None,
1991
+ fixed_config: list[AbstractServiceNowTask] = None,
1992
+ level: int = 2,
1993
+ list_name: str = "service_catalog_item",
1994
+ ) -> None:
1995
+ """
1996
+ Infeasible version of navigate to the service catalog item list page and sort the list based on a specific criteria.
1997
+
1998
+ Attributes:
1999
+ -----------
2000
+ task_description: str
2001
+ The start of the task description to be completed.
2002
+ short_description: str
2003
+ A short description of the task to be completed. "Sort the service catalog item list"
2004
+ """
2005
+ super().__init__(
2006
+ seed=seed,
2007
+ instance=instance,
2008
+ fixed_config=fixed_config,
2009
+ navigation_config={
2010
+ "application": "Service Catalog",
2011
+ "module": "Catalog Definitions > Maintain Items",
2012
+ },
2013
+ level=level,
2014
+ provide_reason=False,
2015
+ function=get_infeasible_sort_config,
2016
+ task_class=SortServiceCatalogItemListTask,
2017
+ )
2018
+ self.task_description = "Sort the service catalog item list based on specific criteria. \n"
2019
+ self.short_description = "Sort the service catalog item list."
2020
+ self.list_name = list_name
2021
+
2022
+
2023
+ local_vars = locals().copy()
2024
+
2025
+ __TASKS__ = [
2026
+ var
2027
+ for var in local_vars.values()
2028
+ if isinstance(var, type)
2029
+ and issubclass(var, InfeasibleNavigateAndDoTask)
2030
+ and var is not InfeasibleNavigateAndDoTask
2031
+ ]
2032
+
2033
+ INFEASIBLE_NAVIGATE_AND_CREATE_WITH_REASON = [
2034
+ InfeasibleNavigateAndCreateUserWithReasonTask,
2035
+ InfeasibleNavigateAndCreateIncidentWithReasonTask,
2036
+ InfeasibleNavigateAndCreateChangeRequestWithReasonTask,
2037
+ InfeasibleNavigateAndCreateProblemWithReasonTask,
2038
+ InfeasibleNavigateAndCreateHardwareAssetWithReasonTask,
2039
+ ]
2040
+ INFEASIBLE_NAVIGATE_AND_CREATE = [
2041
+ InfeasibleNavigateAndCreateUserTask,
2042
+ InfeasibleNavigateAndCreateIncidentTask,
2043
+ InfeasibleNavigateAndCreateChangeRequestTask,
2044
+ InfeasibleNavigateAndCreateProblemTask,
2045
+ InfeasibleNavigateAndCreateHardwareAssetTask,
2046
+ ]
2047
+ INFEASIBLE_NAVIGATE_AND_ORDER_WITH_REASON = [
2048
+ InfeasibleNavigateAndOrderStandardLaptopWithReasonTask,
2049
+ InfeasibleNavigateAndOrderSalesLaptopWithReasonTask,
2050
+ InfeasibleNavigateAndOrderDeveloperLaptopWithReasonTask,
2051
+ InfeasibleNavigateAndOrderIpadProWithReasonTask,
2052
+ InfeasibleNavigateAndOrderIpadMiniWithReasonTask,
2053
+ InfeasibleNavigateAndOrderAppleWatchWithReasonTask,
2054
+ InfeasibleNavigateAndOrderAppleMacBookPro15WithReasonTask,
2055
+ InfeasibleNavigateAndOrderDevelopmentLaptopPCWithReasonTask,
2056
+ InfeasibleNavigateAndOrderLoanerLaptopWithReasonTask,
2057
+ ]
2058
+ INFEASIBLE_NAVIGATE_AND_ORDER = [
2059
+ InfeasibleNavigateAndOrderStandardLaptopTask,
2060
+ InfeasibleNavigateAndOrderSalesLaptopTask,
2061
+ InfeasibleNavigateAndOrderDeveloperLaptopTask,
2062
+ InfeasibleNavigateAndOrderIpadProTask,
2063
+ InfeasibleNavigateAndOrderIpadMiniTask,
2064
+ InfeasibleNavigateAndOrderAppleWatchTask,
2065
+ InfeasibleNavigateAndOrderAppleMacBookPro15Task,
2066
+ InfeasibleNavigateAndOrderDevelopmentLaptopPCTask,
2067
+ InfeasibleNavigateAndOrderLoanerLaptopTask,
2068
+ ]
2069
+ INFEASIBLE_NAVIGATE_AND_FILTER_WITH_REASON = [
2070
+ InfeasibleNavigateAndFilterAssetListWithReasonTask,
2071
+ InfeasibleNavigateAndFilterUserListWithReasonTask,
2072
+ InfeasibleNavigateAndFilterIncidentListWithReasonTask,
2073
+ InfeasibleNavigateAndFilterChangeRequestListWithReasonTask,
2074
+ InfeasibleNavigateAndFilterHardwareListWithReasonTask,
2075
+ InfeasibleNavigateAndFilterServiceCatalogItemListWithReasonTask,
2076
+ ]
2077
+ INFEASIBLE_NAVIGATE_AND_FILTER = [
2078
+ InfeasibleNavigateAndFilterAssetListTask,
2079
+ InfeasibleNavigateAndFilterUserListTask,
2080
+ InfeasibleNavigateAndFilterIncidentListTask,
2081
+ InfeasibleNavigateAndFilterChangeRequestListTask,
2082
+ InfeasibleNavigateAndFilterHardwareListTask,
2083
+ InfeasibleNavigateAndFilterServiceCatalogItemListTask,
2084
+ ]
2085
+ INFEASIBLE_NAVIGATE_AND_SORT_WITH_REASON = [
2086
+ InfeasibleNavigateAndSortAssetListWithReasonTask,
2087
+ InfeasibleNavigateAndSortUserListWithReasonTask,
2088
+ InfeasibleNavigateAndSortIncidentListWithReasonTask,
2089
+ InfeasibleNavigateAndSortChangeRequestListWithReasonTask,
2090
+ InfeasibleNavigateAndSortHardwareListWithReasonTask,
2091
+ InfeasibleNavigateAndSortServiceCatalogItemListWithReasonTask,
2092
+ ]
2093
+ INFEASIBLE_NAVIGATE_AND_SORT = [
2094
+ InfeasibleNavigateAndSortAssetListTask,
2095
+ InfeasibleNavigateAndSortUserListTask,
2096
+ InfeasibleNavigateAndSortIncidentListTask,
2097
+ InfeasibleNavigateAndSortChangeRequestListTask,
2098
+ InfeasibleNavigateAndSortHardwareListTask,
2099
+ InfeasibleNavigateAndSortServiceCatalogItemListTask,
2100
+ ]