synth-ai 0.2.2.dev0__py3-none-any.whl → 0.2.4.dev2__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 (115) hide show
  1. synth_ai/cli/__init__.py +66 -0
  2. synth_ai/cli/balance.py +205 -0
  3. synth_ai/cli/calc.py +70 -0
  4. synth_ai/cli/demo.py +74 -0
  5. synth_ai/{cli.py → cli/legacy_root_backup.py} +60 -15
  6. synth_ai/cli/man.py +103 -0
  7. synth_ai/cli/recent.py +126 -0
  8. synth_ai/cli/root.py +184 -0
  9. synth_ai/cli/status.py +126 -0
  10. synth_ai/cli/traces.py +136 -0
  11. synth_ai/cli/watch.py +508 -0
  12. synth_ai/config/base_url.py +53 -0
  13. synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +252 -0
  14. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_duckdb_v2_backup.py +413 -0
  15. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +760 -0
  16. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_synth.py +34 -0
  17. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/test_crafter_react_agent_lm_synth.py +1740 -0
  18. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/test_crafter_react_agent_lm_synth_v2_backup.py +1318 -0
  19. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_duckdb_v2_backup.py +386 -0
  20. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +580 -0
  21. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v2_backup.py +1352 -0
  22. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py +4 -4
  23. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/test_crafter_react_agent_openai_v2_backup.py +2551 -0
  24. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py +1 -1
  25. synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +1 -1
  26. synth_ai/environments/examples/crafter_classic/agent_demos/old/traces/session_crafter_episode_16_15227b68-2906-416f-acc4-d6a9b4fa5828_20250725_001154.json +1363 -1
  27. synth_ai/environments/examples/crafter_classic/agent_demos/test_crafter_react_agent.py +3 -3
  28. synth_ai/environments/examples/crafter_classic/environment.py +1 -1
  29. synth_ai/environments/examples/crafter_custom/environment.py +1 -1
  30. synth_ai/environments/examples/enron/dataset/corbt___enron_emails_sample_questions/default/0.0.0/293c9fe8170037e01cc9cf5834e0cd5ef6f1a6bb/dataset_info.json +1 -0
  31. synth_ai/environments/examples/nethack/helpers/achievements.json +64 -0
  32. synth_ai/environments/examples/red/units/test_exploration_strategy.py +1 -1
  33. synth_ai/environments/examples/red/units/test_menu_bug_reproduction.py +5 -5
  34. synth_ai/environments/examples/red/units/test_movement_debug.py +2 -2
  35. synth_ai/environments/examples/red/units/test_retry_movement.py +1 -1
  36. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/available_envs.json +122 -0
  37. synth_ai/environments/examples/sokoban/verified_puzzles.json +54987 -0
  38. synth_ai/environments/service/core_routes.py +1 -1
  39. synth_ai/experimental/synth_oss.py +446 -0
  40. synth_ai/learning/core.py +21 -0
  41. synth_ai/learning/gateway.py +4 -0
  42. synth_ai/learning/prompts/gepa.py +0 -0
  43. synth_ai/learning/prompts/mipro.py +8 -0
  44. synth_ai/lm/__init__.py +3 -0
  45. synth_ai/lm/core/main.py +4 -0
  46. synth_ai/lm/core/main_v3.py +238 -122
  47. synth_ai/lm/core/vendor_clients.py +4 -0
  48. synth_ai/lm/provider_support/openai.py +11 -2
  49. synth_ai/lm/vendors/base.py +7 -0
  50. synth_ai/lm/vendors/openai_standard.py +339 -4
  51. synth_ai/lm/vendors/openai_standard_responses.py +243 -0
  52. synth_ai/lm/vendors/synth_client.py +155 -5
  53. synth_ai/lm/warmup.py +54 -17
  54. synth_ai/tracing/__init__.py +18 -0
  55. synth_ai/tracing_v1/__init__.py +29 -14
  56. synth_ai/tracing_v3/__init__.py +2 -2
  57. synth_ai/tracing_v3/abstractions.py +62 -17
  58. synth_ai/tracing_v3/config.py +13 -7
  59. synth_ai/tracing_v3/db_config.py +6 -6
  60. synth_ai/tracing_v3/hooks.py +1 -1
  61. synth_ai/tracing_v3/llm_call_record_helpers.py +350 -0
  62. synth_ai/tracing_v3/lm_call_record_abstractions.py +257 -0
  63. synth_ai/tracing_v3/session_tracer.py +5 -5
  64. synth_ai/tracing_v3/tests/test_concurrent_operations.py +1 -1
  65. synth_ai/tracing_v3/tests/test_llm_call_records.py +672 -0
  66. synth_ai/tracing_v3/tests/test_session_tracer.py +43 -9
  67. synth_ai/tracing_v3/tests/test_turso_manager.py +1 -1
  68. synth_ai/tracing_v3/turso/manager.py +18 -11
  69. synth_ai/tracing_v3/turso/models.py +1 -0
  70. synth_ai/tui/__main__.py +13 -0
  71. synth_ai/tui/dashboard.py +329 -0
  72. synth_ai/v0/tracing/__init__.py +0 -0
  73. synth_ai/{tracing → v0/tracing}/base_client.py +3 -3
  74. synth_ai/{tracing → v0/tracing}/client_manager.py +1 -1
  75. synth_ai/{tracing → v0/tracing}/context.py +1 -1
  76. synth_ai/{tracing → v0/tracing}/decorators.py +11 -11
  77. synth_ai/v0/tracing/events/__init__.py +0 -0
  78. synth_ai/{tracing → v0/tracing}/events/manage.py +4 -4
  79. synth_ai/{tracing → v0/tracing}/events/scope.py +6 -6
  80. synth_ai/{tracing → v0/tracing}/events/store.py +3 -3
  81. synth_ai/{tracing → v0/tracing}/immediate_client.py +6 -6
  82. synth_ai/{tracing → v0/tracing}/log_client_base.py +2 -2
  83. synth_ai/{tracing → v0/tracing}/retry_queue.py +3 -3
  84. synth_ai/{tracing → v0/tracing}/trackers.py +2 -2
  85. synth_ai/{tracing → v0/tracing}/upload.py +4 -4
  86. synth_ai/v0/tracing_v1/__init__.py +16 -0
  87. synth_ai/{tracing_v1 → v0/tracing_v1}/base_client.py +3 -3
  88. synth_ai/{tracing_v1 → v0/tracing_v1}/client_manager.py +1 -1
  89. synth_ai/{tracing_v1 → v0/tracing_v1}/context.py +1 -1
  90. synth_ai/{tracing_v1 → v0/tracing_v1}/decorators.py +11 -11
  91. synth_ai/v0/tracing_v1/events/__init__.py +0 -0
  92. synth_ai/{tracing_v1 → v0/tracing_v1}/events/manage.py +4 -4
  93. synth_ai/{tracing_v1 → v0/tracing_v1}/events/scope.py +6 -6
  94. synth_ai/{tracing_v1 → v0/tracing_v1}/events/store.py +3 -3
  95. synth_ai/{tracing_v1 → v0/tracing_v1}/immediate_client.py +6 -6
  96. synth_ai/{tracing_v1 → v0/tracing_v1}/log_client_base.py +2 -2
  97. synth_ai/{tracing_v1 → v0/tracing_v1}/retry_queue.py +3 -3
  98. synth_ai/{tracing_v1 → v0/tracing_v1}/trackers.py +2 -2
  99. synth_ai/{tracing_v1 → v0/tracing_v1}/upload.py +4 -4
  100. {synth_ai-0.2.2.dev0.dist-info → synth_ai-0.2.4.dev2.dist-info}/METADATA +100 -5
  101. {synth_ai-0.2.2.dev0.dist-info → synth_ai-0.2.4.dev2.dist-info}/RECORD +115 -75
  102. /synth_ai/{tracing/events/__init__.py → compound/cais.py} +0 -0
  103. /synth_ai/{tracing_v1/events/__init__.py → environments/examples/crafter_classic/debug_translation.py} +0 -0
  104. /synth_ai/{tracing → v0/tracing}/abstractions.py +0 -0
  105. /synth_ai/{tracing → v0/tracing}/config.py +0 -0
  106. /synth_ai/{tracing → v0/tracing}/local.py +0 -0
  107. /synth_ai/{tracing → v0/tracing}/utils.py +0 -0
  108. /synth_ai/{tracing_v1 → v0/tracing_v1}/abstractions.py +0 -0
  109. /synth_ai/{tracing_v1 → v0/tracing_v1}/config.py +0 -0
  110. /synth_ai/{tracing_v1 → v0/tracing_v1}/local.py +0 -0
  111. /synth_ai/{tracing_v1 → v0/tracing_v1}/utils.py +0 -0
  112. {synth_ai-0.2.2.dev0.dist-info → synth_ai-0.2.4.dev2.dist-info}/WHEEL +0 -0
  113. {synth_ai-0.2.2.dev0.dist-info → synth_ai-0.2.4.dev2.dist-info}/entry_points.txt +0 -0
  114. {synth_ai-0.2.2.dev0.dist-info → synth_ai-0.2.4.dev2.dist-info}/licenses/LICENSE +0 -0
  115. {synth_ai-0.2.2.dev0.dist-info → synth_ai-0.2.4.dev2.dist-info}/top_level.txt +0 -0
@@ -23,8 +23,8 @@ from tqdm.asyncio import tqdm_asyncio
23
23
  # Add the src directory to the path
24
24
  sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", "src"))
25
25
 
26
- from synth_ai.zyk import LM
27
- from synth_ai.zyk.lms.tools.base import BaseTool
26
+ from synth_ai.lm.core.main import LM
27
+ from synth_ai.lm.tools.base import BaseTool
28
28
  import numpy as np
29
29
 
30
30
 
@@ -111,7 +111,7 @@ class CrafterConfig:
111
111
  """Add ft: regex pattern to OpenAI naming regexes if not already present."""
112
112
  try:
113
113
  import re
114
- from synth_ai.zyk.lms.core import vendor_clients
114
+ from synth_ai.lm.core import vendor_clients
115
115
 
116
116
  # Check if ft: pattern already exists
117
117
  ft_pattern = re.compile(r"^ft:.*$")
@@ -13,7 +13,7 @@ from .config_logging import safe_compare
13
13
  # Import tracing abstractions
14
14
  from synth_ai.tracing_v3.abstractions import (
15
15
  RuntimeEvent,
16
- SessionEventMessage,
16
+ SessionEventMarkovBlanketMessage,
17
17
  TimeRecord,
18
18
  )
19
19
 
@@ -13,7 +13,7 @@ from synth_ai.environments.examples.crafter_classic.config_logging import safe_c
13
13
  # Import tracing abstractions
14
14
  from synth_ai.tracing_v3.abstractions import (
15
15
  RuntimeEvent,
16
- SessionEventMessage,
16
+ SessionEventMarkovBlanketMessage,
17
17
  TimeRecord,
18
18
  )
19
19
 
@@ -0,0 +1 @@
1
+ {"description": "", "citation": "", "homepage": "", "license": "", "features": {"id": {"dtype": "int32", "_type": "Value"}, "question": {"dtype": "string", "_type": "Value"}, "answer": {"dtype": "string", "_type": "Value"}, "message_ids": {"feature": {"dtype": "string", "_type": "Value"}, "_type": "Sequence"}, "how_realistic": {"dtype": "float32", "_type": "Value"}, "inbox_address": {"dtype": "string", "_type": "Value"}, "query_date": {"dtype": "string", "_type": "Value"}}, "builder_name": "parquet", "dataset_name": "enron_emails_sample_questions", "config_name": "default", "version": {"version_str": "0.0.0", "major": 0, "minor": 0, "patch": 0}, "splits": {"train": {"name": "train", "num_bytes": 1324739, "num_examples": 4390, "dataset_name": "enron_emails_sample_questions"}, "test": {"name": "test", "num_bytes": 537888, "num_examples": 1733, "dataset_name": "enron_emails_sample_questions"}}, "download_checksums": {"hf://datasets/corbt/enron_emails_sample_questions@293c9fe8170037e01cc9cf5834e0cd5ef6f1a6bb/data/train-00000-of-00001.parquet": {"num_bytes": 681490, "checksum": null}, "hf://datasets/corbt/enron_emails_sample_questions@293c9fe8170037e01cc9cf5834e0cd5ef6f1a6bb/data/test-00000-of-00001.parquet": {"num_bytes": 267520, "checksum": null}}, "download_size": 949010, "dataset_size": 1862627, "size_in_bytes": 2811637}
@@ -0,0 +1,64 @@
1
+ {
2
+ "3.4.3": {
3
+ "ascension": 100,
4
+ "dungeons": {
5
+ "astral_plane": 100,
6
+ "earth_plane": 98,
7
+ "air_plane": 96,
8
+ "fire_plane": 94,
9
+ "water_plane": 92,
10
+ "dlvl50": 90,
11
+ "dlvl40": 85,
12
+ "dlvl30": 80,
13
+ "fakewiz2": 75,
14
+ "fakewiz1": 70,
15
+ "deepest_gehennom": 65,
16
+ "into_gehennom": 60,
17
+ "castle": 50,
18
+ "deepest_regular": 40,
19
+ "medusa": 35,
20
+ "quest_permission": 30,
21
+ "quest_finish": 26,
22
+ "quest_locate": 23,
23
+ "quest_portal": 20,
24
+ "oracle": 15,
25
+ "sokoban_finish": 10,
26
+ "sokoban": 5,
27
+ "dlvl10": 3,
28
+ "dlvl5": 1,
29
+ "dlvl1": 0
30
+ },
31
+ "experience_levels": {
32
+ "lvl30": 52.0,
33
+ "lvl29": 51.0,
34
+ "lvl28": 50.0,
35
+ "lvl27": 49.0,
36
+ "lvl26": 48.0,
37
+ "lvl25": 47.0,
38
+ "lvl24": 46.0,
39
+ "lvl23": 45.0,
40
+ "lvl22": 44.0,
41
+ "lvl21": 43.0,
42
+ "lvl20": 42.0,
43
+ "lvl19": 41.0,
44
+ "lvl18": 40.0,
45
+ "lvl17": 39.0,
46
+ "lvl16": 38.0,
47
+ "lvl15": 37.0,
48
+ "lvl14": 36.0,
49
+ "lvl13": 33.0,
50
+ "lvl12": 30.0,
51
+ "lvl11": 27.0,
52
+ "lvl10": 24.0,
53
+ "lvl9": 21.0,
54
+ "lvl8": 18.0,
55
+ "lvl7": 15.0,
56
+ "lvl6": 12.0,
57
+ "lvl5": 9.0,
58
+ "lvl4": 6.0,
59
+ "lvl3": 3.0,
60
+ "lvl2": 1.0,
61
+ "lvl1": 0.0
62
+ }
63
+ }
64
+ }
@@ -79,7 +79,7 @@ async def test_exploration_when_stuck():
79
79
  obs_payload = await env.initialize()
80
80
 
81
81
  if "error" in obs_payload:
82
- pytest.fail(f"Environment initialization failed: {obs_payload['error']}")
82
+ pytest.fail(f"Environment initialization failed: {obs_payload['error']}") # type: ignore[no-untyped-call]
83
83
 
84
84
  print("[DEBUG] Environment initialized successfully")
85
85
 
@@ -134,7 +134,7 @@ async def test_menu_close_bug_reproduction():
134
134
  print("Initializing environment...")
135
135
  obs_payload = await env.initialize()
136
136
  if "error" in obs_payload:
137
- pytest.fail(f"Environment initialization failed: {obs_payload['error']}")
137
+ pytest.fail(f"Environment initialization failed: {obs_payload['error']}") # type: ignore[no-untyped-call]
138
138
 
139
139
  initial_menu_state = obs_payload.get("menu_state")
140
140
  initial_screen_hash = obs_payload.get("screen_hash")
@@ -238,7 +238,7 @@ async def test_menu_close_bug_reproduction():
238
238
  print("\n⚠️ Test inconclusive: No menu was open initially")
239
239
 
240
240
  except Exception as e:
241
- pytest.fail(f"Test failed with exception: {e}")
241
+ pytest.fail(f"Test failed with exception: {e}") # type: ignore[no-untyped-call]
242
242
 
243
243
 
244
244
  @pytest.mark.asyncio
@@ -337,7 +337,7 @@ async def test_menu_close_bug_fix_verification():
337
337
  print("Initializing environment...")
338
338
  obs_payload = await env.initialize()
339
339
  if "error" in obs_payload:
340
- pytest.fail(f"Environment initialization failed: {obs_payload['error']}")
340
+ pytest.fail(f"Environment initialization failed: {obs_payload['error']}") # type: ignore[no-untyped-call]
341
341
 
342
342
  initial_menu_state = obs_payload.get("menu_state")
343
343
  initial_screen_hash = obs_payload.get("screen_hash")
@@ -359,7 +359,7 @@ async def test_menu_close_bug_fix_verification():
359
359
  step_result = await env.step(PressButtonCall("B"))
360
360
 
361
361
  if "error" in step_result:
362
- pytest.fail(f"Step failed: {step_result['error']}")
362
+ pytest.fail(f"Step failed: {step_result['error']}") # type: ignore[no-untyped-call]
363
363
 
364
364
  final_menu_state = step_result.get("menu_state")
365
365
  final_screen_hash = step_result.get("screen_hash")
@@ -388,7 +388,7 @@ async def test_menu_close_bug_fix_verification():
388
388
  print(" This might indicate an actual menu was open and closed")
389
389
 
390
390
  except Exception as e:
391
- pytest.fail(f"Test failed with exception: {e}")
391
+ pytest.fail(f"Test failed with exception: {e}") # type: ignore[no-untyped-call]
392
392
 
393
393
 
394
394
  @pytest.mark.asyncio
@@ -127,7 +127,7 @@ async def test_deterministic_left_movement():
127
127
  obs_payload = await env.initialize()
128
128
 
129
129
  if "error" in obs_payload:
130
- pytest.fail(f"Environment initialization failed: {obs_payload['error']}")
130
+ pytest.fail(f"Environment initialization failed: {obs_payload['error']}") # type: ignore[no-untyped-call]
131
131
 
132
132
  print("[DEBUG] Environment initialized successfully")
133
133
  print(f"[DEBUG] Initial observation keys: {list(obs_payload.keys())}")
@@ -158,7 +158,7 @@ async def test_deterministic_left_movement():
158
158
  step_result = await env.step([[PressButtonCall("LEFT")]])
159
159
 
160
160
  if "error" in step_result:
161
- pytest.fail(f"Environment step {step} failed: {step_result['error']}")
161
+ pytest.fail(f"Environment step {step} failed: {step_result['error']}") # type: ignore[no-untyped-call]
162
162
 
163
163
  # Get new state
164
164
  new_pub = step_result["public"]
@@ -89,7 +89,7 @@ async def test_movement_with_retry():
89
89
  obs_payload = await env.initialize()
90
90
 
91
91
  if "error" in obs_payload:
92
- pytest.fail(f"Environment initialization failed: {obs_payload['error']}")
92
+ pytest.fail(f"Environment initialization failed: {obs_payload['error']}") # type: ignore[no-untyped-call]
93
93
 
94
94
  print("[DEBUG] Environment initialized successfully")
95
95
 
@@ -0,0 +1,122 @@
1
+ [
2
+ {
3
+ "id": "Sokoban-v0",
4
+ "entry_point": "gym_sokoban.envs:SokobanEnv1"
5
+ },
6
+ {
7
+ "id": "Sokoban-v1",
8
+ "entry_point": "gym_sokoban.envs:SokobanEnv"
9
+ },
10
+ {
11
+ "id": "Sokoban-v2",
12
+ "entry_point": "gym_sokoban.envs:SokobanEnv2"
13
+ },
14
+ {
15
+ "id": "Sokoban-small-v0",
16
+ "entry_point": "gym_sokoban.envs:SokobanEnv_Small0"
17
+ },
18
+ {
19
+ "id": "Sokoban-small-v1",
20
+ "entry_point": "gym_sokoban.envs:SokobanEnv_Small1"
21
+ },
22
+ {
23
+ "id": "Sokoban-large-v0",
24
+ "entry_point": "gym_sokoban.envs:SokobanEnv_Large0"
25
+ },
26
+ {
27
+ "id": "Sokoban-large-v1",
28
+ "entry_point": "gym_sokoban.envs:SokobanEnv_Large1"
29
+ },
30
+ {
31
+ "id": "Sokoban-large-v2",
32
+ "entry_point": "gym_sokoban.envs:SokobanEnv_Large2"
33
+ },
34
+ {
35
+ "id": "Sokoban-huge-v0",
36
+ "entry_point": "gym_sokoban.envs:SokobanEnv_Huge0"
37
+ },
38
+ {
39
+ "id": "FixedTarget-Sokoban-v0",
40
+ "entry_point": "gym_sokoban.envs:FixedTargets_Env_v0"
41
+ },
42
+ {
43
+ "id": "FixedTarget-Sokoban-v1",
44
+ "entry_point": "gym_sokoban.envs:FixedTargets_Env_v1"
45
+ },
46
+ {
47
+ "id": "FixedTarget-Sokoban-v2",
48
+ "entry_point": "gym_sokoban.envs:FixedTargets_Env_v2"
49
+ },
50
+ {
51
+ "id": "FixedTarget-Sokoban-v3",
52
+ "entry_point": "gym_sokoban.envs:FixedTargets_Env_v3"
53
+ },
54
+ {
55
+ "id": "PushAndPull-Sokoban-v0",
56
+ "entry_point": "gym_sokoban.envs:PushAndPull_Env_v0"
57
+ },
58
+ {
59
+ "id": "PushAndPull-Sokoban-v1",
60
+ "entry_point": "gym_sokoban.envs:PushAndPull_Env_v1"
61
+ },
62
+ {
63
+ "id": "PushAndPull-Sokoban-v2",
64
+ "entry_point": "gym_sokoban.envs:PushAndPull_Env_v2"
65
+ },
66
+ {
67
+ "id": "PushAndPull-Sokoban-v3",
68
+ "entry_point": "gym_sokoban.envs:PushAndPull_Env_v3"
69
+ },
70
+ {
71
+ "id": "PushAndPull-Sokoban-v4",
72
+ "entry_point": "gym_sokoban.envs:PushAndPull_Env_v4"
73
+ },
74
+ {
75
+ "id": "PushAndPull-Sokoban-v5",
76
+ "entry_point": "gym_sokoban.envs:PushAndPull_Env_v5"
77
+ },
78
+ {
79
+ "id": "TwoPlayer-Sokoban-v0",
80
+ "entry_point": "gym_sokoban.envs:TwoPlayer_Env0"
81
+ },
82
+ {
83
+ "id": "TwoPlayer-Sokoban-v1",
84
+ "entry_point": "gym_sokoban.envs:TwoPlayer_Env1"
85
+ },
86
+ {
87
+ "id": "TwoPlayer-Sokoban-v2",
88
+ "entry_point": "gym_sokoban.envs:TwoPlayer_Env2"
89
+ },
90
+ {
91
+ "id": "TwoPlayer-Sokoban-v3",
92
+ "entry_point": "gym_sokoban.envs:TwoPlayer_Env3"
93
+ },
94
+ {
95
+ "id": "TwoPlayer-Sokoban-v4",
96
+ "entry_point": "gym_sokoban.envs:TwoPlayer_Env4"
97
+ },
98
+ {
99
+ "id": "TwoPlayer-Sokoban-v5",
100
+ "entry_point": "gym_sokoban.envs:TwoPlayer_Env5"
101
+ },
102
+ {
103
+ "id": "Boxoban-Train-v0",
104
+ "entry_point": "gym_sokoban.envs:Boxban_Env0"
105
+ },
106
+ {
107
+ "id": "Boxoban-Test-v0",
108
+ "entry_point": "gym_sokoban.envs:Boxban_Env0_test"
109
+ },
110
+ {
111
+ "id": "Boxoban-Val-v0",
112
+ "entry_point": "gym_sokoban.envs:Boxban_Env0_val"
113
+ },
114
+ {
115
+ "id": "Boxoban-Train-v1",
116
+ "entry_point": "gym_sokoban.envs:Boxban_Env1"
117
+ },
118
+ {
119
+ "id": "Boxoban-Val-v1",
120
+ "entry_point": "gym_sokoban.envs:Boxban_Env1_val"
121
+ }
122
+ ]