synth-ai 0.2.8.dev7__tar.gz → 0.2.8.dev9__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.8.dev7/synth_ai.egg-info → synth_ai-0.2.8.dev9}/PKG-INFO +1 -1
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/pyproject.toml +1 -1
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/core/cli.py +40 -91
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/core.py +13 -11
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/modal_task_app.py +72 -12
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9/synth_ai.egg-info}/PKG-INFO +1 -1
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/LICENSE +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/MANIFEST.in +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/README.md +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/setup.cfg +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/__main__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/balance.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/calc.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/demo.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/legacy_root_backup.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/man.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/recent.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/rl_demo.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/root.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/status.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/traces.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/cli/watch.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/compound/cais.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/config/base_url.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/core/experiment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/core/system.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/_common.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/app.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/config.toml +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/deploy_modal.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/deploy_task_app.sh +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/artifacts/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/artifacts/base.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/core.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/db/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/db/sqlite.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/registry.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/resources/sqlite.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/results.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/rewards/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/rewards/core.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/shared_engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/tools/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/bandit/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/bandit/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/bandit/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/bandit/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_config.toml +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_lm_traces.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_no_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_trace_issue.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_db_schema.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_latest_results.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/debug_agent_responses.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/quick_trace_check.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/compare_experiments.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_hook_storage.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_seeds.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/compare_seed_performance.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/custom_eval_pipelines.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/plot_hook_frequency.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/seed_analysis_summary.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/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.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/compare_traces.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_env_serialization.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/debug_player_loss.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_service.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_slowness.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_by_difficulty.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_example.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/explore_saved_states.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft_OLD.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_gemini.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_modal.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_metadata.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_gemini.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/prepare_vertex_ft.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/profile_env_slowness.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/replicate_issue.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_and_eval.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_comparison.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_qwen_rollouts.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/trace_eval_OLD.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/validate_openai_format.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/config_logging.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/debug_translation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/engine_helpers/action_map.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/engine_helpers/serialization.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/crafter/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/crafter/config.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/crafter/constants.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/crafter/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/crafter/env.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/crafter/objects.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/crafter/recorder.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/crafter/worldgen.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/dataset_builder.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_issue.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_spawning.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/old/compare_worlds.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/old/dataset_stats.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/old/diamond_spawning_summary.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/old/example_dataset_usage.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/crafter_custom/run_dataset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/enron/art_helpers/email_search_tools.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/enron/art_helpers/local_email_db.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/enron/art_helpers/types_enron.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/enron/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/enron/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/enron/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/enron/units/keyword_stats.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_react_agent.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/environment_mapping.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/puzzle_loader.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/minigrid/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/achievements.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/agent_demos/nethack_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/agent_demos/nethack_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/agent_demos/nethack_react_agent.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/helpers/action_mapping.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/helpers/nle_wrapper.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/helpers/observation_utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/helpers/recording_wrapper.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/helpers/trajectory_recorder.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/helpers/visualization/replay_viewer.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/helpers/visualization/visualizer.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/nethack/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/config_logging.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/memory_map.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_components.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/adaptive_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/battle_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/composite_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/economy_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/efficiency_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/exploration_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/novelty_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/pokemon_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/social_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/story_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/screen_analysis.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/engine_helpers/state_extraction.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/red/units/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/agent_demos/sokoban_full_eval.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/room_utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/boxoban_env.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/render_utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/room_utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_fixed_targets.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_pull.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_two_player.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_variations.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/generate_verified_puzzles.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/puzzle_loader.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/sokoban/units/astar_common.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/tictactoe/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/tictactoe/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/tictactoe/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/tictactoe/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/verilog/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/verilog/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/verilog/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/verilog/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/wordle/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/wordle/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/wordle/environment.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/wordle/taskset.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/reproducibility/core.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/reproducibility/helpers.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/reproducibility/tree.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/service/app.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/service/core_routes.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/service/external_registry.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/service/registry.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/stateful/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/stateful/core.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/stateful/engine.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/stateful/state.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/tasks/api.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/tasks/core.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/tasks/filters.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/tasks/utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/v0_observability/history.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/v0_observability/log.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/evals/base.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/experimental/synth_oss.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/handshake.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/http.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/http_client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/inference/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/inference/client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/install_sqld.sh +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/jobs/client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/config.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/constants.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/core.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/filtering.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/ft_client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/gateway.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/health.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/jobs.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/offline/dpo.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/offline/providers.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/offline/sft.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/offline/shared.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/online/grpo.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/online/irft.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/prompts/banking77_injection_eval.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/prompts/gepa.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/prompts/mipro.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/prompts/random_search.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/prompts/run_mipro_banking77.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/prompts/run_random_search_banking77.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/rl_client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/sse.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/learning/validators.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/caching/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/caching/constants.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/caching/dbs.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/caching/ephemeral.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/caching/handler.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/caching/initialize.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/caching/persistent.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/config.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/constants.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/core/all.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/core/exceptions.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/core/main.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/core/main_v3.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/core/synth_models.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/core/vendor_clients.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/cost/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/cost/monitor.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/cost/statefulness.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/injection.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/overrides.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/provider_support/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/provider_support/anthropic.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/provider_support/openai.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/provider_support/suppress_logging.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/structured_outputs/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/structured_outputs/handler.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/structured_outputs/inject.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/structured_outputs/rehabilitate.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/tools/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/tools/base.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/unified_interface.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/base.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/core/anthropic_api.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/core/gemini_api.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/core/mistral_api.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/core/openai_api.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/core/synth_dev_api.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/local/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/local/ollama.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/openai_standard.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/openai_standard_responses.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/retries.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/supported/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/supported/custom_endpoint.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/supported/deepseek.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/supported/grok.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/supported/groq.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/supported/ollama.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/supported/openrouter.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/supported/together.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/vendors/synth_client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/lm/warmup.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/rl/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/rl/contracts.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/rl/env_keys.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/rl/secrets.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/scripts/verify_rewards.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/task/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/task/contracts.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/task/health.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/task/validators.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/abstractions.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/config.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/db_config.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/decorators.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/examples/basic_usage.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/hooks.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/llm_call_record_helpers.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/lm_call_record_abstractions.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/migration_helper.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/replica_sync.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/session_tracer.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/storage/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/storage/base.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/storage/config.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/storage/exceptions.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/storage/factory.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/storage/types.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/storage/utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/turso/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/turso/daemon.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/turso/manager.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/turso/models.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/tracing_v3/utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/abstractions.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/base_client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/client_manager.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/config.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/context.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/decorators.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/events/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/events/manage.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/events/scope.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/events/store.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/immediate_client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/local.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/log_client_base.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/retry_queue.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/trackers.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/upload.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing/utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/abstractions.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/base_client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/client_manager.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/config.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/context.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/decorators.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/events/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/events/manage.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/events/scope.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/events/store.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/immediate_client.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/local.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/log_client_base.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/retry_queue.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/trackers.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/upload.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/v0/tracing_v1/utils.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/zyk/__init__.py +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai.egg-info/SOURCES.txt +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai.egg-info/requires.txt +0 -0
- {synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai.egg-info/top_level.txt +0 -0
|
@@ -13,7 +13,19 @@ import textwrap
|
|
|
13
13
|
|
|
14
14
|
from synth_ai.demos.demo_task_apps import core as demo_core
|
|
15
15
|
from synth_ai.handshake import run_handshake, HandshakeError
|
|
16
|
-
from synth_ai.demos.demo_task_apps.core import DemoEnv
|
|
16
|
+
from synth_ai.demos.demo_task_apps.core import DemoEnv, DEFAULT_TASK_APP_SECRET_NAME
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _key_preview(value: str, label: str) -> str:
|
|
20
|
+
"""Return a short descriptor for a secret without leaking the full value."""
|
|
21
|
+
try:
|
|
22
|
+
text = value or ""
|
|
23
|
+
length = len(text)
|
|
24
|
+
prefix = text[:6] if length >= 6 else text
|
|
25
|
+
suffix = text[-5:] if length >= 5 else text
|
|
26
|
+
return f"{label} len={length} prefix={prefix} last5={suffix}"
|
|
27
|
+
except Exception:
|
|
28
|
+
return f"{label} len=0"
|
|
17
29
|
|
|
18
30
|
|
|
19
31
|
def _is_modal_public_url(u: str) -> bool:
|
|
@@ -100,7 +112,6 @@ def cmd_setup(_args: argparse.Namespace) -> int:
|
|
|
100
112
|
dotenv_values = {
|
|
101
113
|
"TASK_APP_BASE_URL": new_url,
|
|
102
114
|
"TASK_APP_NAME": env.task_app_name,
|
|
103
|
-
"TASK_APP_SECRET_NAME": env.task_app_secret_name or f"{env.task_app_name}-secret",
|
|
104
115
|
}
|
|
105
116
|
demo_core.persist_dotenv_values(dotenv_values)
|
|
106
117
|
os.environ["TASK_APP_BASE_URL"] = new_url
|
|
@@ -222,55 +233,6 @@ def _popen_stream_capture(cmd: list[str], cwd: str | None = None, env: dict | No
|
|
|
222
233
|
return int(proc.returncode or 0), "\n".join(buf_lines)
|
|
223
234
|
|
|
224
235
|
|
|
225
|
-
def _mask_secret_args(args: list[str]) -> list[str]:
|
|
226
|
-
masked: list[str] = []
|
|
227
|
-
for a in args:
|
|
228
|
-
if "=" in a and any(a.startswith(prefix) for prefix in ("ENVIRONMENT_API_KEY=", "OPENAI_API_KEY=", "SYNTH_API_KEY=")):
|
|
229
|
-
try:
|
|
230
|
-
key, value = a.split("=", 1)
|
|
231
|
-
tail = value[-5:] if len(value) >= 5 else value
|
|
232
|
-
masked.append(f"{key}=***{tail}")
|
|
233
|
-
except Exception:
|
|
234
|
-
masked.append("<masked>")
|
|
235
|
-
else:
|
|
236
|
-
masked.append(a)
|
|
237
|
-
return masked
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
def _ensure_modal_secret(
|
|
241
|
-
secret_name: str,
|
|
242
|
-
*,
|
|
243
|
-
values: dict[str, str],
|
|
244
|
-
label: str = "deploy",
|
|
245
|
-
replace: bool = False,
|
|
246
|
-
) -> bool:
|
|
247
|
-
prefix = f"[{label}]"
|
|
248
|
-
if not secret_name.strip():
|
|
249
|
-
raise RuntimeError("Secret name is required")
|
|
250
|
-
|
|
251
|
-
if not values:
|
|
252
|
-
raise RuntimeError("No values provided to create Modal secret")
|
|
253
|
-
|
|
254
|
-
create_args = [f"{k}={v}" for k, v in values.items()]
|
|
255
|
-
create_cmd = ["uv", "run", "modal", "secret", "create", secret_name, *create_args]
|
|
256
|
-
|
|
257
|
-
if replace:
|
|
258
|
-
print(f"{prefix} Removing Modal secret '{secret_name}' (if present)…")
|
|
259
|
-
delete_cmd = ["bash", "-lc", f"printf 'y\\n' | uv run modal secret delete {secret_name}"]
|
|
260
|
-
print(f"{prefix} Command:", " ".join(delete_cmd))
|
|
261
|
-
delete_code = _popen_stream(delete_cmd)
|
|
262
|
-
if delete_code != 0:
|
|
263
|
-
print(f"{prefix} Warning: delete command exited with {delete_code}; continuing to create")
|
|
264
|
-
|
|
265
|
-
print(f"\n{prefix} Creating Modal secret '{secret_name}'…")
|
|
266
|
-
print(f"{prefix} Command:", " ".join(_mask_secret_args(create_cmd)))
|
|
267
|
-
code = _popen_stream(create_cmd)
|
|
268
|
-
if code != 0:
|
|
269
|
-
raise RuntimeError("Failed to provision Modal secret (see logs above)")
|
|
270
|
-
|
|
271
|
-
return True
|
|
272
|
-
|
|
273
|
-
|
|
274
236
|
def _fmt_float(value: float) -> str:
|
|
275
237
|
return f"{value:.10g}"
|
|
276
238
|
|
|
@@ -639,30 +601,25 @@ def _ensure_task_app_ready(env: DemoEnv, synth_key: str, *, label: str) -> DemoE
|
|
|
639
601
|
app_name = fallback
|
|
640
602
|
demo_core.persist_task_url(task_url, name=app_name)
|
|
641
603
|
|
|
642
|
-
secret_name = env.task_app_secret_name.strip() or f"{app_name}-secret"
|
|
643
604
|
demo_core.persist_task_url(task_url, name=app_name)
|
|
644
605
|
demo_core.persist_dotenv_values({
|
|
645
606
|
"TASK_APP_BASE_URL": task_url,
|
|
646
607
|
"TASK_APP_NAME": app_name,
|
|
647
|
-
"TASK_APP_SECRET_NAME":
|
|
608
|
+
"TASK_APP_SECRET_NAME": DEFAULT_TASK_APP_SECRET_NAME,
|
|
648
609
|
})
|
|
649
610
|
|
|
650
|
-
openai_key = (os.environ.get("OPENAI_API_KEY") or local_env.get("OPENAI_API_KEY") or "").strip()
|
|
651
|
-
secret_values: dict[str, str] = {"ENVIRONMENT_API_KEY": env_key}
|
|
652
|
-
if openai_key:
|
|
653
|
-
secret_values["OPENAI_API_KEY"] = openai_key
|
|
654
611
|
if synth_key:
|
|
655
|
-
|
|
612
|
+
os.environ["SYNTH_API_KEY"] = synth_key
|
|
656
613
|
|
|
657
|
-
|
|
614
|
+
openai_key = (os.environ.get("OPENAI_API_KEY") or local_env.get("OPENAI_API_KEY") or "").strip()
|
|
615
|
+
if openai_key:
|
|
616
|
+
os.environ["OPENAI_API_KEY"] = openai_key
|
|
658
617
|
|
|
659
618
|
rollout_url = task_url.rstrip("/") + "/health/rollout"
|
|
660
619
|
print(f"[{label}] Verifying rollout health:")
|
|
661
620
|
try:
|
|
662
621
|
ek = (env_key or "").strip()
|
|
663
|
-
|
|
664
|
-
ek_tail = ek[-5:] if ek_len >= 5 else ek
|
|
665
|
-
print(f"[{label}] Using ENVIRONMENT_API_KEY len={ek_len} last5={ek_tail}")
|
|
622
|
+
print(f"[{label}] {_key_preview(ek, 'ENVIRONMENT_API_KEY')}")
|
|
666
623
|
except Exception:
|
|
667
624
|
pass
|
|
668
625
|
health_base = task_url.rstrip("/")
|
|
@@ -685,21 +642,27 @@ def _ensure_task_app_ready(env: DemoEnv, synth_key: str, *, label: str) -> DemoE
|
|
|
685
642
|
print(f"[{label}] body:", preview)
|
|
686
643
|
if rc != 200:
|
|
687
644
|
print(f"[{label}] Warning: rollout health check failed ({rc}). Response: {body}")
|
|
645
|
+
try:
|
|
646
|
+
print(f"[{label}] Sent header X-API-Key → {_key_preview(env_key, 'X-API-Key')}")
|
|
647
|
+
except Exception:
|
|
648
|
+
pass
|
|
688
649
|
else:
|
|
689
650
|
print(f"[{label}] Task app rollout health check OK.")
|
|
690
651
|
|
|
691
652
|
os.environ["TASK_APP_BASE_URL"] = task_url
|
|
692
653
|
os.environ["ENVIRONMENT_API_KEY"] = env_key
|
|
654
|
+
os.environ["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
693
655
|
updated_env = demo_core.load_env()
|
|
694
656
|
updated_env.env_api_key = env_key
|
|
695
657
|
updated_env.task_app_base_url = task_url
|
|
696
658
|
updated_env.task_app_name = app_name
|
|
697
|
-
updated_env.task_app_secret_name =
|
|
659
|
+
updated_env.task_app_secret_name = DEFAULT_TASK_APP_SECRET_NAME
|
|
698
660
|
return updated_env
|
|
699
661
|
|
|
700
662
|
|
|
701
663
|
def cmd_deploy(args: argparse.Namespace) -> int:
|
|
702
664
|
env = demo_core.load_env()
|
|
665
|
+
os.environ["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
703
666
|
cwd_env_path = os.path.join(os.getcwd(), ".env")
|
|
704
667
|
local_env = demo_core.load_dotenv_file(cwd_env_path)
|
|
705
668
|
url = ""
|
|
@@ -777,11 +740,6 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
777
740
|
print("Aborted by user.")
|
|
778
741
|
return 1
|
|
779
742
|
|
|
780
|
-
prev_secret = (env.task_app_secret_name or "").strip()
|
|
781
|
-
default_secret = f"{name_in}-secret"
|
|
782
|
-
secret_name = default_secret if not prev_secret else prev_secret
|
|
783
|
-
if prev_secret and prev_secret != default_secret:
|
|
784
|
-
secret_name = default_secret
|
|
785
743
|
existing_env_key = (env.env_api_key or "").strip()
|
|
786
744
|
env_key: str | None = existing_env_key or None
|
|
787
745
|
if existing_env_key:
|
|
@@ -804,6 +762,8 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
804
762
|
env.env_api_key = env_key
|
|
805
763
|
local_env["ENVIRONMENT_API_KEY"] = env_key
|
|
806
764
|
print("[deploy] Minted new ENVIRONMENT_API_KEY")
|
|
765
|
+
elif env_key:
|
|
766
|
+
os.environ["ENVIRONMENT_API_KEY"] = env_key
|
|
807
767
|
|
|
808
768
|
# Optionally upload the new key to the backend using sealed box helper
|
|
809
769
|
backend_base = (env.dev_backend_url or "").rstrip("/")
|
|
@@ -834,13 +794,14 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
834
794
|
|
|
835
795
|
synth_key = (env.synth_api_key or os.environ.get("SYNTH_API_KEY") or local_env.get("SYNTH_API_KEY") or "").strip()
|
|
836
796
|
if not synth_key:
|
|
837
|
-
synth_key = input("Enter SYNTH_API_KEY for
|
|
797
|
+
synth_key = input("Enter SYNTH_API_KEY for deployment (required): ").strip()
|
|
838
798
|
if not synth_key:
|
|
839
|
-
print("SYNTH_API_KEY is required
|
|
799
|
+
print("SYNTH_API_KEY is required for deployment.")
|
|
840
800
|
return 1
|
|
841
801
|
demo_core.persist_api_key(synth_key)
|
|
842
802
|
demo_core.persist_dotenv_values({"SYNTH_API_KEY": synth_key})
|
|
843
803
|
env.synth_api_key = synth_key
|
|
804
|
+
os.environ["SYNTH_API_KEY"] = synth_key
|
|
844
805
|
|
|
845
806
|
openai_key = (os.environ.get("OPENAI_API_KEY") or local_env.get("OPENAI_API_KEY") or "").strip()
|
|
846
807
|
if not openai_key:
|
|
@@ -848,22 +809,11 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
848
809
|
"Enter your OpenAI API key, found at https://platform.openai.com/api-keys\n> "
|
|
849
810
|
).strip()
|
|
850
811
|
if not openai_key:
|
|
851
|
-
print("OPENAI_API_KEY is required
|
|
812
|
+
print("OPENAI_API_KEY is required for deployment.")
|
|
852
813
|
return 1
|
|
853
814
|
demo_core.persist_dotenv_values({"OPENAI_API_KEY": openai_key})
|
|
854
815
|
local_env["OPENAI_API_KEY"] = openai_key
|
|
855
|
-
|
|
856
|
-
values = {"SYNTH_API_KEY": synth_key, "OPENAI_API_KEY": openai_key}
|
|
857
|
-
if env_key:
|
|
858
|
-
values["ENVIRONMENT_API_KEY"] = env_key
|
|
859
|
-
|
|
860
|
-
try:
|
|
861
|
-
created = _ensure_modal_secret(secret_name, values=values, label="deploy", replace=True)
|
|
862
|
-
except RuntimeError as secret_err:
|
|
863
|
-
print(f"Failed to prepare Modal secret '{secret_name}': {secret_err}")
|
|
864
|
-
return 2
|
|
865
|
-
if created:
|
|
866
|
-
print(f"[deploy] Modal secret '{secret_name}' provisioned.")
|
|
816
|
+
os.environ["OPENAI_API_KEY"] = openai_key
|
|
867
817
|
|
|
868
818
|
deploy_cmd = ["uv", "run", "python", "-m", "modal", "deploy", "--name", name_in, app_path]
|
|
869
819
|
print("\nStreaming Modal build/deploy logs (this can take several minutes on first run)…\n")
|
|
@@ -913,7 +863,7 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
913
863
|
dotenv_values = {"TASK_APP_BASE_URL": url}
|
|
914
864
|
if app_name:
|
|
915
865
|
dotenv_values["TASK_APP_NAME"] = app_name
|
|
916
|
-
|
|
866
|
+
dotenv_values["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
917
867
|
dotenv_path = demo_core.persist_dotenv_values(dotenv_values)
|
|
918
868
|
print(f"TASK_APP_BASE_URL={url}")
|
|
919
869
|
if app_name:
|
|
@@ -922,7 +872,6 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
922
872
|
print(f" export TASK_APP_BASE_URL={url}")
|
|
923
873
|
if app_name:
|
|
924
874
|
print(f" export TASK_APP_NAME={app_name}")
|
|
925
|
-
print(f" export TASK_APP_SECRET_NAME={app_name}-secret")
|
|
926
875
|
print(f"Persisted to {dotenv_path}")
|
|
927
876
|
print("\nNext step:\n$ uvx synth-ai run")
|
|
928
877
|
return 0
|
|
@@ -1195,10 +1144,10 @@ def cmd_run(args: argparse.Namespace) -> int:
|
|
|
1195
1144
|
ek = (env.env_api_key or "").strip()
|
|
1196
1145
|
print("Hint: If backend responded 401, verify SYNTH_API_KEY for:", base_url)
|
|
1197
1146
|
if sk:
|
|
1198
|
-
print(f"
|
|
1147
|
+
print(f" {_key_preview(sk, 'SYNTH_API_KEY')}")
|
|
1199
1148
|
if ek:
|
|
1200
|
-
print(f"
|
|
1201
|
-
print("
|
|
1149
|
+
print(f" {_key_preview(ek, 'ENVIRONMENT_API_KEY')}")
|
|
1150
|
+
print("Ensure the ENVIRONMENT_API_KEY you deployed with matches the task app and remains exported.")
|
|
1202
1151
|
return code
|
|
1203
1152
|
|
|
1204
1153
|
# Fallback: legacy jobs API flow
|
|
@@ -1218,7 +1167,7 @@ def cmd_run(args: argparse.Namespace) -> int:
|
|
|
1218
1167
|
sk_len = len(sk)
|
|
1219
1168
|
sk_tail = sk[-5:] if sk_len >= 5 else sk
|
|
1220
1169
|
print(f"[run] Backend API: {api}")
|
|
1221
|
-
print(f"[run]
|
|
1170
|
+
print(f"[run] {_key_preview(sk, 'SYNTH_API_KEY')}")
|
|
1222
1171
|
except Exception:
|
|
1223
1172
|
pass
|
|
1224
1173
|
data_fragment: Dict[str, Any] = {
|
|
@@ -1274,8 +1223,8 @@ def cmd_run(args: argparse.Namespace) -> int:
|
|
|
1274
1223
|
base_url = env.dev_backend_url
|
|
1275
1224
|
print("Hint: HTTP 401 Unauthorized from backend. Verify SYNTH_API_KEY for:", base_url)
|
|
1276
1225
|
if sk:
|
|
1277
|
-
print(f"
|
|
1278
|
-
print("
|
|
1226
|
+
print(f" {_key_preview(sk, 'SYNTH_API_KEY')}")
|
|
1227
|
+
print("Ensure the ENVIRONMENT_API_KEY and OPENAI_API_KEY used for deployment remain valid.")
|
|
1279
1228
|
except Exception:
|
|
1280
1229
|
pass
|
|
1281
1230
|
return 2
|
|
@@ -4,7 +4,6 @@ import json
|
|
|
4
4
|
import os
|
|
5
5
|
import subprocess
|
|
6
6
|
import sys
|
|
7
|
-
import time
|
|
8
7
|
from dataclasses import dataclass
|
|
9
8
|
from typing import Any, Dict, Optional, Tuple
|
|
10
9
|
|
|
@@ -13,6 +12,9 @@ import urllib.request
|
|
|
13
12
|
from synth_ai.config.base_url import PROD_BASE_URL_DEFAULT
|
|
14
13
|
|
|
15
14
|
|
|
15
|
+
DEFAULT_TASK_APP_SECRET_NAME = "hendrycks-math-task-app-secret"
|
|
16
|
+
|
|
17
|
+
|
|
16
18
|
@dataclass
|
|
17
19
|
class DemoEnv:
|
|
18
20
|
dev_backend_url: str = ""
|
|
@@ -20,8 +22,7 @@ class DemoEnv:
|
|
|
20
22
|
env_api_key: str = ""
|
|
21
23
|
task_app_base_url: str = ""
|
|
22
24
|
task_app_name: str = ""
|
|
23
|
-
task_app_secret_name: str =
|
|
24
|
-
|
|
25
|
+
task_app_secret_name: str = DEFAULT_TASK_APP_SECRET_NAME
|
|
25
26
|
|
|
26
27
|
def _mask(value: str, keep: int = 4) -> str:
|
|
27
28
|
if not value:
|
|
@@ -285,7 +286,7 @@ def load_env() -> DemoEnv:
|
|
|
285
286
|
)
|
|
286
287
|
|
|
287
288
|
task_app_name = str(state.get("TASK_APP_NAME") or "")
|
|
288
|
-
task_app_secret_name = str(state.get("TASK_APP_SECRET_NAME") or
|
|
289
|
+
task_app_secret_name = str(state.get("TASK_APP_SECRET_NAME") or DEFAULT_TASK_APP_SECRET_NAME)
|
|
289
290
|
|
|
290
291
|
env.dev_backend_url = dev_url.rstrip("/")
|
|
291
292
|
env.synth_api_key = synth_api_key
|
|
@@ -367,16 +368,17 @@ def persist_task_url(url: str, *, name: str | None = None) -> None:
|
|
|
367
368
|
if data.get("TASK_APP_NAME") != name:
|
|
368
369
|
data["TASK_APP_NAME"] = name
|
|
369
370
|
changed.append("TASK_APP_NAME")
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
371
|
+
if data.get("TASK_APP_SECRET_NAME") != DEFAULT_TASK_APP_SECRET_NAME:
|
|
372
|
+
data["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
373
|
+
changed.append("TASK_APP_SECRET_NAME")
|
|
374
|
+
elif data.get("TASK_APP_SECRET_NAME") != DEFAULT_TASK_APP_SECRET_NAME:
|
|
375
|
+
data["TASK_APP_SECRET_NAME"] = DEFAULT_TASK_APP_SECRET_NAME
|
|
376
|
+
changed.append("TASK_APP_SECRET_NAME")
|
|
375
377
|
_write_state(data)
|
|
376
378
|
if changed:
|
|
377
379
|
print(f"Saved {', '.join(changed)} to {_state_path()}")
|
|
378
|
-
if "
|
|
379
|
-
print(f"TASK_APP_SECRET_NAME={
|
|
380
|
+
if "TASK_APP_SECRET_NAME" in changed:
|
|
381
|
+
print(f"TASK_APP_SECRET_NAME={DEFAULT_TASK_APP_SECRET_NAME}")
|
|
380
382
|
|
|
381
383
|
|
|
382
384
|
def persist_api_key(key: str) -> None:
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/modal_task_app.py
RENAMED
|
@@ -8,6 +8,11 @@ from pathlib import Path
|
|
|
8
8
|
from modal import App, Image, Secret, asgi_app
|
|
9
9
|
from functools import lru_cache
|
|
10
10
|
|
|
11
|
+
try: # Backward compatibility with older installed SDKs
|
|
12
|
+
from synth_ai.demos.demo_task_apps.core import DEFAULT_TASK_APP_SECRET_NAME
|
|
13
|
+
except Exception: # pragma: no cover - occurs on older deployments
|
|
14
|
+
DEFAULT_TASK_APP_SECRET_NAME = "hendrycks-math-task-app-secret"
|
|
15
|
+
|
|
11
16
|
# Self-contained: no external problem bank installer required
|
|
12
17
|
|
|
13
18
|
|
|
@@ -42,16 +47,40 @@ if _SYNTH_HOSTED is not None:
|
|
|
42
47
|
|
|
43
48
|
# No extra local dirs required; app is self-contained
|
|
44
49
|
|
|
50
|
+
|
|
51
|
+
def _build_inline_secret() -> Secret:
|
|
52
|
+
required = ("ENVIRONMENT_API_KEY",)
|
|
53
|
+
optional = ("SYNTH_API_KEY", "OPENAI_API_KEY")
|
|
54
|
+
payload: dict[str, str] = {}
|
|
55
|
+
missing: list[str] = []
|
|
56
|
+
|
|
57
|
+
for key in required:
|
|
58
|
+
value = (os.environ.get(key) or "").strip()
|
|
59
|
+
if not value:
|
|
60
|
+
missing.append(key)
|
|
61
|
+
else:
|
|
62
|
+
payload[key] = value
|
|
63
|
+
|
|
64
|
+
for key in optional:
|
|
65
|
+
value = (os.environ.get(key) or "").strip()
|
|
66
|
+
if value:
|
|
67
|
+
payload[key] = value
|
|
68
|
+
|
|
69
|
+
if missing:
|
|
70
|
+
raise RuntimeError(
|
|
71
|
+
"Missing required environment values for inline secret: " + ", ".join(missing)
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
previews = ", ".join(f"{k}:len={len(v)}" for k, v in payload.items())
|
|
75
|
+
print(f"[startup] TASK_APP_SECRET_NAME={DEFAULT_TASK_APP_SECRET_NAME}")
|
|
76
|
+
print(f"[startup] inline secret prepared ({previews})")
|
|
77
|
+
|
|
78
|
+
return Secret.from_dict(payload)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
INLINE_SECRET = _build_inline_secret()
|
|
82
|
+
|
|
45
83
|
app = App("hendrycks-math-task-app")
|
|
46
|
-
_SECRET_NAME = (
|
|
47
|
-
os.getenv("TASK_APP_SECRET_NAME")
|
|
48
|
-
or os.getenv("MATH_TASK_APP_SECRET")
|
|
49
|
-
or os.getenv("TASK_APP_NAME", "").strip()
|
|
50
|
-
)
|
|
51
|
-
if not _SECRET_NAME:
|
|
52
|
-
_SECRET_NAME = "synth-math-demo-secret"
|
|
53
|
-
elif not _SECRET_NAME.endswith("-secret"):
|
|
54
|
-
_SECRET_NAME = f"{_SECRET_NAME}-secret"
|
|
55
84
|
|
|
56
85
|
|
|
57
86
|
@app.function(
|
|
@@ -60,7 +89,7 @@ elif not _SECRET_NAME.endswith("-secret"):
|
|
|
60
89
|
memory=16384,
|
|
61
90
|
cpu=4,
|
|
62
91
|
min_containers=1,
|
|
63
|
-
secrets=[
|
|
92
|
+
secrets=[INLINE_SECRET],
|
|
64
93
|
)
|
|
65
94
|
@asgi_app()
|
|
66
95
|
def fastapi_app():
|
|
@@ -112,6 +141,23 @@ def fastapi_app():
|
|
|
112
141
|
allow_headers=["*"],
|
|
113
142
|
)
|
|
114
143
|
|
|
144
|
+
import logging
|
|
145
|
+
|
|
146
|
+
logger = logging.getLogger("hendrycks_math_task_app")
|
|
147
|
+
if not logger.handlers:
|
|
148
|
+
logger.addHandler(logging.StreamHandler())
|
|
149
|
+
logger.setLevel(logging.INFO)
|
|
150
|
+
|
|
151
|
+
def _log_env_key_prefix(source: str, env_key: str | None) -> str | None:
|
|
152
|
+
if not env_key:
|
|
153
|
+
return None
|
|
154
|
+
half = max(1, len(env_key) // 2)
|
|
155
|
+
prefix = env_key[:half]
|
|
156
|
+
msg = f"[{source}] expected ENVIRONMENT_API_KEY prefix: {prefix}"
|
|
157
|
+
print(msg)
|
|
158
|
+
logger.info(msg)
|
|
159
|
+
return prefix
|
|
160
|
+
|
|
115
161
|
@app.get("/info")
|
|
116
162
|
async def info():
|
|
117
163
|
return {
|
|
@@ -125,7 +171,14 @@ def fastapi_app():
|
|
|
125
171
|
if not env_key:
|
|
126
172
|
return JSONResponse(status_code=503, content={"status": "unhealthy", "detail": "Missing ENVIRONMENT_API_KEY"})
|
|
127
173
|
if x_api_key is not None and x_api_key != env_key:
|
|
128
|
-
|
|
174
|
+
prefix = _log_env_key_prefix("health", env_key)
|
|
175
|
+
content = {"status": "unauthorized", "detail": "Invalid API key"}
|
|
176
|
+
headers = None
|
|
177
|
+
if prefix:
|
|
178
|
+
content["detail"] = f"Invalid API key (expected prefix: {prefix})"
|
|
179
|
+
content["expected_api_key_prefix"] = prefix
|
|
180
|
+
headers = {"X-Expected-API-Key-Prefix": prefix}
|
|
181
|
+
return JSONResponse(status_code=401, content=content, headers=headers)
|
|
129
182
|
return {"status": "healthy"}
|
|
130
183
|
|
|
131
184
|
# Optional rollout-specific health for CLI compatibility
|
|
@@ -135,7 +188,14 @@ def fastapi_app():
|
|
|
135
188
|
if not env_key:
|
|
136
189
|
return JSONResponse(status_code=503, content={"status": "unhealthy", "detail": "Missing ENVIRONMENT_API_KEY"})
|
|
137
190
|
if not x_api_key or x_api_key != env_key:
|
|
138
|
-
|
|
191
|
+
prefix = _log_env_key_prefix("health/rollout", env_key)
|
|
192
|
+
content = {"status": "unauthorized", "detail": "Invalid or missing API key"}
|
|
193
|
+
headers = None
|
|
194
|
+
if prefix:
|
|
195
|
+
content["detail"] = f"Invalid or missing API key (expected prefix: {prefix})"
|
|
196
|
+
content["expected_api_key_prefix"] = prefix
|
|
197
|
+
headers = {"X-Expected-API-Key-Prefix": prefix}
|
|
198
|
+
return JSONResponse(status_code=401, content=content, headers=headers)
|
|
139
199
|
return {"ok": True}
|
|
140
200
|
|
|
141
201
|
# _load_hendrycks_problem is defined at fastapi_app scope
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/deploy_modal.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/demos/demo_task_apps/math/deploy_task_app.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/artifacts/__init__.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/artifacts/base.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/db/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/resources/sqlite.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/rewards/__init__.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/rewards/core.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/shared_engine.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/environment/tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/bandit/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/bandit/environment.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev7 → synth_ai-0.2.8.dev9}/synth_ai/environments/examples/bandit/taskset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|