synth-ai 0.2.6.dev6__tar.gz → 0.2.8__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.
Potentially problematic release.
This version of synth-ai might be problematic. Click here for more details.
- {synth_ai-0.2.6.dev6/synth_ai.egg-info → synth_ai-0.2.8}/PKG-INFO +30 -6
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/README.md +27 -4
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/pyproject.toml +3 -2
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/demo.py +55 -42
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/rl_demo.py +51 -5
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/root.py +12 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/core/cli.py +635 -294
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/demo_task_apps/core.py +20 -10
- synth_ai-0.2.8/synth_ai/demos/demo_task_apps/math/config.toml +129 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/demo_task_apps/math/modal_task_app.py +9 -3
- synth_ai-0.2.8/synth_ai/handshake.py +107 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8/synth_ai.egg-info}/PKG-INFO +30 -6
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai.egg-info/SOURCES.txt +1 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai.egg-info/requires.txt +2 -1
- synth_ai-0.2.6.dev6/synth_ai/demos/demo_task_apps/math/config.toml +0 -44
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/LICENSE +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/MANIFEST.in +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/setup.cfg +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/__main__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/balance.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/calc.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/legacy_root_backup.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/man.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/recent.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/status.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/traces.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/cli/watch.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/compound/cais.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/config/base_url.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/core/experiment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/core/system.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/core/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/demo_task_apps/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/demo_task_apps/math/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/demo_task_apps/math/_common.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/demo_task_apps/math/app.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/demo_task_apps/math/deploy_modal.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/demos/demo_task_apps/math/deploy_task_app.sh +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/artifacts/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/artifacts/base.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/core.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/db/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/db/sqlite.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/registry.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/resources/sqlite.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/results.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/rewards/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/rewards/core.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/shared_engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/environment/tools/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/bandit/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/bandit/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/bandit/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/bandit/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_config.toml +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_framework.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_lm_traces.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_no_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_trace_issue.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_db_schema.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_latest_results.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/debug_agent_responses.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/quick_trace_check.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/compare_experiments.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_hook_storage.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_seeds.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/compare_seed_performance.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/custom_eval_pipelines.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/plot_hook_frequency.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/seed_analysis_summary.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/compare_traces.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_env_serialization.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/debug_player_loss.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_service.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_slowness.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_by_difficulty.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_example.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/explore_saved_states.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft_OLD.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_gemini.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_modal.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_metadata.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_gemini.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/prepare_vertex_ft.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/profile_env_slowness.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/replicate_issue.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_and_eval.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_comparison.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_qwen_rollouts.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/trace_eval_OLD.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/validate_openai_format.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/config_logging.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/debug_translation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/engine_helpers/action_map.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/engine_helpers/serialization.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/crafter/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/crafter/config.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/crafter/constants.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/crafter/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/crafter/env.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/crafter/objects.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/crafter/recorder.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/crafter/worldgen.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/dataset_builder.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_issue.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_spawning.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/old/compare_worlds.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/old/dataset_stats.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/old/diamond_spawning_summary.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/old/example_dataset_usage.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/crafter_custom/run_dataset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/enron/art_helpers/email_search_tools.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/enron/art_helpers/local_email_db.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/enron/art_helpers/types_enron.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/enron/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/enron/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/enron/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/enron/units/keyword_stats.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_evaluation_framework.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_quick_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_react_agent.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_trace_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/environment_mapping.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/puzzle_loader.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/minigrid/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/achievements.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/agent_demos/nethack_evaluation_framework.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/agent_demos/nethack_quick_evaluation.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/agent_demos/nethack_react_agent.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/helpers/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/helpers/action_mapping.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/helpers/nle_wrapper.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/helpers/observation_utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/helpers/recording_wrapper.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/helpers/trajectory_recorder.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/helpers/visualization/replay_viewer.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/helpers/visualization/visualizer.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/nethack/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/config_logging.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/memory_map.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_components.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/adaptive_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/battle_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/composite_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/economy_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/efficiency_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/exploration_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/novelty_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/pokemon_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/social_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/reward_library/story_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/screen_analysis.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/engine_helpers/state_extraction.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/red/units/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/agent_demos/sokoban_full_eval.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/room_utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/boxoban_env.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/render_utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/room_utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_fixed_targets.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_pull.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_two_player.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_variations.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/generate_verified_puzzles.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/puzzle_loader.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/sokoban/units/astar_common.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/tictactoe/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/tictactoe/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/tictactoe/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/tictactoe/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/verilog/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/verilog/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/verilog/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/verilog/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/wordle/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/wordle/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/wordle/environment.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/examples/wordle/taskset.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/reproducibility/core.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/reproducibility/helpers.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/reproducibility/tree.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/service/app.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/service/core_routes.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/service/external_registry.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/service/registry.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/stateful/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/stateful/core.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/stateful/engine.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/stateful/state.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/tasks/api.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/tasks/core.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/tasks/filters.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/tasks/utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/v0_observability/history.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/environments/v0_observability/log.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/evals/base.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/experimental/synth_oss.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/http.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/http_client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/inference/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/inference/client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/install_sqld.sh +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/jobs/client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/config.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/constants.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/core.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/filtering.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/ft_client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/gateway.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/health.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/jobs.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/offline/dpo.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/offline/providers.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/offline/sft.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/offline/shared.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/online/grpo.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/online/irft.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/prompts/banking77_injection_eval.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/prompts/gepa.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/prompts/mipro.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/prompts/random_search.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/prompts/run_mipro_banking77.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/prompts/run_random_search_banking77.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/rl_client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/sse.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/learning/validators.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/caching/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/caching/constants.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/caching/dbs.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/caching/ephemeral.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/caching/handler.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/caching/initialize.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/caching/persistent.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/config.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/constants.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/core/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/core/all.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/core/exceptions.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/core/main.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/core/main_v3.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/core/synth_models.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/core/vendor_clients.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/cost/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/cost/monitor.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/cost/statefulness.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/injection.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/overrides.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/provider_support/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/provider_support/anthropic.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/provider_support/openai.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/provider_support/suppress_logging.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/structured_outputs/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/structured_outputs/handler.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/structured_outputs/inject.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/structured_outputs/rehabilitate.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/tools/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/tools/base.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/unified_interface.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/base.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/core/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/core/anthropic_api.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/core/gemini_api.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/core/mistral_api.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/core/openai_api.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/core/synth_dev_api.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/local/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/local/ollama.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/openai_standard.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/openai_standard_responses.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/retries.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/supported/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/supported/custom_endpoint.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/supported/deepseek.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/supported/grok.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/supported/groq.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/supported/ollama.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/supported/openrouter.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/supported/together.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/vendors/synth_client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/lm/warmup.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/rl/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/rl/contracts.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/rl/env_keys.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/rl/secrets.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/scripts/verify_rewards.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/task/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/task/contracts.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/task/health.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/task/validators.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/abstractions.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/config.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/db_config.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/decorators.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/examples/basic_usage.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/hooks.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/llm_call_record_helpers.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/lm_call_record_abstractions.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/migration_helper.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/replica_sync.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/session_tracer.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/storage/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/storage/base.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/storage/config.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/storage/exceptions.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/storage/factory.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/storage/types.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/storage/utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/turso/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/turso/daemon.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/turso/manager.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/turso/models.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/tracing_v3/utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/abstractions.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/base_client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/client_manager.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/config.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/context.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/decorators.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/events/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/events/manage.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/events/scope.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/events/store.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/immediate_client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/local.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/log_client_base.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/retry_queue.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/trackers.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/upload.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing/utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/abstractions.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/base_client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/client_manager.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/config.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/context.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/decorators.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/events/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/events/manage.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/events/scope.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/events/store.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/immediate_client.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/local.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/log_client_base.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/retry_queue.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/trackers.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/upload.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/v0/tracing_v1/utils.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai/zyk/__init__.py +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.2.6.dev6 → synth_ai-0.2.8}/synth_ai.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synth-ai
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.8
|
|
4
4
|
Summary: RL as a service SDK - Core AI functionality and tracing
|
|
5
5
|
Author-email: Synth AI <josh@usesynth.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -14,6 +14,7 @@ Requires-Dist: pydantic>=2.0.0
|
|
|
14
14
|
Requires-Dist: python-dotenv>=1.0.1
|
|
15
15
|
Requires-Dist: requests>=2.32.3
|
|
16
16
|
Requires-Dist: urllib3>=2.3.0
|
|
17
|
+
Requires-Dist: certifi>=2024.8.30
|
|
17
18
|
Requires-Dist: tqdm>=4.66.4
|
|
18
19
|
Requires-Dist: jsonschema>=4.23.0
|
|
19
20
|
Requires-Dist: backoff>=2.0.0
|
|
@@ -52,7 +53,7 @@ Requires-Dist: asyncpg>=0.30.0
|
|
|
52
53
|
Requires-Dist: aiohttp>=3.8.0
|
|
53
54
|
Requires-Dist: datasets>=4.0.0
|
|
54
55
|
Requires-Dist: transformers>=4.56.1
|
|
55
|
-
Requires-Dist: modal>=1.1.
|
|
56
|
+
Requires-Dist: modal>=1.1.0
|
|
56
57
|
Provides-Extra: dev
|
|
57
58
|
Requires-Dist: build>=1.2.2.post1; extra == "dev"
|
|
58
59
|
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
@@ -97,10 +98,33 @@ synth-ai comes with a built-in RL example tailored for training Qwen/Qwen3-0.6B
|
|
|
97
98
|
Please create an account at [Synth](https://usesynth.ai) and [Modal](https://modal.com) for the Math hello‑world test run. Then run:
|
|
98
99
|
|
|
99
100
|
```bash
|
|
100
|
-
uvx synth-ai
|
|
101
|
-
uvx synth-ai
|
|
102
|
-
uvx synth-ai
|
|
103
|
-
uvx synth-ai
|
|
101
|
+
uvx synth-ai demo
|
|
102
|
+
uvx synth-ai setup
|
|
103
|
+
uvx synth-ai deploy
|
|
104
|
+
uvx synth-ai run
|
|
104
105
|
```
|
|
105
106
|
|
|
106
107
|
To walk through kicking off your first RL run, see the [Synth‑AI Documentation](https://docs.usesynth.ai/synth-ai/introduction).
|
|
108
|
+
|
|
109
|
+
### What `setup` does now
|
|
110
|
+
|
|
111
|
+
When you run `uvx synth-ai setup` (or the legacy `uvx synth-ai rl_demo setup`), the SDK opens your browser to the Synth dashboard for a one‑time pairing (handshake) with your signed‑in session. The SDK will automatically:
|
|
112
|
+
|
|
113
|
+
- Detect your current user and organization
|
|
114
|
+
- Ensure both API keys exist for that user+org
|
|
115
|
+
- Write the keys to your project’s `.env` file as `SYNTH_API_KEY` and `ENVIRONMENT_API_KEY`
|
|
116
|
+
|
|
117
|
+
No keys are printed or requested interactively. You’ll see a confirmation like:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
Connecting SDK to your browser session…
|
|
121
|
+
Connected to Acme Labs via browser.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
If your browser isn’t already signed in, sign in when prompted and the pairing completes automatically. The dashboard’s welcome modal will reflect a successful pairing.
|
|
125
|
+
|
|
126
|
+
Environment variables:
|
|
127
|
+
|
|
128
|
+
- `SYNTH_CANONICAL_ORIGIN` (optional): override the dashboard base URL the SDK uses for the handshake (defaults to `https://www.usesynth.ai/dashboard`).
|
|
129
|
+
- `SYNTH_CANONICAL_DEV` (optional): set to `1`, `true`, `yes`, or `on` to target the local dashboard at `http://localhost:3000`.
|
|
130
|
+
- Keys are stored only in your project’s `.env` file, not exported to your shell.
|
|
@@ -24,10 +24,33 @@ synth-ai comes with a built-in RL example tailored for training Qwen/Qwen3-0.6B
|
|
|
24
24
|
Please create an account at [Synth](https://usesynth.ai) and [Modal](https://modal.com) for the Math hello‑world test run. Then run:
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
uvx synth-ai
|
|
28
|
-
uvx synth-ai
|
|
29
|
-
uvx synth-ai
|
|
30
|
-
uvx synth-ai
|
|
27
|
+
uvx synth-ai demo
|
|
28
|
+
uvx synth-ai setup
|
|
29
|
+
uvx synth-ai deploy
|
|
30
|
+
uvx synth-ai run
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
To walk through kicking off your first RL run, see the [Synth‑AI Documentation](https://docs.usesynth.ai/synth-ai/introduction).
|
|
34
|
+
|
|
35
|
+
### What `setup` does now
|
|
36
|
+
|
|
37
|
+
When you run `uvx synth-ai setup` (or the legacy `uvx synth-ai rl_demo setup`), the SDK opens your browser to the Synth dashboard for a one‑time pairing (handshake) with your signed‑in session. The SDK will automatically:
|
|
38
|
+
|
|
39
|
+
- Detect your current user and organization
|
|
40
|
+
- Ensure both API keys exist for that user+org
|
|
41
|
+
- Write the keys to your project’s `.env` file as `SYNTH_API_KEY` and `ENVIRONMENT_API_KEY`
|
|
42
|
+
|
|
43
|
+
No keys are printed or requested interactively. You’ll see a confirmation like:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Connecting SDK to your browser session…
|
|
47
|
+
Connected to Acme Labs via browser.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
If your browser isn’t already signed in, sign in when prompted and the pairing completes automatically. The dashboard’s welcome modal will reflect a successful pairing.
|
|
51
|
+
|
|
52
|
+
Environment variables:
|
|
53
|
+
|
|
54
|
+
- `SYNTH_CANONICAL_ORIGIN` (optional): override the dashboard base URL the SDK uses for the handshake (defaults to `https://www.usesynth.ai/dashboard`).
|
|
55
|
+
- `SYNTH_CANONICAL_DEV` (optional): set to `1`, `true`, `yes`, or `on` to target the local dashboard at `http://localhost:3000`.
|
|
56
|
+
- Keys are stored only in your project’s `.env` file, not exported to your shell.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "synth-ai"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.8"
|
|
4
4
|
description = "RL as a service SDK - Core AI functionality and tracing"
|
|
5
5
|
authors = [{name = "Synth AI", email = "josh@usesynth.ai"}]
|
|
6
6
|
license = "MIT"
|
|
@@ -12,6 +12,7 @@ dependencies = [
|
|
|
12
12
|
"python-dotenv>=1.0.1",
|
|
13
13
|
"requests>=2.32.3",
|
|
14
14
|
"urllib3>=2.3.0",
|
|
15
|
+
"certifi>=2024.8.30",
|
|
15
16
|
"tqdm>=4.66.4",
|
|
16
17
|
"jsonschema>=4.23.0",
|
|
17
18
|
"backoff>=2.0.0",
|
|
@@ -54,7 +55,7 @@ dependencies = [
|
|
|
54
55
|
"aiohttp>=3.8.0", # For async HTTP requests in Harmony integration
|
|
55
56
|
"datasets>=4.0.0",
|
|
56
57
|
"transformers>=4.56.1",
|
|
57
|
-
"modal>=1.1.
|
|
58
|
+
"modal>=1.1.0",
|
|
58
59
|
]
|
|
59
60
|
|
|
60
61
|
[project.scripts]
|
|
@@ -35,64 +35,73 @@ def _forward_to_new(args: list[str]) -> None:
|
|
|
35
35
|
|
|
36
36
|
def register(cli):
|
|
37
37
|
@cli.group("demo", invoke_without_command=True)
|
|
38
|
+
@click.option("--force", is_flag=True, help="Overwrite existing files in CWD when initializing demo")
|
|
38
39
|
@click.option("--list", "list_only", is_flag=True, help="List available legacy demos and exit")
|
|
39
40
|
@click.option("-f", "filter_term", default="", help="Filter legacy demos by substring")
|
|
40
41
|
@click.pass_context
|
|
41
|
-
def demo(ctx: click.Context, list_only: bool, filter_term: str):
|
|
42
|
+
def demo(ctx: click.Context, force: bool, list_only: bool, filter_term: str):
|
|
42
43
|
"""Demo helpers.
|
|
43
44
|
|
|
44
|
-
-
|
|
45
|
+
- Default (no subcommand): initialize RL demo files into ./synth_demo/ (alias of rl_demo init)
|
|
46
|
+
- Legacy mode: with --list, find and run examples/*/run_demo.sh
|
|
45
47
|
- New RL demo subcommands: deploy, configure, run
|
|
46
48
|
"""
|
|
47
49
|
if ctx.invoked_subcommand is not None:
|
|
48
50
|
return
|
|
49
|
-
# Legacy behavior: interactive examples runner
|
|
50
|
-
repo_root = Path(os.getcwd())
|
|
51
|
-
examples_dir = repo_root / "examples"
|
|
52
|
-
demos = _find_demo_scripts(examples_dir)
|
|
53
|
-
if filter_term:
|
|
54
|
-
demos = [p for p in demos if filter_term.lower() in str(p).lower()]
|
|
55
|
-
|
|
56
|
-
if not demos:
|
|
57
|
-
click.echo("No run_demo.sh scripts found under examples/.")
|
|
58
|
-
return
|
|
59
51
|
|
|
52
|
+
# If explicitly asked to list legacy demos, show interactive picker
|
|
60
53
|
if list_only:
|
|
54
|
+
repo_root = Path(os.getcwd())
|
|
55
|
+
examples_dir = repo_root / "examples"
|
|
56
|
+
demos = _find_demo_scripts(examples_dir)
|
|
57
|
+
if filter_term:
|
|
58
|
+
demos = [p for p in demos if filter_term.lower() in str(p).lower()]
|
|
59
|
+
|
|
60
|
+
if not demos:
|
|
61
|
+
click.echo("No run_demo.sh scripts found under examples/.")
|
|
62
|
+
return
|
|
63
|
+
|
|
61
64
|
click.echo("Available demos:")
|
|
62
|
-
for p in demos:
|
|
63
|
-
click.echo(f"
|
|
64
|
-
|
|
65
|
+
for idx, p in enumerate(demos, start=1):
|
|
66
|
+
click.echo(f" {idx}. {p.relative_to(repo_root)}")
|
|
67
|
+
click.echo("")
|
|
68
|
+
|
|
69
|
+
def _validate_choice(val: str) -> int:
|
|
70
|
+
try:
|
|
71
|
+
i = int(val)
|
|
72
|
+
except Exception as err:
|
|
73
|
+
raise click.BadParameter("Enter a number from the list") from err
|
|
74
|
+
if i < 1 or i > len(demos):
|
|
75
|
+
raise click.BadParameter(f"Choose a number between 1 and {len(demos)}")
|
|
76
|
+
return i
|
|
77
|
+
|
|
78
|
+
choice = click.prompt("Select a demo to run", value_proc=_validate_choice)
|
|
79
|
+
script = demos[choice - 1]
|
|
65
80
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
click.echo(f" {idx}. {p.relative_to(repo_root)}")
|
|
69
|
-
click.echo("")
|
|
81
|
+
click.echo("")
|
|
82
|
+
click.echo(f"🚀 Running {script.relative_to(repo_root)}\n")
|
|
70
83
|
|
|
71
|
-
def _validate_choice(val: str) -> int:
|
|
72
84
|
try:
|
|
73
|
-
|
|
74
|
-
except
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
try:
|
|
87
|
-
subprocess.run(["bash", str(script)], check=True)
|
|
88
|
-
except subprocess.CalledProcessError as e:
|
|
89
|
-
click.echo(f"❌ Demo exited with non-zero status: {e.returncode}")
|
|
90
|
-
except KeyboardInterrupt:
|
|
91
|
-
click.echo("\n🛑 Demo interrupted by user")
|
|
85
|
+
subprocess.run(["bash", str(script)], check=True)
|
|
86
|
+
except subprocess.CalledProcessError as e:
|
|
87
|
+
click.echo(f"❌ Demo exited with non-zero status: {e.returncode}")
|
|
88
|
+
except KeyboardInterrupt:
|
|
89
|
+
click.echo("\n🛑 Demo interrupted by user")
|
|
90
|
+
return
|
|
91
|
+
|
|
92
|
+
# Default: forward to RL demo init behavior, optionally with --force
|
|
93
|
+
args: list[str] = ["rl_demo.init"]
|
|
94
|
+
if force:
|
|
95
|
+
args.append("--force")
|
|
96
|
+
_forward_to_new(args)
|
|
92
97
|
|
|
93
98
|
# (prepare command removed; configure now prepares baseline TOML)
|
|
94
99
|
|
|
95
|
-
|
|
100
|
+
# Help pyright understand dynamic Click group attributes
|
|
101
|
+
from typing import Any, cast as _cast
|
|
102
|
+
_dg = _cast(Any, demo)
|
|
103
|
+
|
|
104
|
+
@_dg.command("deploy")
|
|
96
105
|
@click.option("--local", is_flag=True, help="Run local FastAPI instead of Modal deploy")
|
|
97
106
|
@click.option("--app", type=click.Path(), default=None, help="Path to Modal app.py for uv run modal deploy")
|
|
98
107
|
@click.option("--name", type=str, default="synth-math-demo", help="Modal app name")
|
|
@@ -109,11 +118,15 @@ def register(cli):
|
|
|
109
118
|
args.extend(["--script", script])
|
|
110
119
|
_forward_to_new(args)
|
|
111
120
|
|
|
112
|
-
@
|
|
121
|
+
@_dg.command("configure")
|
|
113
122
|
def demo_configure():
|
|
114
123
|
_forward_to_new(["rl_demo.configure"])
|
|
115
124
|
|
|
116
|
-
@
|
|
125
|
+
@_dg.command("setup")
|
|
126
|
+
def demo_setup():
|
|
127
|
+
_forward_to_new(["rl_demo.setup"])
|
|
128
|
+
|
|
129
|
+
@_dg.command("run")
|
|
117
130
|
@click.option("--batch-size", type=int, default=None)
|
|
118
131
|
@click.option("--group-size", type=int, default=None)
|
|
119
132
|
@click.option("--model", type=str, default=None)
|
|
@@ -7,6 +7,7 @@ Usage examples:
|
|
|
7
7
|
uvx synth-ai rl_demo deploy --app /path/to/math_task_app.py --name synth-math-demo
|
|
8
8
|
uvx synth-ai rl_demo configure
|
|
9
9
|
uvx synth-ai rl_demo run --batch-size 4 --group-size 16 --model Qwen/Qwen3-0.6B
|
|
10
|
+
uvx synth-ai run --config demo_config.toml
|
|
10
11
|
|
|
11
12
|
For convenience, dotted aliases are also exposed:
|
|
12
13
|
uvx synth-ai rl_demo.check
|
|
@@ -38,9 +39,9 @@ def register(cli):
|
|
|
38
39
|
from typing import Any, cast as _cast
|
|
39
40
|
_rlg = _cast(Any, rl_demo)
|
|
40
41
|
|
|
41
|
-
@_rlg.command("
|
|
42
|
-
def
|
|
43
|
-
_forward(["rl_demo.
|
|
42
|
+
@_rlg.command("setup")
|
|
43
|
+
def rl_setup():
|
|
44
|
+
_forward(["rl_demo.setup"]) # primary setup command
|
|
44
45
|
|
|
45
46
|
# (prepare command removed; consolidated into configure)
|
|
46
47
|
|
|
@@ -96,10 +97,14 @@ def register(cli):
|
|
|
96
97
|
args.append("--dry-run")
|
|
97
98
|
_forward(args)
|
|
98
99
|
|
|
99
|
-
# Dotted aliases (top-level)
|
|
100
|
+
# Dotted aliases (top-level): legacy check → setup
|
|
100
101
|
@cli.command("rl_demo.check")
|
|
101
102
|
def rl_check_alias():
|
|
102
|
-
_forward(["rl_demo.
|
|
103
|
+
_forward(["rl_demo.setup"])
|
|
104
|
+
|
|
105
|
+
@cli.command("rl_demo.setup")
|
|
106
|
+
def rl_setup_alias():
|
|
107
|
+
_forward(["rl_demo.setup"])
|
|
103
108
|
|
|
104
109
|
# (prepare alias removed)
|
|
105
110
|
|
|
@@ -154,3 +159,44 @@ def register(cli):
|
|
|
154
159
|
if dry_run:
|
|
155
160
|
args.append("--dry-run")
|
|
156
161
|
_forward(args)
|
|
162
|
+
|
|
163
|
+
# Top-level convenience alias: `synth-ai deploy`
|
|
164
|
+
@cli.command("deploy")
|
|
165
|
+
@click.option("--local", is_flag=True, help="Run local FastAPI instead of Modal deploy")
|
|
166
|
+
@click.option("--app", type=click.Path(), default=None, help="Path to Modal app.py for uv run modal deploy")
|
|
167
|
+
@click.option("--name", type=str, default="synth-math-demo", help="Modal app name")
|
|
168
|
+
@click.option("--script", type=click.Path(), default=None, help="Path to deploy_task_app.sh (optional legacy)")
|
|
169
|
+
def deploy_top(local: bool, app: str | None, name: str, script: str | None):
|
|
170
|
+
args: list[str] = ["rl_demo.deploy"]
|
|
171
|
+
if local:
|
|
172
|
+
args.append("--local")
|
|
173
|
+
if app:
|
|
174
|
+
args.extend(["--app", app])
|
|
175
|
+
if name:
|
|
176
|
+
args.extend(["--name", name])
|
|
177
|
+
if script:
|
|
178
|
+
args.extend(["--script", script])
|
|
179
|
+
_forward(args)
|
|
180
|
+
|
|
181
|
+
@cli.command("run")
|
|
182
|
+
@click.option("--config", type=click.Path(), default=None, help="Path to TOML config (skip prompt)")
|
|
183
|
+
@click.option("--batch-size", type=int, default=None)
|
|
184
|
+
@click.option("--group-size", type=int, default=None)
|
|
185
|
+
@click.option("--model", type=str, default=None)
|
|
186
|
+
@click.option("--timeout", type=int, default=600)
|
|
187
|
+
@click.option("--dry-run", is_flag=True, help="Print request body and exit")
|
|
188
|
+
def run_top(config: str | None, batch_size: int | None, group_size: int | None, model: str | None, timeout: int, dry_run: bool):
|
|
189
|
+
args = ["run"]
|
|
190
|
+
if config:
|
|
191
|
+
args.extend(["--config", config])
|
|
192
|
+
if batch_size is not None:
|
|
193
|
+
args.extend(["--batch-size", str(batch_size)])
|
|
194
|
+
if group_size is not None:
|
|
195
|
+
args.extend(["--group-size", str(group_size)])
|
|
196
|
+
if model:
|
|
197
|
+
args.extend(["--model", model])
|
|
198
|
+
if timeout is not None:
|
|
199
|
+
args.extend(["--timeout", str(timeout)])
|
|
200
|
+
if dry_run:
|
|
201
|
+
args.append("--dry-run")
|
|
202
|
+
_forward(args)
|
|
@@ -117,6 +117,12 @@ def configure():
|
|
|
117
117
|
_forward_to_demo(["rl_demo.configure"])
|
|
118
118
|
|
|
119
119
|
|
|
120
|
+
@demo.command()
|
|
121
|
+
def setup():
|
|
122
|
+
"""Perform SDK handshake and write keys to .env."""
|
|
123
|
+
_forward_to_demo(["rl_demo.setup"])
|
|
124
|
+
|
|
125
|
+
|
|
120
126
|
@demo.command()
|
|
121
127
|
@click.option("--batch-size", type=int, default=None)
|
|
122
128
|
@click.option("--group-size", type=int, default=None)
|
|
@@ -136,6 +142,12 @@ def run(batch_size: int | None, group_size: int | None, model: str | None, timeo
|
|
|
136
142
|
_forward_to_demo(args)
|
|
137
143
|
|
|
138
144
|
|
|
145
|
+
@cli.command()
|
|
146
|
+
def setup():
|
|
147
|
+
"""Perform SDK handshake and write keys to .env."""
|
|
148
|
+
_forward_to_demo(["rl_demo.setup"])
|
|
149
|
+
|
|
150
|
+
|
|
139
151
|
@cli.command()
|
|
140
152
|
@click.option("--db-file", default="traces/v3/synth_ai.db", help="Database file path")
|
|
141
153
|
@click.option("--sqld-port", default=8080, type=int, help="Port for sqld HTTP interface")
|