synth-ai 0.2.4.dev6__tar.gz → 0.2.4.dev8__tar.gz

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 (441) hide show
  1. synth_ai-0.2.4.dev8/PKG-INFO +635 -0
  2. synth_ai-0.2.4.dev8/README.md +563 -0
  3. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/pyproject.toml +20 -13
  4. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/__init__.py +18 -9
  5. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/__init__.py +10 -5
  6. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/balance.py +25 -32
  7. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/calc.py +2 -3
  8. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/demo.py +3 -5
  9. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/legacy_root_backup.py +58 -32
  10. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/man.py +22 -19
  11. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/recent.py +9 -8
  12. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/root.py +58 -13
  13. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/status.py +13 -6
  14. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/traces.py +45 -21
  15. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/cli/watch.py +40 -37
  16. synth_ai-0.2.4.dev8/synth_ai/config/base_url.py +98 -0
  17. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/core/experiment.py +1 -2
  18. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/__init__.py +2 -6
  19. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/artifacts/base.py +3 -1
  20. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/registry.py +19 -20
  21. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/resources/sqlite.py +2 -3
  22. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/rewards/core.py +3 -2
  23. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/tools/__init__.py +6 -4
  24. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +13 -15
  25. {synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old → synth_ai-0.2.4.dev8/synth_ai/environments/examples/crafter_classic/agent_demos}/crafter_comprehensive_evaluation.py +2 -1
  26. {synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old → synth_ai-0.2.4.dev8/synth_ai/environments/examples/crafter_classic/agent_demos}/crafter_evaluation_browser.py +8 -8
  27. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_framework.py +7 -8
  28. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +104 -140
  29. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py +9 -8
  30. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/compare_experiments.py +3 -2
  31. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py +19 -13
  32. {synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old → synth_ai-0.2.4.dev8/synth_ai/environments/examples/crafter_classic/agent_demos}/crafter_quick_evaluation.py +2 -1
  33. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py +21 -19
  34. {synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old → synth_ai-0.2.4.dev8/synth_ai/environments/examples/crafter_classic/agent_demos}/crafter_trace_evaluation.py +30 -30
  35. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +11 -9
  36. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/engine.py +13 -13
  37. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py +1 -0
  38. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/engine_helpers/action_map.py +2 -1
  39. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/engine_helpers/serialization.py +2 -1
  40. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py +3 -2
  41. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/environment.py +16 -15
  42. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/taskset.py +2 -2
  43. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py +2 -3
  44. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py +2 -1
  45. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py +2 -2
  46. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/crafter/__init__.py +2 -2
  47. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/crafter/config.py +2 -2
  48. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/crafter/env.py +1 -5
  49. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/crafter/objects.py +1 -2
  50. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/crafter/worldgen.py +1 -2
  51. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/dataset_builder.py +5 -5
  52. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/environment.py +13 -13
  53. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/run_dataset.py +5 -5
  54. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/enron/art_helpers/local_email_db.py +5 -4
  55. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/enron/art_helpers/types_enron.py +2 -1
  56. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/enron/engine.py +18 -14
  57. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/enron/environment.py +12 -11
  58. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/enron/taskset.py +7 -7
  59. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/enron/units/keyword_stats.py +4 -3
  60. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_evaluation_framework.py +9 -9
  61. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_quick_evaluation.py +2 -1
  62. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_react_agent.py +6 -6
  63. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_trace_evaluation.py +4 -3
  64. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/engine.py +6 -6
  65. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/puzzle_loader.py +3 -2
  66. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/achievements.py +1 -1
  67. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/agent_demos/nethack_evaluation_framework.py +10 -10
  68. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/agent_demos/nethack_react_agent.py +9 -10
  69. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/engine.py +8 -7
  70. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/environment.py +10 -9
  71. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/helpers/__init__.py +8 -9
  72. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/helpers/nle_wrapper.py +2 -1
  73. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/helpers/observation_utils.py +1 -1
  74. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/helpers/recording_wrapper.py +3 -4
  75. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/helpers/trajectory_recorder.py +6 -5
  76. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/helpers/visualization/replay_viewer.py +5 -5
  77. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/helpers/visualization/visualizer.py +7 -6
  78. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/taskset.py +5 -5
  79. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine.py +9 -8
  80. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_components.py +2 -1
  81. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/adaptive_rewards.py +2 -1
  82. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/battle_rewards.py +2 -1
  83. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/composite_rewards.py +2 -1
  84. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/economy_rewards.py +2 -1
  85. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/efficiency_rewards.py +2 -1
  86. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/exploration_rewards.py +2 -1
  87. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/novelty_rewards.py +2 -1
  88. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_rewards.py +2 -1
  89. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/pokemon_rewards.py +2 -1
  90. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/social_rewards.py +2 -1
  91. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/story_rewards.py +2 -1
  92. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/screen_analysis.py +3 -2
  93. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/state_extraction.py +2 -1
  94. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/environment.py +18 -15
  95. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/taskset.py +5 -3
  96. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/agent_demos/sokoban_full_eval.py +26 -27
  97. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine.py +16 -13
  98. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/room_utils.py +3 -2
  99. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/__init__.py +2 -1
  100. synth_ai-0.2.4.dev8/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +3 -0
  101. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/boxoban_env.py +7 -5
  102. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/room_utils.py +2 -1
  103. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env.py +5 -4
  104. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_fixed_targets.py +3 -2
  105. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_pull.py +2 -1
  106. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_two_player.py +5 -4
  107. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/environment.py +15 -14
  108. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/generate_verified_puzzles.py +5 -3
  109. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/puzzle_loader.py +3 -2
  110. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/taskset.py +13 -10
  111. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/units/astar_common.py +2 -1
  112. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/tictactoe/engine.py +6 -6
  113. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/tictactoe/environment.py +8 -7
  114. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/tictactoe/taskset.py +6 -5
  115. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/verilog/engine.py +4 -3
  116. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/verilog/environment.py +11 -10
  117. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/verilog/taskset.py +14 -12
  118. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/wordle/__init__.py +5 -5
  119. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/wordle/engine.py +32 -25
  120. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/wordle/environment.py +21 -16
  121. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +6 -6
  122. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/wordle/taskset.py +20 -12
  123. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/reproducibility/core.py +1 -1
  124. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/reproducibility/tree.py +21 -21
  125. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/service/app.py +3 -2
  126. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/service/core_routes.py +104 -110
  127. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/service/external_registry.py +1 -2
  128. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/stateful/core.py +1 -2
  129. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/tasks/core.py +14 -12
  130. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/tasks/filters.py +6 -4
  131. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/tasks/utils.py +13 -11
  132. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/evals/base.py +2 -3
  133. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/experimental/synth_oss.py +4 -4
  134. synth_ai-0.2.4.dev8/synth_ai/http.py +102 -0
  135. synth_ai-0.2.4.dev8/synth_ai/inference/__init__.py +7 -0
  136. synth_ai-0.2.4.dev8/synth_ai/inference/client.py +20 -0
  137. synth_ai-0.2.4.dev8/synth_ai/jobs/client.py +246 -0
  138. synth_ai-0.2.4.dev8/synth_ai/learning/__init__.py +24 -0
  139. synth_ai-0.2.4.dev8/synth_ai/learning/client.py +149 -0
  140. synth_ai-0.2.4.dev8/synth_ai/learning/config.py +43 -0
  141. synth_ai-0.2.4.dev8/synth_ai/learning/constants.py +29 -0
  142. synth_ai-0.2.4.dev8/synth_ai/learning/ft_client.py +59 -0
  143. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/gateway.py +1 -3
  144. synth_ai-0.2.4.dev8/synth_ai/learning/health.py +43 -0
  145. synth_ai-0.2.4.dev8/synth_ai/learning/jobs.py +205 -0
  146. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/prompts/banking77_injection_eval.py +15 -10
  147. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +26 -14
  148. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/prompts/mipro.py +61 -52
  149. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/prompts/random_search.py +42 -43
  150. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/prompts/run_mipro_banking77.py +32 -20
  151. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/prompts/run_random_search_banking77.py +71 -52
  152. synth_ai-0.2.4.dev8/synth_ai/learning/rl_client.py +256 -0
  153. synth_ai-0.2.4.dev8/synth_ai/learning/sse.py +58 -0
  154. synth_ai-0.2.4.dev8/synth_ai/learning/validators.py +48 -0
  155. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/__init__.py +5 -5
  156. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/caching/ephemeral.py +9 -9
  157. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/caching/handler.py +20 -20
  158. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/caching/persistent.py +10 -10
  159. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/config.py +3 -3
  160. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/constants.py +7 -7
  161. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/core/all.py +17 -3
  162. synth_ai-0.2.4.dev8/synth_ai/lm/core/exceptions.py +7 -0
  163. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/core/main.py +26 -41
  164. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/core/main_v3.py +33 -10
  165. synth_ai-0.2.4.dev8/synth_ai/lm/core/synth_models.py +48 -0
  166. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/core/vendor_clients.py +26 -22
  167. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/injection.py +7 -8
  168. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/overrides.py +21 -19
  169. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/provider_support/__init__.py +1 -1
  170. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/provider_support/anthropic.py +15 -15
  171. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/provider_support/openai.py +23 -21
  172. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/structured_outputs/handler.py +34 -32
  173. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/structured_outputs/inject.py +24 -27
  174. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/structured_outputs/rehabilitate.py +19 -15
  175. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/tools/base.py +17 -16
  176. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/unified_interface.py +17 -18
  177. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/base.py +20 -18
  178. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/core/anthropic_api.py +36 -27
  179. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/core/gemini_api.py +31 -36
  180. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/core/mistral_api.py +19 -19
  181. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/core/openai_api.py +42 -13
  182. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/openai_standard.py +158 -101
  183. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/openai_standard_responses.py +74 -61
  184. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/retries.py +9 -1
  185. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/supported/custom_endpoint.py +38 -28
  186. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/supported/deepseek.py +10 -10
  187. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/supported/grok.py +8 -8
  188. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/supported/ollama.py +2 -1
  189. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/supported/openrouter.py +11 -9
  190. synth_ai-0.2.4.dev8/synth_ai/lm/vendors/synth_client.py +808 -0
  191. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/warmup.py +8 -7
  192. synth_ai-0.2.4.dev8/synth_ai/rl/__init__.py +30 -0
  193. synth_ai-0.2.4.dev8/synth_ai/rl/contracts.py +32 -0
  194. synth_ai-0.2.4.dev8/synth_ai/rl/env_keys.py +137 -0
  195. synth_ai-0.2.4.dev8/synth_ai/rl/secrets.py +19 -0
  196. synth_ai-0.2.4.dev8/synth_ai/scripts/verify_rewards.py +100 -0
  197. synth_ai-0.2.4.dev8/synth_ai/task/__init__.py +10 -0
  198. synth_ai-0.2.4.dev8/synth_ai/task/contracts.py +120 -0
  199. synth_ai-0.2.4.dev8/synth_ai/task/health.py +28 -0
  200. synth_ai-0.2.4.dev8/synth_ai/task/validators.py +12 -0
  201. synth_ai-0.2.4.dev8/synth_ai/tracing/__init__.py +30 -0
  202. synth_ai-0.2.4.dev8/synth_ai/tracing_v1/__init__.py +33 -0
  203. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/__init__.py +7 -7
  204. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/abstractions.py +56 -52
  205. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/config.py +4 -2
  206. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/db_config.py +6 -8
  207. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/decorators.py +29 -30
  208. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/examples/basic_usage.py +12 -12
  209. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/hooks.py +24 -22
  210. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/llm_call_record_helpers.py +85 -98
  211. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/lm_call_record_abstractions.py +2 -4
  212. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/migration_helper.py +3 -5
  213. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/replica_sync.py +30 -32
  214. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/session_tracer.py +158 -31
  215. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/storage/base.py +8 -7
  216. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/storage/config.py +4 -4
  217. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/storage/factory.py +4 -4
  218. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/storage/utils.py +9 -9
  219. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/turso/daemon.py +9 -9
  220. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/turso/manager.py +278 -48
  221. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/turso/models.py +77 -19
  222. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/utils.py +5 -5
  223. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing_v1 → synth_ai-0.2.4.dev8/synth_ai/v0/tracing}/abstractions.py +28 -28
  224. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/base_client.py +9 -9
  225. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing_v1 → synth_ai-0.2.4.dev8/synth_ai/v0/tracing}/client_manager.py +7 -7
  226. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing_v1 → synth_ai-0.2.4.dev8/synth_ai/v0/tracing}/config.py +7 -7
  227. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing_v1 → synth_ai-0.2.4.dev8/synth_ai/v0/tracing}/context.py +6 -6
  228. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/decorators.py +6 -5
  229. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing_v1 → synth_ai-0.2.4.dev8/synth_ai/v0/tracing}/events/manage.py +1 -1
  230. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing_v1 → synth_ai-0.2.4.dev8/synth_ai/v0/tracing}/events/store.py +5 -4
  231. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/immediate_client.py +4 -5
  232. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/local.py +3 -3
  233. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing_v1 → synth_ai-0.2.4.dev8/synth_ai/v0/tracing}/log_client_base.py +4 -5
  234. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/retry_queue.py +5 -6
  235. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/trackers.py +25 -25
  236. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/upload.py +6 -0
  237. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing → synth_ai-0.2.4.dev8/synth_ai/v0/tracing_v1}/abstractions.py +28 -28
  238. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/base_client.py +9 -9
  239. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing → synth_ai-0.2.4.dev8/synth_ai/v0/tracing_v1}/client_manager.py +7 -7
  240. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing → synth_ai-0.2.4.dev8/synth_ai/v0/tracing_v1}/config.py +7 -7
  241. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing → synth_ai-0.2.4.dev8/synth_ai/v0/tracing_v1}/context.py +6 -6
  242. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/decorators.py +7 -6
  243. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing → synth_ai-0.2.4.dev8/synth_ai/v0/tracing_v1}/events/manage.py +1 -1
  244. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing → synth_ai-0.2.4.dev8/synth_ai/v0/tracing_v1}/events/store.py +5 -4
  245. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/immediate_client.py +4 -5
  246. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/local.py +3 -3
  247. {synth_ai-0.2.4.dev6/synth_ai/v0/tracing → synth_ai-0.2.4.dev8/synth_ai/v0/tracing_v1}/log_client_base.py +4 -5
  248. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/retry_queue.py +5 -6
  249. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/trackers.py +25 -25
  250. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/upload.py +25 -24
  251. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/zyk/__init__.py +1 -0
  252. synth_ai-0.2.4.dev8/synth_ai.egg-info/PKG-INFO +635 -0
  253. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai.egg-info/SOURCES.txt +24 -24
  254. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai.egg-info/requires.txt +2 -12
  255. synth_ai-0.2.4.dev6/PKG-INFO +0 -203
  256. synth_ai-0.2.4.dev6/README.md +0 -123
  257. synth_ai-0.2.4.dev6/synth_ai/config/base_url.py +0 -53
  258. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_duckdb_v2_backup.py +0 -413
  259. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_synth.py +0 -34
  260. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_duckdb_v2_backup.py +0 -386
  261. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v2_backup.py +0 -1352
  262. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_config.toml +0 -4
  263. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_lm_config.toml +0 -25
  264. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old/duckdb_filter_config.toml +0 -33
  265. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_config_strict.toml +0 -42
  266. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old/gemini_ft_config.toml +0 -31
  267. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old/practical_filter_config.toml +0 -33
  268. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old/test_comparison_config.toml +0 -20
  269. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos/old/test_filter_config.toml +0 -28
  270. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/old/engine_serialization_patch.py +0 -141
  271. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/old/engine_serialization_patch_v2.py +0 -243
  272. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/old/environment_v3.py +0 -260
  273. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/old/filter_traces_fbc.py +0 -0
  274. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/old/trace_hooks.py +0 -377
  275. synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/old/world_config_patch.py +0 -533
  276. synth_ai-0.2.4.dev6/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +0 -3
  277. synth_ai-0.2.4.dev6/synth_ai/lm/core/exceptions.py +0 -9
  278. synth_ai-0.2.4.dev6/synth_ai/lm/vendors/synth_client.py +0 -458
  279. synth_ai-0.2.4.dev6/synth_ai/tracing/__init__.py +0 -18
  280. synth_ai-0.2.4.dev6/synth_ai/tracing_v1/__init__.py +0 -31
  281. synth_ai-0.2.4.dev6/synth_ai/tui/__init__.py +0 -1
  282. synth_ai-0.2.4.dev6/synth_ai/tui/__main__.py +0 -13
  283. synth_ai-0.2.4.dev6/synth_ai/tui/cli/__init__.py +0 -1
  284. synth_ai-0.2.4.dev6/synth_ai/tui/cli/query_experiments.py +0 -165
  285. synth_ai-0.2.4.dev6/synth_ai/tui/cli/query_experiments_v3.py +0 -165
  286. synth_ai-0.2.4.dev6/synth_ai/tui/dashboard.py +0 -329
  287. synth_ai-0.2.4.dev6/synth_ai.egg-info/PKG-INFO +0 -203
  288. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/LICENSE +0 -0
  289. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/MANIFEST.in +0 -0
  290. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/setup.cfg +0 -0
  291. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/__main__.py +0 -0
  292. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/compound/cais.py +0 -0
  293. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/core/system.py +0 -0
  294. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/__init__.py +0 -0
  295. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/artifacts/__init__.py +0 -0
  296. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/core.py +0 -0
  297. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/db/__init__.py +0 -0
  298. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/db/sqlite.py +1 -1
  299. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/results.py +0 -0
  300. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/rewards/__init__.py +0 -0
  301. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/environment/shared_engine.py +0 -0
  302. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/__init__.py +0 -0
  303. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/__init__.py +1 -1
  304. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_config.toml +0 -0
  305. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml +0 -0
  306. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml +0 -0
  307. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py +0 -0
  308. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py +0 -0
  309. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py +0 -0
  310. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_lm_traces.py +0 -0
  311. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_no_rewards.py +0 -0
  312. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_trace_issue.py +0 -0
  313. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_db_schema.py +0 -0
  314. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_latest_results.py +0 -0
  315. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/debug_agent_responses.py +0 -0
  316. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/quick_trace_check.py +0 -0
  317. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -0
  318. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py +3 -3
  319. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml +0 -0
  320. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py +0 -0
  321. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py +0 -0
  322. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py +0 -0
  323. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_hook_storage.py +0 -0
  324. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_seeds.py +0 -0
  325. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/compare_seed_performance.py +0 -0
  326. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/custom_eval_pipelines.py +0 -0
  327. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/plot_hook_frequency.py +0 -0
  328. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/seed_analysis_summary.py +0 -0
  329. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/compare_traces.py +0 -0
  330. {synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos → synth_ai-0.2.4.dev8/synth_ai/environments/examples/crafter_classic/agent_demos/old}/crafter_comprehensive_evaluation.py +0 -0
  331. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_env_serialization.py +0 -0
  332. {synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos → synth_ai-0.2.4.dev8/synth_ai/environments/examples/crafter_classic/agent_demos/old}/crafter_evaluation_browser.py +0 -0
  333. {synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos → synth_ai-0.2.4.dev8/synth_ai/environments/examples/crafter_classic/agent_demos/old}/crafter_quick_evaluation.py +0 -0
  334. {synth_ai-0.2.4.dev6/synth_ai/environments/examples/crafter_classic/agent_demos → synth_ai-0.2.4.dev8/synth_ai/environments/examples/crafter_classic/agent_demos/old}/crafter_trace_evaluation.py +0 -0
  335. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/debug_player_loss.py +0 -0
  336. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_service.py +0 -0
  337. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_slowness.py +0 -0
  338. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_by_difficulty.py +0 -0
  339. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_example.py +0 -0
  340. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/explore_saved_states.py +0 -0
  341. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft.py +0 -0
  342. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft_OLD.py +0 -0
  343. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_gemini.py +0 -0
  344. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_modal.py +0 -0
  345. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_metadata.py +0 -0
  346. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_gemini.py +0 -0
  347. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_modal.py +0 -0
  348. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/prepare_vertex_ft.py +0 -0
  349. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/profile_env_slowness.py +0 -0
  350. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/replicate_issue.py +0 -0
  351. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_and_eval.py +0 -0
  352. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_comparison.py +0 -0
  353. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_qwen_rollouts.py +0 -0
  354. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/trace_eval_OLD.py +0 -0
  355. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/validate_openai_format.py +0 -0
  356. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/config_logging.py +0 -0
  357. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_classic/debug_translation.py +0 -0
  358. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/__init__.py +0 -0
  359. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py +0 -0
  360. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/crafter/constants.py +0 -0
  361. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/crafter/engine.py +0 -0
  362. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/crafter/recorder.py +0 -0
  363. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_issue.py +0 -0
  364. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_spawning.py +0 -0
  365. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/old/compare_worlds.py +0 -0
  366. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/old/dataset_stats.py +0 -0
  367. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/old/diamond_spawning_summary.py +0 -0
  368. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/crafter_custom/old/example_dataset_usage.py +0 -0
  369. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/enron/art_helpers/email_search_tools.py +2 -2
  370. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/__init__.py +6 -6
  371. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/environment.py +6 -6
  372. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/environment_mapping.py +0 -0
  373. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/minigrid/taskset.py +13 -13
  374. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/__init__.py +0 -0
  375. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/agent_demos/nethack_quick_evaluation.py +2 -2
  376. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/nethack/helpers/action_mapping.py +1 -1
  377. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/__init__.py +0 -0
  378. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/agent_demos/__init__.py +0 -0
  379. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/config_logging.py +0 -0
  380. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/__init__.py +0 -0
  381. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/memory_map.py +0 -0
  382. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/__init__.py +7 -7
  383. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/red/units/__init__.py +0 -0
  384. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/__init__.py +0 -0
  385. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/__init__.py +0 -0
  386. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/render_utils.py +1 -1
  387. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_variations.py +1 -1
  388. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/tictactoe/__init__.py +0 -0
  389. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/examples/verilog/__init__.py +0 -0
  390. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/reproducibility/helpers.py +0 -0
  391. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/service/registry.py +1 -1
  392. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/stateful/__init__.py +0 -0
  393. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/stateful/engine.py +1 -1
  394. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/stateful/state.py +0 -0
  395. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/tasks/api.py +4 -4
  396. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/v0_observability/history.py +0 -0
  397. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/environments/v0_observability/log.py +0 -0
  398. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/install_sqld.sh +0 -0
  399. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/core.py +0 -0
  400. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/filtering.py +0 -0
  401. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/offline/dpo.py +0 -0
  402. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/offline/providers.py +0 -0
  403. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/offline/sft.py +0 -0
  404. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/offline/shared.py +0 -0
  405. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/online/grpo.py +0 -0
  406. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/online/irft.py +0 -0
  407. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/learning/prompts/gepa.py +0 -0
  408. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/caching/__init__.py +0 -0
  409. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/caching/constants.py +0 -0
  410. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/caching/dbs.py +0 -0
  411. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/caching/initialize.py +0 -0
  412. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/core/__init__.py +0 -0
  413. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/cost/__init__.py +0 -0
  414. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/cost/monitor.py +0 -0
  415. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/cost/statefulness.py +0 -0
  416. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/provider_support/suppress_logging.py +0 -0
  417. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/structured_outputs/__init__.py +0 -0
  418. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/tools/__init__.py +0 -0
  419. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/__init__.py +0 -0
  420. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/core/__init__.py +0 -0
  421. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/core/synth_dev_api.py +0 -0
  422. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/local/__init__.py +0 -0
  423. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/local/ollama.py +0 -0
  424. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/supported/__init__.py +0 -0
  425. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/supported/groq.py +0 -0
  426. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/lm/vendors/supported/together.py +0 -0
  427. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/storage/__init__.py +1 -1
  428. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/storage/exceptions.py +0 -0
  429. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/storage/types.py +0 -0
  430. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/tracing_v3/turso/__init__.py +3 -3
  431. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/__init__.py +0 -0
  432. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/events/__init__.py +0 -0
  433. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/events/scope.py +0 -0
  434. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing/utils.py +0 -0
  435. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/__init__.py +1 -1
  436. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/events/__init__.py +0 -0
  437. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/events/scope.py +0 -0
  438. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai/v0/tracing_v1/utils.py +0 -0
  439. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai.egg-info/dependency_links.txt +0 -0
  440. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai.egg-info/entry_points.txt +0 -0
  441. {synth_ai-0.2.4.dev6 → synth_ai-0.2.4.dev8}/synth_ai.egg-info/top_level.txt +0 -0
@@ -0,0 +1,635 @@
1
+ Metadata-Version: 2.4
2
+ Name: synth-ai
3
+ Version: 0.2.4.dev8
4
+ Summary: Software for aiding the best and multiplying the will - Core AI functionality and tracing
5
+ Author-email: Synth AI <josh@usesynth.ai>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/synth-laboratories/synth-ai
8
+ Project-URL: Repository, https://github.com/synth-laboratories/synth-ai
9
+ Project-URL: Issues, https://github.com/synth-laboratories/synth-ai/issues
10
+ Requires-Python: >=3.11
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: pydantic>=2.0.0
14
+ Requires-Dist: python-dotenv>=1.0.1
15
+ Requires-Dist: requests>=2.32.3
16
+ Requires-Dist: urllib3>=2.3.0
17
+ Requires-Dist: tqdm>=4.66.4
18
+ Requires-Dist: jsonschema>=4.23.0
19
+ Requires-Dist: backoff>=2.0.0
20
+ Requires-Dist: typing_extensions>=4.0.0
21
+ Requires-Dist: openai>=1.99.0
22
+ Requires-Dist: anthropic>=0.42.0
23
+ Requires-Dist: langfuse<3.0.0,>=2.53.9
24
+ Requires-Dist: opentelemetry-api<1.27.0,>=1.26.0
25
+ Requires-Dist: opentelemetry-sdk<1.27.0,>=1.26.0
26
+ Requires-Dist: diskcache>=5.6.3
27
+ Requires-Dist: groq>=0.30.0
28
+ Requires-Dist: google-genai>=1.26.0
29
+ Requires-Dist: together>=1.5.21
30
+ Requires-Dist: mistralai>=1.9.2
31
+ Requires-Dist: fastapi>=0.115.12
32
+ Requires-Dist: uvicorn>=0.34.2
33
+ Requires-Dist: numpy>=2.2.3
34
+ Requires-Dist: networkx>=3.4.2
35
+ Requires-Dist: redis>=6.2.0
36
+ Requires-Dist: duckdb>=1.0.0
37
+ Requires-Dist: pandas>=2.2.3
38
+ Requires-Dist: ty>=0.0.1a5
39
+ Requires-Dist: toml>=0.10.2
40
+ Requires-Dist: sqlalchemy>=2.0.42
41
+ Requires-Dist: aiosqlite>=0.21.0
42
+ Requires-Dist: greenlet>=3.2.3
43
+ Requires-Dist: libsql>=0.1.8
44
+ Requires-Dist: pynacl>=1.5.0
45
+ Requires-Dist: google-api-core>=2.25.1
46
+ Requires-Dist: google-generativeai>=0.8.5
47
+ Requires-Dist: crafter>=1.8.3
48
+ Requires-Dist: click>=8.1.0
49
+ Requires-Dist: textual>=1.1.0
50
+ Requires-Dist: openai-harmony>=0.0.1
51
+ Requires-Dist: asyncpg>=0.30.0
52
+ Requires-Dist: aiohttp>=3.8.0
53
+ Requires-Dist: datasets>=4.0.0
54
+ Requires-Dist: transformers>=4.56.1
55
+ Provides-Extra: dev
56
+ Requires-Dist: build>=1.2.2.post1; extra == "dev"
57
+ Requires-Dist: twine>=4.0.0; extra == "dev"
58
+ Requires-Dist: keyring>=24.0.0; extra == "dev"
59
+ Requires-Dist: pytest>=8.3.3; extra == "dev"
60
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
61
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
62
+ Requires-Dist: pyright>=1.1.350; extra == "dev"
63
+ Requires-Dist: coverage[toml]>=7.3.0; extra == "dev"
64
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
65
+ Provides-Extra: research
66
+ Requires-Dist: crafter>=1.8.3; extra == "research"
67
+ Requires-Dist: datasets>=4.0.0; extra == "research"
68
+ Provides-Extra: all
69
+ Requires-Dist: crafter>=1.8.3; extra == "all"
70
+ Requires-Dist: datasets>=4.0.0; extra == "all"
71
+ Dynamic: license-file
72
+
73
+ # Synth AI
74
+
75
+ Modern Compound AI System Development
76
+
77
+ **Comprehensive AI Framework for Language Models, Environments, and Observability**
78
+
79
+ [![Python](https://img.shields.io/badge/python-3.11+-blue)](https://www.python.org/)
80
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
81
+ [![PyPI](https://img.shields.io/badge/PyPI-0.2.3.dev0-orange)](https://pypi.org/project/synth-ai/)
82
+ ![Coverage](https://img.shields.io/badge/coverage-0.0%25-red)
83
+ ![Tests](https://img.shields.io/badge/tests-17%2F17%20passing-brightgreen)
84
+
85
+ A unified framework combining language model capabilities, synthetic environments, and comprehensive tracing for building and evaluating AI agents.
86
+
87
+ ## 🚀 Quick Start
88
+
89
+ ### Installation
90
+
91
+ ```bash
92
+ # Basic installation
93
+ pip install synth-ai
94
+
95
+ # With research environments (includes game environments)
96
+ pip install synth-ai[research]
97
+
98
+ # Full installation with all providers
99
+ pip install synth-ai[all]
100
+ ```
101
+
102
+ ### Spinning Up
103
+
104
+ Start the Synth AI service daemon (includes sqld database + environment service):
105
+
106
+ ```bash
107
+ # Start both database daemon (port 8080) and environment service (port 8901)
108
+ uvx synth-ai serve
109
+ ```
110
+
111
+ #### Service Command Options
112
+
113
+ ```bash
114
+ uvx synth-ai serve [OPTIONS]
115
+ ```
116
+
117
+ **Available Options:**
118
+ - `--db-file` - Database file path (default: "synth_ai.db")
119
+ - `--sqld-port` - Port for sqld HTTP interface (default: 8080)
120
+ - `--env-port` - Port for environment service (default: 8901)
121
+ - `--no-sqld` - Skip starting sqld database daemon
122
+ - `--no-env` - Skip starting environment service
123
+
124
+ **Examples:**
125
+ ```bash
126
+ # Start with custom ports
127
+ uvx synth-ai serve --sqld-port 8081 --env-port 8902
128
+
129
+ # Start only the environment service
130
+ uvx synth-ai serve --no-sqld
131
+
132
+ # Start only the database service
133
+ uvx synth-ai serve --no-env
134
+ ```
135
+
136
+ #### What the Serve Command Provides
137
+
138
+ **sqld Database Service (port 8080)**
139
+ - Local SQLite-compatible database server with HTTP API
140
+ - Automatically downloads and installs sqld binary if needed
141
+ - Provides persistent storage for agent interactions and traces
142
+
143
+ **Environment Service (port 8901)**
144
+ - FastAPI service for managing AI environments and tasks
145
+ - Built-in environments: Crafter, Sokoban, MiniGrid, TicTacToe, Verilog, NetHack, Enron
146
+ - RESTful API for environment initialization, stepping, and termination
147
+ - Dynamic environment registry for custom environments
148
+
149
+ In another terminal, run your first example:
150
+
151
+ ```bash
152
+ # Run a Crafter agent demo with Gemini
153
+ ./examples/run_crafter_demo.sh
154
+ ```
155
+
156
+ This will:
157
+ - Start the sqld database daemon with HTTP API on port 8080
158
+ - Launch the environment service API on port 8901
159
+ - Run a reactive agent in the Crafter environment using Gemini 1.5 Flash
160
+
161
+ #### Demos (Eval + Finetuning)
162
+
163
+ You can run interactive demos from the repo without remembering exact commands:
164
+
165
+ ```bash
166
+ # Lists all available demos under examples/, then prompts you to choose
167
+ uvx synth-ai demo
168
+ ```
169
+
170
+ Today this includes:
171
+ - Eval demo: `examples/evals/run_demo.sh`
172
+ - Prompts for models, episodes, etc.
173
+ - Runs Crafter rollouts with v3 tracing, then analyzes and filters traces
174
+ - Writes a JSONL like `ft_data/evals_filtered.jsonl` for downstream use
175
+ - Finetuning demo: `examples/finetuning/synth_qwen/run_demo.sh`
176
+ - Guides you through: rollouts → filter v3 traces → prepare SFT JSONL
177
+ - Pair with `uvpm examples.finetuning.synth_qwen.sft_kickoff` to start an SFT job when ready
178
+
179
+ Notes:
180
+ - Ensure the service is running (`uvx synth-ai serve`) so v3 traces are recorded locally.
181
+ - Set API configuration for finetuning:
182
+ - `export LEARNING_V2_BASE_URL="http://localhost:8000/api"` (or your proxy)
183
+ - `export SYNTH_API_KEY="sk_live_..."`
184
+ - v3 trace data is stored under `traces/v3/synth_ai.db/` by default. Inspect with `uvx synth-ai traces`.
185
+ - LM tracing: all model calls (prompts, outputs, tool calls, token usage, latency, cost) are automatically captured via v3 tracing and stored locally; inspect with `uvx synth-ai traces`.
186
+
187
+ ### One-Command Demos
188
+
189
+ Quickly browse and launch interactive demos under `examples/`:
190
+
191
+ ```bash
192
+ uvx synth-ai demo
193
+ ```
194
+
195
+ This lists all `run_demo.sh` scripts found in the repo (e.g., eval comparisons, finetuning flows) and lets you pick one to run.
196
+
197
+
198
+ ## Changelog (migrated from CHANGELOG.md)
199
+
200
+ # Changelog
201
+
202
+ All notable changes to this project are documented in this file.
203
+
204
+ ## [0.2.4.dev6] - 2025-08-18
205
+ - Added: Wordle environment for simple RL testing, including engine, environment, taskset, and curated instances with helper generator script.
206
+ - Added: Wordle README and unit/integration tests (integrity checks and gameplay coverage).
207
+ - Added: Service routes and example wiring to expose Wordle tasks through the environment service.
208
+ - Changed: Bumped development version to 0.2.4.dev6 and published to PyPI.
209
+
210
+ [0.2.4.dev6]: https://github.com/synth-laboratories/synth-ai/releases/tag/v0.2.4.dev6
211
+
212
+
213
+ ## Crafter Notes (migrated from crafter.md)
214
+
215
+ uvpm src.synth_env.examples.crafter_classic.agent_demos.test_crafter_react_agent --model gemini-1.5-flash-latest
216
+ uv run uvicorn src.synth_env.service.app:app --host 0.0.0.0 --port 8901
217
+ CRAFTER
218
+
219
+ gemini-1.5-flash-8b
220
+ collect_sapling: 20 times (K=0.1, contribution=0.304)
221
+
222
+ gpt-4.1-nano
223
+ collect_drink: 8 times (K=0.1, contribution=0.220)
224
+ collect_sapling: 2 times (K=0.1, contribution=0.110)
225
+ collect_wood: 12 times (K=1.0, contribution=2.565)
226
+
227
+ gpt-4o-mini
228
+ collect_drink: 1 times (K=0.1, contribution=0.069)
229
+ collect_sapling: 15 times (K=0.1, contribution=0.277)
230
+ collect_wood: 7 times (K=1.0, contribution=2.079)
231
+ eat_cow: 2 times (K=1.0, contribution=1.099)
232
+
233
+ gemini-1.5-flash
234
+ collect_drink: 5 times (K=0.1, contribution=0.179)
235
+ collect_sapling: 10 times (K=0.1, contribution=0.240)
236
+ collect_wood: 12 times (K=1.0, contribution=2.565)
237
+ defeat_zombie: 1 times (K=1.0, contribution=0.693)
238
+ eat_cow: 1 times (K=1.0, contribution=0.693)
239
+ make_wood_pickaxe: 1 times (K=3.0, contribution=2.079)
240
+ place_table: 1 times (K=3.0, contribution=2.079)
241
+
242
+ gpt-4.1-mini
243
+ collect_coal: 1 times (K=3.0, contribution=2.079)
244
+ collect_drink: 7 times (K=0.1, contribution=0.208)
245
+ collect_sapling: 16 times (K=0.1, contribution=0.283)
246
+ collect_stone: 1 times (K=1.0, contribution=0.693)
247
+ collect_wood: 17 times (K=1.0, contribution=2.890)
248
+ eat_cow: 3 times (K=1.0, contribution=1.386)
249
+ make_wood_pickaxe: 1 times (K=3.0, contribution=2.079)
250
+ place_table: 1 times (K=3.0, contribution=2.079)
251
+
252
+ gemini-2.5-flash
253
+ collect_coal: 5 times (K=3.0, contribution=5.375)
254
+ collect_drink: 7 times (K=0.1, contribution=0.208)
255
+ collect_sapling: 12 times (K=0.1, contribution=0.256)
256
+ collect_stone: 9 times (K=1.0, contribution=2.303)
257
+ collect_wood: 18 times (K=1.0, contribution=2.944)
258
+ eat_cow: 1 times (K=1.0, contribution=0.693)
259
+ make_stone_pickaxe: 2 times (K=10.0, contribution=10.986)
260
+ make_wood_pickaxe: 13 times (K=3.0, contribution=7.917)
261
+ place_furnace: 2 times (K=10.0, contribution=10.986)
262
+ place_plant: 1 times (K=0.1, contribution=0.069)
263
+ place_table: 17 times (K=3.0, contribution=8.671)
264
+ wake_up: 2 times (K=0.1, contribution=0.110)
265
+
266
+ gemini-2.5-pro
267
+ collect_coal: 3 times (K=3.0, contribution=4.159)
268
+ collect_drink: 4 times (K=0.1, contribution=0.161)
269
+ collect_sapling: 12 times (K=0.1, contribution=0.256)
270
+ collect_stone: 6 times (K=1.0, contribution=1.946)
271
+ collect_wood: 18 times (K=1.0, contribution=2.944)
272
+ make_stone_pickaxe: 3 times (K=10.0, contribution=13.863)
273
+ make_wood_pickaxe: 10 times (K=3.0, contribution=7.194)
274
+ place_furnace: 3 times (K=10.0, contribution=13.863)
275
+ place_table: 18 times (K=3.0, contribution=8.833)
276
+ wake_up: 3 times (K=0.1, contribution=0.139)
277
+
278
+ gpt-4.1
279
+ collect_coal: 1 times (K=3.0, contribution=2.079)
280
+ collect_drink: 3 times (K=0.1, contribution=0.139)
281
+ collect_sapling: 15 times (K=0.1, contribution=0.277)
282
+ collect_stone: 7 times (K=1.0, contribution=2.079)
283
+ collect_wood: 19 times (K=1.0, contribution=2.996)
284
+ defeat_skeleton: 1 times (K=1.0, contribution=0.693)
285
+ defeat_zombie: 1 times (K=1.0, contribution=0.693)
286
+ eat_cow: 3 times (K=1.0, contribution=1.386)
287
+ make_stone_pickaxe: 4 times (K=10.0, contribution=16.094)
288
+ make_wood_pickaxe: 14 times (K=3.0, contribution=8.124)
289
+ place_table: 17 times (K=3.0, contribution=8.671)
290
+ wake_up: 3 times (K=0.1, contribution=0.139)
291
+
292
+ claude-sonnet-4
293
+ collect_coal: 1 times (K=3.0, contribution=2.079)
294
+ collect_drink: 2 times (K=0.1, contribution=0.110)
295
+ collect_sapling: 11 times (K=0.1, contribution=0.248)
296
+ collect_stone: 4 times (K=1.0, contribution=1.609)
297
+ collect_wood: 15 times (K=1.0, contribution=2.773)
298
+ eat_cow: 4 times (K=1.0, contribution=1.609)
299
+ make_wood_pickaxe: 8 times (K=3.0, contribution=6.592)
300
+ place_plant: 1 times (K=0.1, contribution=0.069)
301
+ place_table: 13 times (K=3.0, contribution=7.917)
302
+ wake_up: 1 times (K=0.1, contribution=0.069)
303
+
304
+ gemini-2.5-flash-lite
305
+ collect_drink: 8 times (K=0.1, contribution=0.220)
306
+ collect_sapling: 15 times (K=0.1, contribution=0.277)
307
+ collect_stone: 2 times (K=1.0, contribution=1.099)
308
+ collect_wood: 17 times (K=1.0, contribution=2.890)
309
+ eat_cow: 3 times (K=1.0, contribution=1.386)
310
+ make_wood_pickaxe: 7 times (K=3.0, contribution=6.238)
311
+ place_plant: 1 times (K=0.1, contribution=0.069)
312
+ place_table: 11 times (K=3.0, contribution=7.455)
313
+ wake_up: 6 times (K=0.1, contribution=0.195)
314
+
315
+ o4-mini
316
+ collect_coal: 7 times (K=3.0, contribution=6.238)
317
+ collect_drink: 5 times (K=0.1, contribution=0.179)
318
+ collect_iron: 1 times (K=10.0, contribution=6.931)
319
+ collect_sapling: 9 times (K=0.1, contribution=0.230)
320
+ collect_stone: 15 times (K=1.0, contribution=2.773)
321
+ collect_wood: 19 times (K=1.0, contribution=2.996)
322
+ defeat_zombie: 1 times (K=1.0, contribution=0.693)
323
+ make_stone_pickaxe: 7 times (K=10.0, contribution=20.794)
324
+ make_stone_sword: 1 times (K=10.0, contribution=6.931)
325
+ make_wood_pickaxe: 19 times (K=3.0, contribution=8.987)
326
+ place_furnace: 5 times (K=10.0, contribution=17.918)
327
+ place_plant: 3 times (K=0.1, contribution=0.139)
328
+ place_table: 19 times (K=3.0, contribution=8.987)
329
+ wake_up: 3 times (K=0.1, contribution=0.139)
330
+
331
+ o3-mini
332
+ collect_coal: 3 times (K=3.0, contribution=4.159)
333
+ collect_drink: 7 times (K=0.1, contribution=0.208)
334
+ collect_sapling: 10 times (K=0.1, contribution=0.240)
335
+ collect_stone: 5 times (K=1.0, contribution=1.792)
336
+ collect_wood: 17 times (K=1.0, contribution=2.890)
337
+ eat_cow: 8 times (K=1.0, contribution=2.197)
338
+ make_stone_pickaxe: 1 times (K=10.0, contribution=6.931)
339
+ make_wood_pickaxe: 9 times (K=3.0, contribution=6.908)
340
+ place_table: 13 times (K=3.0, contribution=7.917)
341
+ wake_up: 11 times (K=0.1, contribution=0.248)
342
+
343
+ qwen/qwen3-32b
344
+ collect_coal: 3 times (K=3.0, contribution=4.159)
345
+ collect_drink: 6 times (K=0.1, contribution=0.195)
346
+ collect_sapling: 12 times (K=0.1, contribution=0.256)
347
+ collect_stone: 8 times (K=1.0, contribution=2.197)
348
+ collect_wood: 20 times (K=1.0, contribution=3.045)
349
+ eat_cow: 5 times (K=1.0, contribution=1.792)
350
+ make_stone_pickaxe: 3 times (K=10.0, contribution=13.863)
351
+ make_wood_pickaxe: 15 times (K=3.0, contribution=8.318)
352
+ place_furnace: 3 times (K=10.0, contribution=13.863)
353
+ place_plant: 2 times (K=0.1, contribution=0.110)
354
+ place_table: 18 times (K=3.0, contribution=8.833)
355
+ wake_up: 13 times (K=0.1, contribution=0.264)
356
+
357
+ o3
358
+ collect_coal: 6 times (K=3.0, contribution=5.838)
359
+ collect_drink: 1 times (K=0.1, contribution=0.069)
360
+ collect_iron: 2 times (K=10.0, contribution=10.986)
361
+ collect_sapling: 11 times (K=0.1, contribution=0.248)
362
+ collect_stone: 9 times (K=1.0, contribution=2.303)
363
+ collect_wood: 19 times (K=1.0, contribution=2.996)
364
+ defeat_zombie: 1 times (K=1.0, contribution=0.693)
365
+ eat_cow: 1 times (K=1.0, contribution=0.693)
366
+ make_stone_pickaxe: 7 times (K=10.0, contribution=20.794)
367
+ make_stone_sword: 3 times (K=10.0, contribution=13.863)
368
+ make_wood_pickaxe: 14 times (K=3.0, contribution=8.124)
369
+ make_wood_sword: 6 times (K=3.0, contribution=5.838)
370
+ place_furnace: 4 times (K=10.0, contribution=16.094)
371
+ place_plant: 5 times (K=0.1, contribution=0.179)
372
+ place_table: 15 times (K=3.0, contribution=8.318)
373
+ wake_up: 12 times (K=0.1, contribution=0.256)
374
+
375
+ uv run python src/synth_env/examples/crafter_classic/agent_demos/test_crafter_react_agent.py --config src/evals/configs/crafter.toml
376
+
377
+ episodes = 20 # Number of episodes to run
378
+ max_steps = 50 # Maximum steps per episode
379
+ seed = 42 # Random seed for reproducibility
380
+ difficulty = "easy" # Difficulty mode
381
+
382
+
383
+ groq models
384
+ - meta-llama/llama-4-scout-17b-16e-instruct
385
+ - meta-llama/llama-4-maverick-17b-128e-instruct
386
+ qwen/qwen3-32b
387
+
388
+
389
+ CRAFTER
390
+ 50 steps
391
+ | Model | Episodes | Mean Score | Avg Achievements | Unique Achievements | Shaped Reward | Mean K-Score |
392
+ |------------------|----------|------------|------------------|---------------------|---------------|--------------|
393
+ | qwen-2.5-0.5b | 10 | 1.00 | 1.00 | 1 | 0.240 | 0.024 |
394
+ | g-1.5-flash-8b | 20 | 1.00 | 1.00 | 1 | 0.304 | 0.015 |
395
+ | L4-scout-17b | 20 | 0.20 | 0.20 | 4 | 1.525 | 0.076 |
396
+ | gpt-4.1-nano | 20 | 1.10 | 1.10 | 3 | 2.895 | 0.145 |
397
+ | gpt-4o-mini | 20 | 1.25 | 1.25 | 4 | 3.525 | 0.176 |
398
+ | L3.1-8b-groq | 20 | 1.45 | 1.45 | 4 | 3.552 | 0.178 |
399
+ | L4-maverick-17b | 20 | 2.20 | 2.20 | 6 | 7.087 | 0.354 |
400
+ | L3.3-70b-groq | 20 | 2.15 | 2.15 | 6 | 7.188 | 0.359 |
401
+ | gemini-1.5-flash | 20 | 1.55 | 1.55 | 7 | 8.529 | 0.426 |
402
+ | deepseek-chat | 20 | 1.85 | 1.85 | 7 | 9.458 | 0.473 |
403
+ | gpt-4.1-mini | 20 | 2.35 | 2.35 | 8 | 11.699 | 0.585 |
404
+ | gpt-5-nano | 20 | 2.85 | ???? | 13 | ?????? | ??????|
405
+ | groq/kimi-k2 | 20 | 3.05 | 3.05 | 8 | 17.952 | 0.898 |
406
+ | g-2.5-flash-lite | 20 | 3.50 | 3.50 | 9 | 19.829 | 0.991 |
407
+ | claude-sonnet-4 | 20 | 3.00 | 3.00 | 10 | 23.077 | 1.154 |
408
+ | gpt-5-mini | 20 | 3.85 | ???? | 15 | ?????? | ????? |
409
+ | o3-mini | 20 | 4.20 | 4.20 | 10 | 33.491 | 1.675 |
410
+ | gpt-4.1 | 20 | 4.40 | 4.40 | 12 | 43.371 | 2.169 |
411
+ | gemini-2.5-flash | 19 | 4.68 | 4.68 | 12 | 50.520 | 2.659 |
412
+ | gemini-2.5-pro | 20 | 4.00 | 4.00 | 10 | 53.358 | 2.668 |
413
+ | qwen/qwen3-32b | 20 | 5.40 | 5.40 | 15 | 56.894 | 2.845 |
414
+ | o4-mini | 20 | 5.70 | 5.70 | 14 | 83.936 | 4.197 |
415
+ | o3 | 20 | 5.80 | 5.80 | 16 | 97.293 | 4.865 |
416
+
417
+ *o3 had trajectories terminated early
418
+
419
+ 300 steps
420
+ | gemini-1.5-flash | 20 | 1.50 | 1.50 | 6 | 7.440 | 0.372 |
421
+ | g-2.5-flash-lite | 20 | 4.90 | 4.90 | 10 | 24.713 | 1.236 |
422
+ | kimi-k2-instruct | 20 | 4.45 | 4.45 | 12 | 45.834 | 2.292 |
423
+ | qwen/qwen3-32b | 20 | 6.25 | 6.25 | 14 | 55.396 | 2.770 |
424
+
425
+ 50 steps, 100 traj
426
+ | qwen/qwen3-32b | 93 | 4.74 | 4.74 | 14 | 94.806 | 1.019 |uvpm src.synth_env.examples.crafter_classic.agent_demos.test_crafter_react_agent --model gemini-1.5-flash-latest
427
+ uv run uvicorn src.synth_env.service.app:app --host 0.0.0.0 --port 8901
428
+ CRAFTER
429
+
430
+ gemini-1.5-flash-8b
431
+ collect_sapling: 20 times (K=0.1, contribution=0.304)
432
+
433
+ gpt-4.1-nano
434
+ collect_drink: 8 times (K=0.1, contribution=0.220)
435
+ collect_sapling: 2 times (K=0.1, contribution=0.110)
436
+ collect_wood: 12 times (K=1.0, contribution=2.565)
437
+
438
+ gpt-4o-mini
439
+ collect_drink: 1 times (K=0.1, contribution=0.069)
440
+ collect_sapling: 15 times (K=0.1, contribution=0.277)
441
+ collect_wood: 7 times (K=1.0, contribution=2.079)
442
+ eat_cow: 2 times (K=1.0, contribution=1.099)
443
+
444
+ gemini-1.5-flash
445
+ collect_drink: 5 times (K=0.1, contribution=0.179)
446
+ collect_sapling: 10 times (K=0.1, contribution=0.240)
447
+ collect_wood: 12 times (K=1.0, contribution=2.565)
448
+ defeat_zombie: 1 times (K=1.0, contribution=0.693)
449
+ eat_cow: 1 times (K=1.0, contribution=0.693)
450
+ make_wood_pickaxe: 1 times (K=3.0, contribution=2.079)
451
+ place_table: 1 times (K=3.0, contribution=2.079)
452
+
453
+ gpt-4.1-mini
454
+ collect_coal: 1 times (K=3.0, contribution=2.079)
455
+ collect_drink: 7 times (K=0.1, contribution=0.208)
456
+ collect_sapling: 16 times (K=0.1, contribution=0.283)
457
+ collect_stone: 1 times (K=1.0, contribution=0.693)
458
+ collect_wood: 17 times (K=1.0, contribution=2.890)
459
+ eat_cow: 3 times (K=1.0, contribution=1.386)
460
+ make_wood_pickaxe: 1 times (K=3.0, contribution=2.079)
461
+ place_table: 1 times (K=3.0, contribution=2.079)
462
+
463
+ gemini-2.5-flash
464
+ collect_coal: 5 times (K=3.0, contribution=5.375)
465
+ collect_drink: 7 times (K=0.1, contribution=0.208)
466
+ collect_sapling: 12 times (K=0.1, contribution=0.256)
467
+ collect_stone: 9 times (K=1.0, contribution=2.303)
468
+ collect_wood: 18 times (K=1.0, contribution=2.944)
469
+ eat_cow: 1 times (K=1.0, contribution=0.693)
470
+ make_stone_pickaxe: 2 times (K=10.0, contribution=10.986)
471
+ make_wood_pickaxe: 13 times (K=3.0, contribution=7.917)
472
+ place_furnace: 2 times (K=10.0, contribution=10.986)
473
+ place_plant: 1 times (K=0.1, contribution=0.069)
474
+ place_table: 17 times (K=3.0, contribution=8.671)
475
+ wake_up: 2 times (K=0.1, contribution=0.110)
476
+
477
+ gemini-2.5-pro
478
+ collect_coal: 3 times (K=3.0, contribution=4.159)
479
+ collect_drink: 4 times (K=0.1, contribution=0.161)
480
+ collect_sapling: 12 times (K=0.1, contribution=0.256)
481
+ collect_stone: 6 times (K=1.0, contribution=1.946)
482
+ collect_wood: 18 times (K=1.0, contribution=2.944)
483
+ make_stone_pickaxe: 3 times (K=10.0, contribution=13.863)
484
+ make_wood_pickaxe: 10 times (K=3.0, contribution=7.194)
485
+ place_furnace: 3 times (K=10.0, contribution=13.863)
486
+ place_table: 18 times (K=3.0, contribution=8.833)
487
+ wake_up: 3 times (K=0.1, contribution=0.139)
488
+
489
+ gpt-4.1
490
+ collect_coal: 1 times (K=3.0, contribution=2.079)
491
+ collect_drink: 3 times (K=0.1, contribution=0.139)
492
+ collect_sapling: 15 times (K=0.1, contribution=0.277)
493
+ collect_stone: 7 times (K=1.0, contribution=2.079)
494
+ collect_wood: 19 times (K=1.0, contribution=2.996)
495
+ defeat_skeleton: 1 times (K=1.0, contribution=0.693)
496
+ defeat_zombie: 1 times (K=1.0, contribution=0.693)
497
+ eat_cow: 3 times (K=1.0, contribution=1.386)
498
+ make_stone_pickaxe: 4 times (K=10.0, contribution=16.094)
499
+ make_wood_pickaxe: 14 times (K=3.0, contribution=8.124)
500
+ place_table: 17 times (K=3.0, contribution=8.671)
501
+ wake_up: 3 times (K=0.1, contribution=0.139)
502
+
503
+ claude-sonnet-4
504
+ collect_coal: 1 times (K=3.0, contribution=2.079)
505
+ collect_drink: 2 times (K=0.1, contribution=0.110)
506
+ collect_sapling: 11 times (K=0.1, contribution=0.248)
507
+ collect_stone: 4 times (K=1.0, contribution=1.609)
508
+ collect_wood: 15 times (K=1.0, contribution=2.773)
509
+ eat_cow: 4 times (K=1.0, contribution=1.609)
510
+ make_wood_pickaxe: 8 times (K=3.0, contribution=6.592)
511
+ place_plant: 1 times (K=0.1, contribution=0.069)
512
+ place_table: 13 times (K=3.0, contribution=7.917)
513
+ wake_up: 1 times (K=0.1, contribution=0.069)
514
+
515
+ gemini-2.5-flash-lite
516
+ collect_drink: 8 times (K=0.1, contribution=0.220)
517
+ collect_sapling: 15 times (K=0.1, contribution=0.277)
518
+ collect_stone: 2 times (K=1.0, contribution=1.099)
519
+ collect_wood: 17 times (K=1.0, contribution=2.890)
520
+ eat_cow: 3 times (K=1.0, contribution=1.386)
521
+ make_wood_pickaxe: 7 times (K=3.0, contribution=6.238)
522
+ place_plant: 1 times (K=0.1, contribution=0.069)
523
+ place_table: 11 times (K=3.0, contribution=7.455)
524
+ wake_up: 6 times (K=0.1, contribution=0.195)
525
+
526
+ o4-mini
527
+ collect_coal: 7 times (K=3.0, contribution=6.238)
528
+ collect_drink: 5 times (K=0.1, contribution=0.179)
529
+ collect_iron: 1 times (K=10.0, contribution=6.931)
530
+ collect_sapling: 9 times (K=0.1, contribution=0.230)
531
+ collect_stone: 15 times (K=1.0, contribution=2.773)
532
+ collect_wood: 19 times (K=1.0, contribution=2.996)
533
+ defeat_zombie: 1 times (K=1.0, contribution=0.693)
534
+ make_stone_pickaxe: 7 times (K=10.0, contribution=20.794)
535
+ make_stone_sword: 1 times (K=10.0, contribution=6.931)
536
+ make_wood_pickaxe: 19 times (K=3.0, contribution=8.987)
537
+ place_furnace: 5 times (K=10.0, contribution=17.918)
538
+ place_plant: 3 times (K=0.1, contribution=0.139)
539
+ place_table: 19 times (K=3.0, contribution=8.987)
540
+ wake_up: 3 times (K=0.1, contribution=0.139)
541
+
542
+ o3-mini
543
+ collect_coal: 3 times (K=3.0, contribution=4.159)
544
+ collect_drink: 7 times (K=0.1, contribution=0.208)
545
+ collect_sapling: 10 times (K=0.1, contribution=0.240)
546
+ collect_stone: 5 times (K=1.0, contribution=1.792)
547
+ collect_wood: 17 times (K=1.0, contribution=2.890)
548
+ eat_cow: 8 times (K=1.0, contribution=2.197)
549
+ make_stone_pickaxe: 1 times (K=10.0, contribution=6.931)
550
+ make_wood_pickaxe: 9 times (K=3.0, contribution=6.908)
551
+ place_table: 13 times (K=3.0, contribution=7.917)
552
+ wake_up: 11 times (K=0.1, contribution=0.248)
553
+
554
+ qwen/qwen3-32b
555
+ collect_coal: 3 times (K=3.0, contribution=4.159)
556
+ collect_drink: 6 times (K=0.1, contribution=0.195)
557
+ collect_sapling: 12 times (K=0.1, contribution=0.256)
558
+ collect_stone: 8 times (K=1.0, contribution=2.197)
559
+ collect_wood: 20 times (K=1.0, contribution=3.045)
560
+ eat_cow: 5 times (K=1.0, contribution=1.792)
561
+ make_stone_pickaxe: 3 times (K=10.0, contribution=13.863)
562
+ make_wood_pickaxe: 15 times (K=3.0, contribution=8.318)
563
+ place_furnace: 3 times (K=10.0, contribution=13.863)
564
+ place_plant: 2 times (K=0.1, contribution=0.110)
565
+ place_table: 18 times (K=3.0, contribution=8.833)
566
+ wake_up: 13 times (K=0.1, contribution=0.264)
567
+
568
+ o3
569
+ collect_coal: 6 times (K=3.0, contribution=5.838)
570
+ collect_drink: 1 times (K=0.1, contribution=0.069)
571
+ collect_iron: 2 times (K=10.0, contribution=10.986)
572
+ collect_sapling: 11 times (K=0.1, contribution=0.248)
573
+ collect_stone: 9 times (K=1.0, contribution=2.303)
574
+ collect_wood: 19 times (K=1.0, contribution=2.996)
575
+ defeat_zombie: 1 times (K=1.0, contribution=0.693)
576
+ eat_cow: 1 times (K=1.0, contribution=0.693)
577
+ make_stone_pickaxe: 7 times (K=10.0, contribution=20.794)
578
+ make_stone_sword: 3 times (K=10.0, contribution=13.863)
579
+ make_wood_pickaxe: 14 times (K=3.0, contribution=8.124)
580
+ make_wood_sword: 6 times (K=3.0, contribution=5.838)
581
+ place_furnace: 4 times (K=10.0, contribution=16.094)
582
+ place_plant: 5 times (K=0.1, contribution=0.179)
583
+ place_table: 15 times (K=3.0, contribution=8.318)
584
+ wake_up: 12 times (K=0.1, contribution=0.256)
585
+
586
+ uv run python src/synth_env/examples/crafter_classic/agent_demos/test_crafter_react_agent.py --config src/evals/configs/crafter.toml
587
+
588
+ episodes = 20 # Number of episodes to run
589
+ max_steps = 50 # Maximum steps per episode
590
+ seed = 42 # Random seed for reproducibility
591
+ difficulty = "easy" # Difficulty mode
592
+
593
+
594
+ groq models
595
+ - meta-llama/llama-4-scout-17b-16e-instruct
596
+ - meta-llama/llama-4-maverick-17b-128e-instruct
597
+ qwen/qwen3-32b
598
+
599
+
600
+ CRAFTER
601
+ 50 steps
602
+ | Model | Episodes | Mean Score | Avg Achievements | Unique Achievements | Shaped Reward | Mean K-Score |
603
+ |------------------|----------|------------|------------------|---------------------|---------------|--------------|
604
+ | qwen-2.5-0.5b | 10 | 1.00 | 1.00 | 1 | 0.240 | 0.024 |
605
+ | g-1.5-flash-8b | 20 | 1.00 | 1.00 | 1 | 0.304 | 0.015 |
606
+ | L4-scout-17b | 20 | 0.20 | 0.20 | 4 | 1.525 | 0.076 |
607
+ | gpt-4.1-nano | 20 | 1.10 | 1.10 | 3 | 2.895 | 0.145 |
608
+ | gpt-4o-mini | 20 | 1.25 | 1.25 | 4 | 3.525 | 0.176 |
609
+ | L3.1-8b-groq | 20 | 1.45 | 1.45 | 4 | 3.552 | 0.178 |
610
+ | L4-maverick-17b | 20 | 2.20 | 2.20 | 6 | 7.087 | 0.354 |
611
+ | L3.3-70b-groq | 20 | 2.15 | 2.15 | 6 | 7.188 | 0.359 |
612
+ | gemini-1.5-flash | 20 | 1.55 | 1.55 | 7 | 8.529 | 0.426 |
613
+ | deepseek-chat | 20 | 1.85 | 1.85 | 7 | 9.458 | 0.473 |
614
+ | gpt-4.1-mini | 20 | 2.35 | 2.35 | 8 | 11.699 | 0.585 |
615
+ | groq/kimi-k2 | 20 | 3.05 | 3.05 | 8 | 17.952 | 0.898 |
616
+ | g-2.5-flash-lite | 20 | 3.50 | 3.50 | 9 | 19.829 | 0.991 |
617
+ | claude-sonnet-4 | 20 | 3.00 | 3.00 | 10 | 23.077 | 1.154 |
618
+ | o3-mini | 20 | 4.20 | 4.20 | 10 | 33.491 | 1.675 |
619
+ | gpt-4.1 | 20 | 4.40 | 4.40 | 12 | 43.371 | 2.169 |
620
+ | gemini-2.5-flash | 19 | 4.68 | 4.68 | 12 | 50.520 | 2.659 |
621
+ | gemini-2.5-pro | 20 | 4.00 | 4.00 | 10 | 53.358 | 2.668 |
622
+ | qwen/qwen3-32b | 20 | 5.40 | 5.40 | 12 | 56.894 | 2.845 |
623
+ | o4-mini | 20 | 5.70 | 5.70 | 14 | 83.936 | 4.197 |
624
+ | o3 | 20 | 5.80 | 5.80 | 16 | 97.293 | 4.865 |
625
+
626
+ *o3 had trajectories terminated early
627
+
628
+ 300 steps
629
+ | gemini-1.5-flash | 20 | 1.50 | 1.50 | 6 | 7.440 | 0.372 |
630
+ | g-2.5-flash-lite | 20 | 4.90 | 4.90 | 10 | 24.713 | 1.236 |
631
+ | kimi-k2-instruct | 20 | 4.45 | 4.45 | 12 | 45.834 | 2.292 |
632
+ | qwen/qwen3-32b | 20 | 6.25 | 6.25 | 14 | 55.396 | 2.770 |
633
+
634
+ 50 steps, 100 traj
635
+ | qwen/qwen3-32b | 93 | 4.74 | 4.74 | 14 | 94.806 | 1.019 |