browsergym-workarena 0.1.0rc6__py3-none-any.whl → 0.1.0rc7__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 +6 -2
- browsergym/workarena/data_files/setup_files/lists/expected_asset_list_columns.json +34 -1
- browsergym/workarena/data_files/setup_files/lists/expected_change_request_list_columns.json +48 -1
- browsergym/workarena/data_files/setup_files/lists/expected_hardware_list_columns.json +53 -1
- browsergym/workarena/data_files/setup_files/lists/expected_incident_list_columns.json +28 -1
- browsergym/workarena/data_files/setup_files/lists/expected_service_catalog_list_columns.json +29 -1
- browsergym/workarena/data_files/task_configs/sort_asset_list_task.json +547 -11391
- browsergym/workarena/data_files/task_configs/sort_change_request_list_task.json +558 -11090
- browsergym/workarena/data_files/task_configs/sort_hardware_list_task.json +576 -11162
- browsergym/workarena/data_files/task_configs/sort_incident_list_task.json +528 -11172
- browsergym/workarena/data_files/task_configs/sort_service_catalog_item_list_task.json +533 -11491
- browsergym/workarena/data_files/task_configs/sort_user_list_task.json +568 -10582
- browsergym/workarena/install.py +22 -15
- browsergym/workarena/tasks/form.py +8 -7
- browsergym/workarena/tasks/list.py +39 -1
- browsergym/workarena/tasks/scripts/list.py +31 -7
- {browsergym_workarena-0.1.0rc6.dist-info → browsergym_workarena-0.1.0rc7.dist-info}/METADATA +2 -2
- {browsergym_workarena-0.1.0rc6.dist-info → browsergym_workarena-0.1.0rc7.dist-info}/RECORD +21 -21
- {browsergym_workarena-0.1.0rc6.dist-info → browsergym_workarena-0.1.0rc7.dist-info}/WHEEL +1 -1
- {browsergym_workarena-0.1.0rc6.dist-info → browsergym_workarena-0.1.0rc7.dist-info}/entry_points.txt +0 -0
- {browsergym_workarena-0.1.0rc6.dist-info → browsergym_workarena-0.1.0rc7.dist-info}/licenses/LICENSE +0 -0
browsergym/workarena/install.py
CHANGED
|
@@ -317,25 +317,31 @@ def display_all_expected_columns(url: str, expected_columns: set[str]):
|
|
|
317
317
|
'i[data-title="Personalize List Columns"]'
|
|
318
318
|
) # CSS selector to support both unmodified and modified list views
|
|
319
319
|
selected_columns = frame.get_by_label("Selected", exact=True)
|
|
320
|
+
columns_to_remove = []
|
|
320
321
|
selected_columns_required = set()
|
|
321
|
-
|
|
322
|
+
|
|
323
|
+
# Check for required columns that are already added, and extra columns that must be removed
|
|
324
|
+
|
|
322
325
|
for option in selected_columns.get_by_role("option").all():
|
|
323
326
|
value = option.get_attribute("value")
|
|
324
327
|
if value:
|
|
325
328
|
if value in expected_columns:
|
|
326
329
|
selected_columns_required.add(value)
|
|
327
|
-
# Remove extra columns
|
|
328
330
|
else:
|
|
329
|
-
|
|
330
|
-
frame.get_by_text("Remove", exact=True).click()
|
|
331
|
-
columns_to_add = set(expected_columns) - selected_columns_required
|
|
331
|
+
columns_to_remove.append(value)
|
|
332
332
|
|
|
333
|
-
#
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
frame.
|
|
333
|
+
# Remove extra columns
|
|
334
|
+
selected_columns.select_option(value=columns_to_remove)
|
|
335
|
+
frame.get_by_text("Remove", exact=True).click()
|
|
336
|
+
|
|
337
|
+
# Add missing columns
|
|
338
|
+
available_columns = frame.get_by_label("Available", exact=True)
|
|
339
|
+
columns_to_add = list(set(expected_columns) - selected_columns_required)
|
|
340
|
+
available_columns.select_option(value=columns_to_add)
|
|
341
|
+
frame.get_by_text("Add", exact=True).click()
|
|
342
|
+
|
|
343
|
+
# Confirm
|
|
344
|
+
frame.locator("#ok_button").click()
|
|
339
345
|
|
|
340
346
|
|
|
341
347
|
def check_all_columns_displayed(url: str, expected_columns: set[str]) -> bool:
|
|
@@ -346,15 +352,14 @@ def check_all_columns_displayed(url: str, expected_columns: set[str]) -> bool:
|
|
|
346
352
|
page = browser.new_page()
|
|
347
353
|
ui_login(instance, page)
|
|
348
354
|
page.goto(instance.snow_url + url)
|
|
349
|
-
iframe = page.
|
|
355
|
+
iframe = page.wait_for_selector("iframe#gsft_main").content_frame()
|
|
356
|
+
# Wait for gsft_main.GlideList2 to be available
|
|
357
|
+
page.wait_for_function("typeof gsft_main.GlideList2 !== 'undefined'")
|
|
350
358
|
lst = iframe.locator("table.data_list_table")
|
|
351
|
-
lst.wait_for()
|
|
352
359
|
|
|
353
360
|
# Validate the number of lists on the page
|
|
354
361
|
lst = lst.nth(0)
|
|
355
362
|
js_selector = f"gsft_main.GlideList2.get('{lst.get_attribute('data-list_id')}')"
|
|
356
|
-
# Wait for gsft_main.GlideList2 to be available
|
|
357
|
-
page.wait_for_function("typeof gsft_main.GlideList2 !== 'undefined'")
|
|
358
363
|
visible_columns = set(page.evaluate(f"{js_selector}.fields").split(","))
|
|
359
364
|
|
|
360
365
|
# check if expected columns is contained in the visible columns
|
|
@@ -420,6 +425,7 @@ def process_form_fields(url: str, expected_fields: list[str], action: str):
|
|
|
420
425
|
ui_login(instance, page)
|
|
421
426
|
page.goto(instance.snow_url + url)
|
|
422
427
|
frame = page.wait_for_selector("iframe#gsft_main").content_frame()
|
|
428
|
+
page.wait_for_function("typeof gsft_main.GlideList2 !== 'undefined'")
|
|
423
429
|
# Open form personalization view if not expanded
|
|
424
430
|
form_personalization_expanded = frame.locator(
|
|
425
431
|
'button:has-text("Personalize Form")'
|
|
@@ -515,6 +521,7 @@ def check_instance_release_support():
|
|
|
515
521
|
f"You are running {version_info['build name']} {version_info}."
|
|
516
522
|
)
|
|
517
523
|
return False
|
|
524
|
+
return True
|
|
518
525
|
|
|
519
526
|
|
|
520
527
|
def setup():
|
|
@@ -75,7 +75,6 @@ class ServiceNowFormTask(AbstractServiceNowTask):
|
|
|
75
75
|
Loads a bunch of info about the form on a page into object variables
|
|
76
76
|
|
|
77
77
|
"""
|
|
78
|
-
self._wait_for_ready(page)
|
|
79
78
|
|
|
80
79
|
# Extract Glide table information
|
|
81
80
|
logging.debug("Extracting Glide table metadata")
|
|
@@ -179,7 +178,7 @@ class ServiceNowFormTask(AbstractServiceNowTask):
|
|
|
179
178
|
"""
|
|
180
179
|
logging.debug(f"Waiting for {self.js_prefix} to be fully loaded")
|
|
181
180
|
page.wait_for_function(
|
|
182
|
-
f"typeof window.{self.js_prefix} !== 'undefined' && window.{self.js_prefix}.WORKARENA_LOAD_COMPLETE"
|
|
181
|
+
f"typeof window.{self.js_prefix} !== 'undefined' && window.{self.js_prefix}.WORKARENA_LOAD_COMPLETE",
|
|
183
182
|
)
|
|
184
183
|
logging.debug(f"Detected {self.js_prefix} ready")
|
|
185
184
|
|
|
@@ -218,6 +217,7 @@ class ServiceNowFormTask(AbstractServiceNowTask):
|
|
|
218
217
|
],
|
|
219
218
|
)
|
|
220
219
|
|
|
220
|
+
self._wait_for_ready(page)
|
|
221
221
|
self._get_form(page)
|
|
222
222
|
|
|
223
223
|
|
|
@@ -301,8 +301,10 @@ class GenericNewRecordTask(ServiceNowFormTask):
|
|
|
301
301
|
config = self.fixed_config if self.fixed_config else self.random.choice(self.all_configs)
|
|
302
302
|
|
|
303
303
|
self.template_record = config["template_record"]
|
|
304
|
-
self.
|
|
304
|
+
for f, func in self.unique_valued_fields.items():
|
|
305
|
+
self.template_record[f] = func(self.template_record[f])
|
|
305
306
|
|
|
307
|
+
self.task_fields = config["task_fields"]
|
|
306
308
|
self.created_sysids = []
|
|
307
309
|
|
|
308
310
|
# generate the goal
|
|
@@ -310,7 +312,8 @@ class GenericNewRecordTask(ServiceNowFormTask):
|
|
|
310
312
|
f"Create a new {self.table_label} with "
|
|
311
313
|
+ " and ".join(
|
|
312
314
|
[
|
|
313
|
-
f'a value of "{self.template_record[f]}"'
|
|
315
|
+
f'a value of "{self.template_record[f]}"'
|
|
316
|
+
+ f' for field "{self.fields[f]["label"]}"'
|
|
314
317
|
for f in self.task_fields
|
|
315
318
|
]
|
|
316
319
|
)
|
|
@@ -568,7 +571,6 @@ class GenericNewRecordTask(ServiceNowFormTask):
|
|
|
568
571
|
that are not part of the task.
|
|
569
572
|
|
|
570
573
|
"""
|
|
571
|
-
self._wait_for_ready(page)
|
|
572
574
|
|
|
573
575
|
# Retrieve the created record's sys_id from the session storage
|
|
574
576
|
sys_id = page.evaluate("localStorage").get(self.session_sys_id_field, None)
|
|
@@ -627,7 +629,7 @@ class GenericNewRecordTask(ServiceNowFormTask):
|
|
|
627
629
|
logging.info(
|
|
628
630
|
f'The field "{self.fields[f]["label"]}" has the wrong value. Expected: "{self.template_record[f]}", got: "{record[f]}".'
|
|
629
631
|
)
|
|
630
|
-
error_msg =
|
|
632
|
+
error_msg = f'The field "{self.fields[f]["label"]}" has the wrong value.'
|
|
631
633
|
return (
|
|
632
634
|
0,
|
|
633
635
|
True, # End episode (incorrect information pushed to the DB)
|
|
@@ -638,7 +640,6 @@ class GenericNewRecordTask(ServiceNowFormTask):
|
|
|
638
640
|
return 1, True, "Nice work, thank you!", {"message": "The record was successfully created."}
|
|
639
641
|
|
|
640
642
|
def teardown(self) -> None:
|
|
641
|
-
self._wait_for_ready(self.page)
|
|
642
643
|
|
|
643
644
|
# Retrieve the current record's sys_id from the session storage
|
|
644
645
|
sys_id = self.page.evaluate("localStorage").get(self.session_sys_id_field, None)
|
|
@@ -3,6 +3,7 @@ Tasks related to lists
|
|
|
3
3
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
import itertools
|
|
6
7
|
import json
|
|
7
8
|
import logging
|
|
8
9
|
import playwright.sync_api
|
|
@@ -226,7 +227,6 @@ class SortListTask(ServiceNowListTask):
|
|
|
226
227
|
visible_columns = set(self.list_info["fields"].split(","))
|
|
227
228
|
config = self.fixed_config if self.fixed_config else self.random.choice(self.all_configs)
|
|
228
229
|
|
|
229
|
-
config = self.random.choice(self.all_configs)
|
|
230
230
|
self.sort_fields = config["sort_fields"]
|
|
231
231
|
self.sort_dirs = config["sort_dirs"]
|
|
232
232
|
goal = config["goal"]
|
|
@@ -239,6 +239,44 @@ class SortListTask(ServiceNowListTask):
|
|
|
239
239
|
|
|
240
240
|
return goal, info
|
|
241
241
|
|
|
242
|
+
def _generate_all_configs(self, seed: int, page: Page, n_fields_to_sort: int):
|
|
243
|
+
self.pre_setup(seed, page)
|
|
244
|
+
self._wait_for_ready(page)
|
|
245
|
+
list_info = self._extract_list_info(page)
|
|
246
|
+
|
|
247
|
+
# Get available fields
|
|
248
|
+
available_fields = list(list_info["columns"].keys())
|
|
249
|
+
# ... remove forbidden fields
|
|
250
|
+
available_fields = [f for f in available_fields if f not in self.forbidden_fields]
|
|
251
|
+
|
|
252
|
+
field_txt = {k: x["label"] for k, x in list_info["columns"].items()}
|
|
253
|
+
dir_txt = {"asc": "ascending", "desc": "descending"}
|
|
254
|
+
|
|
255
|
+
# compute all field combinations
|
|
256
|
+
all_sort_fields = list(itertools.combinations(available_fields, n_fields_to_sort))
|
|
257
|
+
# compute all direction combinations
|
|
258
|
+
all_sort_dirs = list(itertools.product(*[["asc", "desc"] for _ in range(n_fields_to_sort)]))
|
|
259
|
+
|
|
260
|
+
# product of field combinations x direction combinations
|
|
261
|
+
all_configs = list(itertools.product(all_sort_fields, all_sort_dirs))
|
|
262
|
+
|
|
263
|
+
all_configs = [
|
|
264
|
+
{
|
|
265
|
+
"sort_fields": sort_fields,
|
|
266
|
+
"sort_dirs": sort_dirs,
|
|
267
|
+
"goal": f'Sort the "{list_info["title"]}" list by the following fields:\n'
|
|
268
|
+
+ "\n".join(
|
|
269
|
+
[
|
|
270
|
+
f" - {field_txt[field]} ({dir_txt[dir]})"
|
|
271
|
+
for field, dir in zip(sort_fields, sort_dirs)
|
|
272
|
+
]
|
|
273
|
+
),
|
|
274
|
+
}
|
|
275
|
+
for sort_fields, sort_dirs in all_configs
|
|
276
|
+
]
|
|
277
|
+
|
|
278
|
+
return all_configs
|
|
279
|
+
|
|
242
280
|
def _generate_random_config(self, seed: int, page: Page):
|
|
243
281
|
self.pre_setup(seed, page)
|
|
244
282
|
self._wait_for_ready(page)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import multiprocessing
|
|
3
|
+
import random
|
|
3
4
|
import re
|
|
4
5
|
|
|
5
6
|
from browsergym.workarena.tasks.list import __TASKS__
|
|
@@ -13,6 +14,34 @@ FILTER_TASKS = [
|
|
|
13
14
|
SORT_TASKS = [task for task in __TASKS__ if re.compile(r"^Sort\w+ListTask$").match(task.__name__)]
|
|
14
15
|
|
|
15
16
|
|
|
17
|
+
def generate_sort_task_configs(task_class, num_configs_per_field_count=50):
|
|
18
|
+
name = task_class.__name__
|
|
19
|
+
name = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", name)
|
|
20
|
+
task_name = re.sub("([a-z0-9])([A-Z])", r"\1_\2", name).lower()
|
|
21
|
+
all_configs = []
|
|
22
|
+
for n_fields_to_sort in range(1, 4):
|
|
23
|
+
with sync_playwright() as p:
|
|
24
|
+
task = task_class()
|
|
25
|
+
browser = p.chromium.launch()
|
|
26
|
+
context = browser.new_context() # Set the timeout here
|
|
27
|
+
context.set_default_timeout(5000)
|
|
28
|
+
page = context.new_page()
|
|
29
|
+
all_new_configs = task._generate_all_configs(
|
|
30
|
+
seed=None, page=page, n_fields_to_sort=n_fields_to_sort
|
|
31
|
+
)
|
|
32
|
+
new_configs = random.sample(all_new_configs, num_configs_per_field_count)
|
|
33
|
+
all_configs.extend(new_configs)
|
|
34
|
+
|
|
35
|
+
print(f"{task_name} {n_fields_to_sort} fields - {len(new_configs)} configs")
|
|
36
|
+
|
|
37
|
+
with open(
|
|
38
|
+
f"{task_name}.json",
|
|
39
|
+
"w",
|
|
40
|
+
) as f:
|
|
41
|
+
all_configs = sorted(all_configs, key=lambda x: sorted(list(x["sort_fields"])))
|
|
42
|
+
json.dump(all_configs, f, indent=4, sort_keys=True)
|
|
43
|
+
|
|
44
|
+
|
|
16
45
|
def generate_task_configs(task_class, num_configs=1000, task_type="sort"):
|
|
17
46
|
def try_setup_and_cheat(task_class, seed, current_task_configs):
|
|
18
47
|
"""Try to setup and cheat a task, and return its configuration if it's new"""
|
|
@@ -84,10 +113,5 @@ def generate_task_configs(task_class, num_configs=1000, task_type="sort"):
|
|
|
84
113
|
|
|
85
114
|
|
|
86
115
|
if __name__ == "__main__":
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
pool.starmap(
|
|
90
|
-
generate_task_configs,
|
|
91
|
-
[(task, 1, "sort") for task in SORT_TASKS]
|
|
92
|
-
+ [(task, 1, "filter") for task in FILTER_TASKS],
|
|
93
|
-
)
|
|
116
|
+
for task in SORT_TASKS:
|
|
117
|
+
generate_sort_task_configs(task)
|
{browsergym_workarena-0.1.0rc6.dist-info → browsergym_workarena-0.1.0rc7.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: browsergym-workarena
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0rc7
|
|
4
4
|
Summary: WorkArena benchmark for BrowserGym
|
|
5
5
|
Project-URL: homepage, https://github.com/ServiceNow/WorkArena
|
|
6
6
|
Author: Léo Boisvert, Alex Drouin, Maxime Gasse, Alex Lacoste, Manuel Del Verme
|
|
@@ -13,7 +13,7 @@ Classifier: Operating System :: OS Independent
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
15
15
|
Requires-Python: >3.7
|
|
16
|
-
Requires-Dist: browsergym-core==0.1.
|
|
16
|
+
Requires-Dist: browsergym-core==0.1.0rc7
|
|
17
17
|
Requires-Dist: english-words>=2.0.1
|
|
18
18
|
Requires-Dist: numpy>=1.14
|
|
19
19
|
Requires-Dist: requests>=2.31
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
browsergym/workarena/__init__.py,sha256=
|
|
1
|
+
browsergym/workarena/__init__.py,sha256=l39ZSmrUH4_q5Qt8ARy13BJRzEbqpabL8FDkNV5Ndp0,701
|
|
2
2
|
browsergym/workarena/config.py,sha256=WqgapFIC_48dqmprtTxFoMDGY79FAqvUy1hpRQ1GPoA,6571
|
|
3
|
-
browsergym/workarena/install.py,sha256=
|
|
3
|
+
browsergym/workarena/install.py,sha256=OiBfJfxc2dA2ONPTtdrhnrPdTiChiNHxcx0KOvtPtZU,21373
|
|
4
4
|
browsergym/workarena/instance.py,sha256=Qw4lzHhgnl8IuiWOelsmzCJce3jXYivYYwtfTPt2H-s,4314
|
|
5
5
|
browsergym/workarena/utils.py,sha256=UXV-loPmwFCGF8E874QcyACmVS4BBHpPrW6BofKMADY,2289
|
|
6
6
|
browsergym/workarena/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -13,11 +13,11 @@ browsergym/workarena/data_files/setup_files/forms/expected_problem_form_fields.j
|
|
|
13
13
|
browsergym/workarena/data_files/setup_files/forms/expected_user_form_fields.json,sha256=kBlWjNYSfHixMs7Ep9KZYc9eNKjKA1rSb090BeVplcI,317
|
|
14
14
|
browsergym/workarena/data_files/setup_files/knowledge/kb_autopublish_workflow.xml,sha256=zMSoA3lfg4-Fvs7egnR286CPzzDHoTk6ffKnODWrunM,11500
|
|
15
15
|
browsergym/workarena/data_files/setup_files/knowledge/knowledge_base.json,sha256=HHUH6ctyjea8R5oyhVCDedC__lGa_W9jaCGNfUVst50,474939
|
|
16
|
-
browsergym/workarena/data_files/setup_files/lists/expected_asset_list_columns.json,sha256=
|
|
17
|
-
browsergym/workarena/data_files/setup_files/lists/expected_change_request_list_columns.json,sha256=
|
|
18
|
-
browsergym/workarena/data_files/setup_files/lists/expected_hardware_list_columns.json,sha256=
|
|
19
|
-
browsergym/workarena/data_files/setup_files/lists/expected_incident_list_columns.json,sha256=
|
|
20
|
-
browsergym/workarena/data_files/setup_files/lists/expected_service_catalog_list_columns.json,sha256=
|
|
16
|
+
browsergym/workarena/data_files/setup_files/lists/expected_asset_list_columns.json,sha256=E9rWJjiCz6U1g3PvpLYvghpyTc7ypoda33z_giyRCcQ,613
|
|
17
|
+
browsergym/workarena/data_files/setup_files/lists/expected_change_request_list_columns.json,sha256=b-71gyEcNYuvvi9aycBD59qOcioLtqzqCR3GHq9-AL4,865
|
|
18
|
+
browsergym/workarena/data_files/setup_files/lists/expected_hardware_list_columns.json,sha256=EgLYFRiIFKuXwrUnxts2Hg224BCdrjljB25Ny9PPaAQ,970
|
|
19
|
+
browsergym/workarena/data_files/setup_files/lists/expected_incident_list_columns.json,sha256=DJAG4sf6bEeq9oQkbbzZkDL7un29Q-6wuMhhd8Cy244,500
|
|
20
|
+
browsergym/workarena/data_files/setup_files/lists/expected_service_catalog_list_columns.json,sha256=sncClj2ekwQr3WQSwBX18N2Dd4TvUlhWQrne0vtEgAA,538
|
|
21
21
|
browsergym/workarena/data_files/setup_files/lists/expected_user_list_columns.json,sha256=L4yWNhOczhgC4gKOikrRgX2p2jFxaJ5XSsMM20zwjV4,1068
|
|
22
22
|
browsergym/workarena/data_files/task_configs/all_menu.json,sha256=LRSnt05rFL4uE5f25f9Zj8RkrLKsBvZtrrwGdZ0a53E,270388
|
|
23
23
|
browsergym/workarena/data_files/task_configs/create_change_request_task.json,sha256=LMxS2YiG8_eH0fhXBis1fyAXE_XYZPwMmMuD2QuzdDY,6306733
|
|
@@ -42,24 +42,24 @@ browsergym/workarena/data_files/task_configs/order_ipad_pro_task.json,sha256=gR5
|
|
|
42
42
|
browsergym/workarena/data_files/task_configs/order_loaner_laptop_task.json,sha256=g_BDRnvn5wm7rRcISdmT197-4MDe2QfsWmY5FnCG7Tc,183107
|
|
43
43
|
browsergym/workarena/data_files/task_configs/order_sales_laptop_task.json,sha256=6IGZg5NE2pjrUeDyOajk3Z2F4TCjqBRLS9VPh7lEu5Q,707828
|
|
44
44
|
browsergym/workarena/data_files/task_configs/order_standard_laptop_task.json,sha256=qSh8lM13RgQyaKAzNIwAM0B84iZvSOgY1FQEAGeawaA,516203
|
|
45
|
-
browsergym/workarena/data_files/task_configs/sort_asset_list_task.json,sha256=
|
|
46
|
-
browsergym/workarena/data_files/task_configs/sort_change_request_list_task.json,sha256=
|
|
47
|
-
browsergym/workarena/data_files/task_configs/sort_hardware_list_task.json,sha256=
|
|
48
|
-
browsergym/workarena/data_files/task_configs/sort_incident_list_task.json,sha256=
|
|
49
|
-
browsergym/workarena/data_files/task_configs/sort_service_catalog_item_list_task.json,sha256=
|
|
50
|
-
browsergym/workarena/data_files/task_configs/sort_user_list_task.json,sha256=
|
|
45
|
+
browsergym/workarena/data_files/task_configs/sort_asset_list_task.json,sha256=CxGupg15OFAT8z0ddieTJnIOQ1xHqCJJkqPgZI1sJNA,44721
|
|
46
|
+
browsergym/workarena/data_files/task_configs/sort_change_request_list_task.json,sha256=dmYPzs86MGzD-j_h8bEiynH9LWdfm12a2Z5PkSJ7-dc,45862
|
|
47
|
+
browsergym/workarena/data_files/task_configs/sort_hardware_list_task.json,sha256=iE5RmskNfiw-6CajMgmB75oxyJ8qu5JIjJugHf1NNPQ,45127
|
|
48
|
+
browsergym/workarena/data_files/task_configs/sort_incident_list_task.json,sha256=zh2GnqXM8BRj7C6vnIyrYD-Yo9rxe09rT4zXoCmveTA,45205
|
|
49
|
+
browsergym/workarena/data_files/task_configs/sort_service_catalog_item_list_task.json,sha256=c0tNR4c7nrOw922VER8vpG6KNuv62399bJBJ4rJcgC0,46700
|
|
50
|
+
browsergym/workarena/data_files/task_configs/sort_user_list_task.json,sha256=qcSQEtSjg0Fu4SeBMjjMukD7ndKkYFdiX4DBRDftqbU,44336
|
|
51
51
|
browsergym/workarena/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
52
|
browsergym/workarena/tasks/base.py,sha256=O0IDwvSIRrHUvFRzIsr0Yl9ph59IacpC52O_xlFmjTU,3419
|
|
53
|
-
browsergym/workarena/tasks/form.py,sha256=
|
|
53
|
+
browsergym/workarena/tasks/form.py,sha256=eRm0j5inqHJzjDmeGxqCTDKK_spxEAKfyqtmrS_xx9k,30599
|
|
54
54
|
browsergym/workarena/tasks/knowledge.py,sha256=lVs058sceJS_DkoBw3lRymmy5rTjLH38Fr7BqaGZikI,5771
|
|
55
|
-
browsergym/workarena/tasks/list.py,sha256=
|
|
55
|
+
browsergym/workarena/tasks/list.py,sha256=59nkZzEtPvOQ7cXjNJLCvy5P9C-ZBZYnazMhSnjXq_0,37108
|
|
56
56
|
browsergym/workarena/tasks/navigation.py,sha256=5n6wIXxF-vZK5OXl-runw6tFdBeH6JdvnBO5dtEJrbw,7384
|
|
57
57
|
browsergym/workarena/tasks/service_catalog.py,sha256=36XsIsKX5OowEJQySoI8-pIuSC34rge8bnkvKS_vU5I,21661
|
|
58
58
|
browsergym/workarena/tasks/scripts/README.md,sha256=-jOtGf9k2zoBhrBkesmfDnr9-s0PhOEi0KWI9xfOw1s,296
|
|
59
59
|
browsergym/workarena/tasks/scripts/extract_all_menu_items.py,sha256=U-GNI_cCYA2Jggtx22MQVEOKcojnYxEC2_YBBd-GCAw,9870
|
|
60
60
|
browsergym/workarena/tasks/scripts/generate_forms.py,sha256=AG1-SDZDX8iEGT0Lq2Xhl5iYTPnQqUDfaGXUtP7ULrg,3697
|
|
61
61
|
browsergym/workarena/tasks/scripts/knowledge.py,sha256=Qrv3AY9i6vjXhitDFITGjNjMvOL6H7FLKCJR8hA6Qdo,1259
|
|
62
|
-
browsergym/workarena/tasks/scripts/list.py,sha256=
|
|
62
|
+
browsergym/workarena/tasks/scripts/list.py,sha256=pKo3x8DEZukb9xc49qSgdYbAlQHIOLLWYccQ1Ygp2Ao,4805
|
|
63
63
|
browsergym/workarena/tasks/scripts/navigation.py,sha256=2GIIGoW6Ad2YpwX99_MTuLoijSk-EgsjfRNiRaYaitE,853
|
|
64
64
|
browsergym/workarena/tasks/scripts/service_catalog.py,sha256=LrNSScDQOxXNdYdMG4j14idw0D7FUbFM1Dn0ESUbJi0,4862
|
|
65
65
|
browsergym/workarena/tasks/scripts/validate.py,sha256=CNC63sGdk0smHl2SloqeSO4Xy1nTDXzLnPoUak_YWoU,7521
|
|
@@ -67,8 +67,8 @@ browsergym/workarena/tasks/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
|
|
|
67
67
|
browsergym/workarena/tasks/utils/debug.py,sha256=EEy7Rt2ETwkorPm0s6y_u0wutl5rDp_PVuM7BvnsbIA,670
|
|
68
68
|
browsergym/workarena/tasks/utils/form.py,sha256=EMi_L6WBvIX9loczyVMGqBbYcb34r3zwVphr2KPh69M,2487
|
|
69
69
|
browsergym/workarena/tasks/utils/js_utils.js,sha256=DTU9oiO1IC-8sAb_CY5KwVWx9jrjdmP8aAEMZZEww_k,1642
|
|
70
|
-
browsergym_workarena-0.1.
|
|
71
|
-
browsergym_workarena-0.1.
|
|
72
|
-
browsergym_workarena-0.1.
|
|
73
|
-
browsergym_workarena-0.1.
|
|
74
|
-
browsergym_workarena-0.1.
|
|
70
|
+
browsergym_workarena-0.1.0rc7.dist-info/METADATA,sha256=oCk7FAnCjbAMoTG7s6KTQZl4NFjrE2xlIYh09msUDF4,7240
|
|
71
|
+
browsergym_workarena-0.1.0rc7.dist-info/WHEEL,sha256=uNdcs2TADwSd5pVaP0Z_kcjcvvTUklh2S7bxZMF8Uj0,87
|
|
72
|
+
browsergym_workarena-0.1.0rc7.dist-info/entry_points.txt,sha256=rjnc1GaWB89r1PO0P_Uwriv-iVzWMhRM7EqUtXluDPs,72
|
|
73
|
+
browsergym_workarena-0.1.0rc7.dist-info/licenses/LICENSE,sha256=sZLFiZHo_1hcxXRhXUDnQYVATUuWwRCdQjBxqxNnNEs,579
|
|
74
|
+
browsergym_workarena-0.1.0rc7.dist-info/RECORD,,
|
{browsergym_workarena-0.1.0rc6.dist-info → browsergym_workarena-0.1.0rc7.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{browsergym_workarena-0.1.0rc6.dist-info → browsergym_workarena-0.1.0rc7.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|