synth-ai 0.2.8.dev6__tar.gz → 0.2.8.dev8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of synth-ai might be problematic. Click here for more details.
- {synth_ai-0.2.8.dev6/synth_ai.egg-info → synth_ai-0.2.8.dev8}/PKG-INFO +1 -1
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/pyproject.toml +1 -1
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/core/cli.py +54 -24
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/core.py +4 -2
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/modal_task_app.py +36 -14
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/handshake.py +1 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8/synth_ai.egg-info}/PKG-INFO +1 -1
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/LICENSE +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/MANIFEST.in +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/README.md +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/setup.cfg +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/__main__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/balance.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/calc.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/demo.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/legacy_root_backup.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/man.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/recent.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/rl_demo.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/root.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/status.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/traces.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/cli/watch.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/compound/cais.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/config/base_url.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/core/experiment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/core/system.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/_common.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/app.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/config.toml +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/deploy_modal.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/deploy_task_app.sh +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/artifacts/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/artifacts/base.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/core.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/db/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/db/sqlite.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/registry.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/resources/sqlite.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/results.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/rewards/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/rewards/core.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/shared_engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/tools/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/bandit/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/bandit/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/bandit/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/bandit/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_config.toml +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_lm_traces.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_no_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_trace_issue.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_db_schema.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_latest_results.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/debug_agent_responses.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/quick_trace_check.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/compare_experiments.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_hook_storage.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_seeds.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/compare_seed_performance.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/custom_eval_pipelines.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/plot_hook_frequency.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/seed_analysis_summary.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/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.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/compare_traces.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_env_serialization.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/debug_player_loss.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_service.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_slowness.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_by_difficulty.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_example.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/explore_saved_states.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft_OLD.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_gemini.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_modal.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_metadata.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_gemini.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/prepare_vertex_ft.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/profile_env_slowness.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/replicate_issue.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_and_eval.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_comparison.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_qwen_rollouts.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/trace_eval_OLD.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/agent_demos/old/validate_openai_format.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/config_logging.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/debug_translation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/engine_helpers/action_map.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/engine_helpers/serialization.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/crafter/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/crafter/config.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/crafter/constants.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/crafter/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/crafter/env.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/crafter/objects.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/crafter/recorder.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/crafter/worldgen.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/dataset_builder.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_issue.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_spawning.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/old/compare_worlds.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/old/dataset_stats.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/old/diamond_spawning_summary.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/old/example_dataset_usage.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/crafter_custom/run_dataset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/enron/art_helpers/email_search_tools.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/enron/art_helpers/local_email_db.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/enron/art_helpers/types_enron.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/enron/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/enron/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/enron/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/enron/units/keyword_stats.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_react_agent.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/environment_mapping.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/puzzle_loader.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/minigrid/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/achievements.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/agent_demos/nethack_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/agent_demos/nethack_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/agent_demos/nethack_react_agent.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/helpers/action_mapping.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/helpers/nle_wrapper.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/helpers/observation_utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/helpers/recording_wrapper.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/helpers/trajectory_recorder.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/helpers/visualization/replay_viewer.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/helpers/visualization/visualizer.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/nethack/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/config_logging.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/memory_map.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_components.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/adaptive_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/battle_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/composite_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/economy_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/efficiency_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/exploration_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/novelty_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/pokemon_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/social_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/reward_library/story_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/screen_analysis.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/engine_helpers/state_extraction.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/red/units/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/agent_demos/sokoban_full_eval.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/room_utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/boxoban_env.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/render_utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/room_utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_fixed_targets.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_pull.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_two_player.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_variations.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/generate_verified_puzzles.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/puzzle_loader.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/sokoban/units/astar_common.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/tictactoe/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/tictactoe/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/tictactoe/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/tictactoe/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/verilog/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/verilog/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/verilog/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/verilog/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/wordle/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/wordle/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/wordle/environment.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/wordle/taskset.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/reproducibility/core.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/reproducibility/helpers.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/reproducibility/tree.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/service/app.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/service/core_routes.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/service/external_registry.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/service/registry.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/stateful/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/stateful/core.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/stateful/engine.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/stateful/state.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/tasks/api.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/tasks/core.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/tasks/filters.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/tasks/utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/v0_observability/history.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/v0_observability/log.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/evals/base.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/experimental/synth_oss.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/http.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/http_client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/inference/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/inference/client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/install_sqld.sh +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/jobs/client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/config.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/constants.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/core.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/filtering.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/ft_client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/gateway.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/health.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/jobs.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/offline/dpo.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/offline/providers.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/offline/sft.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/offline/shared.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/online/grpo.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/online/irft.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/prompts/banking77_injection_eval.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/prompts/gepa.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/prompts/mipro.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/prompts/random_search.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/prompts/run_mipro_banking77.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/prompts/run_random_search_banking77.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/rl_client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/sse.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/learning/validators.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/caching/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/caching/constants.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/caching/dbs.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/caching/ephemeral.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/caching/handler.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/caching/initialize.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/caching/persistent.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/config.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/constants.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/core/all.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/core/exceptions.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/core/main.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/core/main_v3.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/core/synth_models.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/core/vendor_clients.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/cost/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/cost/monitor.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/cost/statefulness.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/injection.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/overrides.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/provider_support/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/provider_support/anthropic.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/provider_support/openai.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/provider_support/suppress_logging.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/structured_outputs/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/structured_outputs/handler.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/structured_outputs/inject.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/structured_outputs/rehabilitate.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/tools/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/tools/base.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/unified_interface.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/base.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/core/anthropic_api.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/core/gemini_api.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/core/mistral_api.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/core/openai_api.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/core/synth_dev_api.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/local/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/local/ollama.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/openai_standard.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/openai_standard_responses.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/retries.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/supported/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/supported/custom_endpoint.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/supported/deepseek.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/supported/grok.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/supported/groq.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/supported/ollama.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/supported/openrouter.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/supported/together.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/vendors/synth_client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/lm/warmup.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/rl/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/rl/contracts.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/rl/env_keys.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/rl/secrets.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/scripts/verify_rewards.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/task/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/task/contracts.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/task/health.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/task/validators.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/abstractions.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/config.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/db_config.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/decorators.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/examples/basic_usage.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/hooks.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/llm_call_record_helpers.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/lm_call_record_abstractions.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/migration_helper.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/replica_sync.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/session_tracer.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/storage/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/storage/base.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/storage/config.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/storage/exceptions.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/storage/factory.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/storage/types.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/storage/utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/turso/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/turso/daemon.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/turso/manager.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/turso/models.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/tracing_v3/utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/abstractions.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/base_client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/client_manager.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/config.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/context.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/decorators.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/events/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/events/manage.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/events/scope.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/events/store.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/immediate_client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/local.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/log_client_base.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/retry_queue.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/trackers.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/upload.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing/utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/abstractions.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/base_client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/client_manager.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/config.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/context.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/decorators.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/events/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/events/manage.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/events/scope.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/events/store.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/immediate_client.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/local.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/log_client_base.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/retry_queue.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/trackers.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/upload.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/v0/tracing_v1/utils.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/zyk/__init__.py +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai.egg-info/SOURCES.txt +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai.egg-info/requires.txt +0 -0
- {synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai.egg-info/top_level.txt +0 -0
|
@@ -13,7 +13,22 @@ 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
|
+
TASK_APP_MODAL_SECRET = DEFAULT_TASK_APP_SECRET_NAME
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _key_preview(value: str, label: str) -> str:
|
|
23
|
+
"""Return a short descriptor for a secret without leaking the full value."""
|
|
24
|
+
try:
|
|
25
|
+
text = value or ""
|
|
26
|
+
length = len(text)
|
|
27
|
+
prefix = text[:6] if length >= 6 else text
|
|
28
|
+
suffix = text[-5:] if length >= 5 else text
|
|
29
|
+
return f"{label} len={length} prefix={prefix} last5={suffix}"
|
|
30
|
+
except Exception:
|
|
31
|
+
return f"{label} len=0"
|
|
17
32
|
|
|
18
33
|
|
|
19
34
|
def _is_modal_public_url(u: str) -> bool:
|
|
@@ -100,7 +115,7 @@ def cmd_setup(_args: argparse.Namespace) -> int:
|
|
|
100
115
|
dotenv_values = {
|
|
101
116
|
"TASK_APP_BASE_URL": new_url,
|
|
102
117
|
"TASK_APP_NAME": env.task_app_name,
|
|
103
|
-
"TASK_APP_SECRET_NAME":
|
|
118
|
+
"TASK_APP_SECRET_NAME": TASK_APP_MODAL_SECRET,
|
|
104
119
|
}
|
|
105
120
|
demo_core.persist_dotenv_values(dotenv_values)
|
|
106
121
|
os.environ["TASK_APP_BASE_URL"] = new_url
|
|
@@ -224,8 +239,13 @@ def _popen_stream_capture(cmd: list[str], cwd: str | None = None, env: dict | No
|
|
|
224
239
|
|
|
225
240
|
def _mask_secret_args(args: list[str]) -> list[str]:
|
|
226
241
|
masked: list[str] = []
|
|
242
|
+
sensitive_prefixes = (
|
|
243
|
+
"ENVIRONMENT_API_KEY=",
|
|
244
|
+
"OPENAI_API_KEY=",
|
|
245
|
+
"SYNTH_API_KEY=",
|
|
246
|
+
)
|
|
227
247
|
for a in args:
|
|
228
|
-
if "=" in a and any(a.startswith(prefix) for prefix in
|
|
248
|
+
if "=" in a and any(a.startswith(prefix) for prefix in sensitive_prefixes):
|
|
229
249
|
try:
|
|
230
250
|
key, value = a.split("=", 1)
|
|
231
251
|
tail = value[-5:] if len(value) >= 5 else value
|
|
@@ -256,11 +276,18 @@ def _ensure_modal_secret(
|
|
|
256
276
|
|
|
257
277
|
if replace:
|
|
258
278
|
print(f"{prefix} Removing Modal secret '{secret_name}' (if present)…")
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
279
|
+
delete_commands = [
|
|
280
|
+
["bash", "-lc", f"printf 'y\\n' | uv run modal secret delete {secret_name}"],
|
|
281
|
+
["bash", "-lc", f"printf 'y\\n' | modal secret delete {secret_name}"],
|
|
282
|
+
]
|
|
283
|
+
delete_code = None
|
|
284
|
+
for delete_cmd in delete_commands:
|
|
285
|
+
print(f"{prefix} Command:", " ".join(delete_cmd))
|
|
286
|
+
delete_code = _popen_stream(delete_cmd)
|
|
287
|
+
if delete_code in (0, 1):
|
|
288
|
+
break
|
|
289
|
+
if delete_code not in (0, 1):
|
|
290
|
+
print(f"{prefix} Warning: delete command exited with {delete_code}; continuing to recreate")
|
|
264
291
|
|
|
265
292
|
print(f"\n{prefix} Creating Modal secret '{secret_name}'…")
|
|
266
293
|
print(f"{prefix} Command:", " ".join(_mask_secret_args(create_cmd)))
|
|
@@ -639,7 +666,7 @@ def _ensure_task_app_ready(env: DemoEnv, synth_key: str, *, label: str) -> DemoE
|
|
|
639
666
|
app_name = fallback
|
|
640
667
|
demo_core.persist_task_url(task_url, name=app_name)
|
|
641
668
|
|
|
642
|
-
secret_name =
|
|
669
|
+
secret_name = TASK_APP_MODAL_SECRET
|
|
643
670
|
demo_core.persist_task_url(task_url, name=app_name)
|
|
644
671
|
demo_core.persist_dotenv_values({
|
|
645
672
|
"TASK_APP_BASE_URL": task_url,
|
|
@@ -660,9 +687,7 @@ def _ensure_task_app_ready(env: DemoEnv, synth_key: str, *, label: str) -> DemoE
|
|
|
660
687
|
print(f"[{label}] Verifying rollout health:")
|
|
661
688
|
try:
|
|
662
689
|
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}")
|
|
690
|
+
print(f"[{label}] {_key_preview(ek, 'ENVIRONMENT_API_KEY')}")
|
|
666
691
|
except Exception:
|
|
667
692
|
pass
|
|
668
693
|
health_base = task_url.rstrip("/")
|
|
@@ -685,6 +710,12 @@ def _ensure_task_app_ready(env: DemoEnv, synth_key: str, *, label: str) -> DemoE
|
|
|
685
710
|
print(f"[{label}] body:", preview)
|
|
686
711
|
if rc != 200:
|
|
687
712
|
print(f"[{label}] Warning: rollout health check failed ({rc}). Response: {body}")
|
|
713
|
+
try:
|
|
714
|
+
print(f"[{label}] Sent header X-API-Key → {_key_preview(env_key, 'X-API-Key')}")
|
|
715
|
+
if secret_name:
|
|
716
|
+
print(f"[{label}] Modal secret name={secret_name}")
|
|
717
|
+
except Exception:
|
|
718
|
+
pass
|
|
688
719
|
else:
|
|
689
720
|
print(f"[{label}] Task app rollout health check OK.")
|
|
690
721
|
|
|
@@ -777,11 +808,7 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
777
808
|
print("Aborted by user.")
|
|
778
809
|
return 1
|
|
779
810
|
|
|
780
|
-
|
|
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
|
|
811
|
+
secret_name = TASK_APP_MODAL_SECRET
|
|
785
812
|
existing_env_key = (env.env_api_key or "").strip()
|
|
786
813
|
env_key: str | None = existing_env_key or None
|
|
787
814
|
if existing_env_key:
|
|
@@ -853,7 +880,10 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
853
880
|
demo_core.persist_dotenv_values({"OPENAI_API_KEY": openai_key})
|
|
854
881
|
local_env["OPENAI_API_KEY"] = openai_key
|
|
855
882
|
|
|
856
|
-
values = {
|
|
883
|
+
values = {
|
|
884
|
+
"SYNTH_API_KEY": synth_key,
|
|
885
|
+
"OPENAI_API_KEY": openai_key,
|
|
886
|
+
}
|
|
857
887
|
if env_key:
|
|
858
888
|
values["ENVIRONMENT_API_KEY"] = env_key
|
|
859
889
|
|
|
@@ -913,7 +943,7 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
913
943
|
dotenv_values = {"TASK_APP_BASE_URL": url}
|
|
914
944
|
if app_name:
|
|
915
945
|
dotenv_values["TASK_APP_NAME"] = app_name
|
|
916
|
-
dotenv_values["TASK_APP_SECRET_NAME"] =
|
|
946
|
+
dotenv_values["TASK_APP_SECRET_NAME"] = TASK_APP_MODAL_SECRET
|
|
917
947
|
dotenv_path = demo_core.persist_dotenv_values(dotenv_values)
|
|
918
948
|
print(f"TASK_APP_BASE_URL={url}")
|
|
919
949
|
if app_name:
|
|
@@ -922,7 +952,7 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
922
952
|
print(f" export TASK_APP_BASE_URL={url}")
|
|
923
953
|
if app_name:
|
|
924
954
|
print(f" export TASK_APP_NAME={app_name}")
|
|
925
|
-
print(f" export TASK_APP_SECRET_NAME={
|
|
955
|
+
print(f" export TASK_APP_SECRET_NAME={TASK_APP_MODAL_SECRET}")
|
|
926
956
|
print(f"Persisted to {dotenv_path}")
|
|
927
957
|
print("\nNext step:\n$ uvx synth-ai run")
|
|
928
958
|
return 0
|
|
@@ -1195,9 +1225,9 @@ def cmd_run(args: argparse.Namespace) -> int:
|
|
|
1195
1225
|
ek = (env.env_api_key or "").strip()
|
|
1196
1226
|
print("Hint: If backend responded 401, verify SYNTH_API_KEY for:", base_url)
|
|
1197
1227
|
if sk:
|
|
1198
|
-
print(f"
|
|
1228
|
+
print(f" {_key_preview(sk, 'SYNTH_API_KEY')}")
|
|
1199
1229
|
if ek:
|
|
1200
|
-
print(f"
|
|
1230
|
+
print(f" {_key_preview(ek, 'ENVIRONMENT_API_KEY')}")
|
|
1201
1231
|
print("Also ensure your Modal secret contains ENVIRONMENT_API_KEY and matches the task app.")
|
|
1202
1232
|
return code
|
|
1203
1233
|
|
|
@@ -1218,7 +1248,7 @@ def cmd_run(args: argparse.Namespace) -> int:
|
|
|
1218
1248
|
sk_len = len(sk)
|
|
1219
1249
|
sk_tail = sk[-5:] if sk_len >= 5 else sk
|
|
1220
1250
|
print(f"[run] Backend API: {api}")
|
|
1221
|
-
print(f"[run]
|
|
1251
|
+
print(f"[run] {_key_preview(sk, 'SYNTH_API_KEY')}")
|
|
1222
1252
|
except Exception:
|
|
1223
1253
|
pass
|
|
1224
1254
|
data_fragment: Dict[str, Any] = {
|
|
@@ -1274,7 +1304,7 @@ def cmd_run(args: argparse.Namespace) -> int:
|
|
|
1274
1304
|
base_url = env.dev_backend_url
|
|
1275
1305
|
print("Hint: HTTP 401 Unauthorized from backend. Verify SYNTH_API_KEY for:", base_url)
|
|
1276
1306
|
if sk:
|
|
1277
|
-
print(f"
|
|
1307
|
+
print(f" {_key_preview(sk, 'SYNTH_API_KEY')}")
|
|
1278
1308
|
print("Also ensure your Modal secret contains a valid ENVIRONMENT_API_KEY.")
|
|
1279
1309
|
except Exception:
|
|
1280
1310
|
pass
|
|
@@ -23,6 +23,8 @@ class DemoEnv:
|
|
|
23
23
|
task_app_secret_name: str = ""
|
|
24
24
|
|
|
25
25
|
|
|
26
|
+
DEFAULT_TASK_APP_SECRET_NAME = "hendrycks-math-task-app-secret"
|
|
27
|
+
|
|
26
28
|
def _mask(value: str, keep: int = 4) -> str:
|
|
27
29
|
if not value:
|
|
28
30
|
return ""
|
|
@@ -285,7 +287,7 @@ def load_env() -> DemoEnv:
|
|
|
285
287
|
)
|
|
286
288
|
|
|
287
289
|
task_app_name = str(state.get("TASK_APP_NAME") or "")
|
|
288
|
-
task_app_secret_name =
|
|
290
|
+
task_app_secret_name = DEFAULT_TASK_APP_SECRET_NAME
|
|
289
291
|
|
|
290
292
|
env.dev_backend_url = dev_url.rstrip("/")
|
|
291
293
|
env.synth_api_key = synth_api_key
|
|
@@ -367,7 +369,7 @@ def persist_task_url(url: str, *, name: str | None = None) -> None:
|
|
|
367
369
|
if data.get("TASK_APP_NAME") != name:
|
|
368
370
|
data["TASK_APP_NAME"] = name
|
|
369
371
|
changed.append("TASK_APP_NAME")
|
|
370
|
-
secret_name =
|
|
372
|
+
secret_name = DEFAULT_TASK_APP_SECRET_NAME
|
|
371
373
|
if data.get("TASK_APP_SECRET_NAME") != secret_name:
|
|
372
374
|
data["TASK_APP_SECRET_NAME"] = secret_name
|
|
373
375
|
if "TASK_APP_NAME" not in changed:
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/modal_task_app.py
RENAMED
|
@@ -7,6 +7,7 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
from modal import App, Image, Secret, asgi_app
|
|
9
9
|
from functools import lru_cache
|
|
10
|
+
from synth_ai.demos.demo_task_apps.core import DEFAULT_TASK_APP_SECRET_NAME
|
|
10
11
|
|
|
11
12
|
# Self-contained: no external problem bank installer required
|
|
12
13
|
|
|
@@ -43,24 +44,14 @@ if _SYNTH_HOSTED is not None:
|
|
|
43
44
|
# No extra local dirs required; app is self-contained
|
|
44
45
|
|
|
45
46
|
app = App("hendrycks-math-task-app")
|
|
46
|
-
|
|
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
|
-
|
|
56
|
-
|
|
47
|
+
hendryks_secret = DEFAULT_TASK_APP_SECRET_NAME
|
|
57
48
|
@app.function(
|
|
58
49
|
image=image,
|
|
59
50
|
timeout=600,
|
|
60
51
|
memory=16384,
|
|
61
52
|
cpu=4,
|
|
62
53
|
min_containers=1,
|
|
63
|
-
secrets=[Secret.from_name(
|
|
54
|
+
secrets=[Secret.from_name(hendryks_secret)],
|
|
64
55
|
)
|
|
65
56
|
@asgi_app()
|
|
66
57
|
def fastapi_app():
|
|
@@ -112,6 +103,23 @@ def fastapi_app():
|
|
|
112
103
|
allow_headers=["*"],
|
|
113
104
|
)
|
|
114
105
|
|
|
106
|
+
import logging
|
|
107
|
+
|
|
108
|
+
logger = logging.getLogger("hendrycks_math_task_app")
|
|
109
|
+
if not logger.handlers:
|
|
110
|
+
logger.addHandler(logging.StreamHandler())
|
|
111
|
+
logger.setLevel(logging.INFO)
|
|
112
|
+
|
|
113
|
+
def _log_env_key_prefix(source: str, env_key: str | None) -> str | None:
|
|
114
|
+
if not env_key:
|
|
115
|
+
return None
|
|
116
|
+
half = max(1, len(env_key) // 2)
|
|
117
|
+
prefix = env_key[:half]
|
|
118
|
+
msg = f"[{source}] expected ENVIRONMENT_API_KEY prefix: {prefix}"
|
|
119
|
+
print(msg)
|
|
120
|
+
logger.info(msg)
|
|
121
|
+
return prefix
|
|
122
|
+
|
|
115
123
|
@app.get("/info")
|
|
116
124
|
async def info():
|
|
117
125
|
return {
|
|
@@ -125,7 +133,14 @@ def fastapi_app():
|
|
|
125
133
|
if not env_key:
|
|
126
134
|
return JSONResponse(status_code=503, content={"status": "unhealthy", "detail": "Missing ENVIRONMENT_API_KEY"})
|
|
127
135
|
if x_api_key is not None and x_api_key != env_key:
|
|
128
|
-
|
|
136
|
+
prefix = _log_env_key_prefix("health", env_key)
|
|
137
|
+
content = {"status": "unauthorized", "detail": "Invalid API key"}
|
|
138
|
+
headers = None
|
|
139
|
+
if prefix:
|
|
140
|
+
content["detail"] = f"Invalid API key (expected prefix: {prefix})"
|
|
141
|
+
content["expected_api_key_prefix"] = prefix
|
|
142
|
+
headers = {"X-Expected-API-Key-Prefix": prefix}
|
|
143
|
+
return JSONResponse(status_code=401, content=content, headers=headers)
|
|
129
144
|
return {"status": "healthy"}
|
|
130
145
|
|
|
131
146
|
# Optional rollout-specific health for CLI compatibility
|
|
@@ -135,7 +150,14 @@ def fastapi_app():
|
|
|
135
150
|
if not env_key:
|
|
136
151
|
return JSONResponse(status_code=503, content={"status": "unhealthy", "detail": "Missing ENVIRONMENT_API_KEY"})
|
|
137
152
|
if not x_api_key or x_api_key != env_key:
|
|
138
|
-
|
|
153
|
+
prefix = _log_env_key_prefix("health/rollout", env_key)
|
|
154
|
+
content = {"status": "unauthorized", "detail": "Invalid or missing API key"}
|
|
155
|
+
headers = None
|
|
156
|
+
if prefix:
|
|
157
|
+
content["detail"] = f"Invalid or missing API key (expected prefix: {prefix})"
|
|
158
|
+
content["expected_api_key_prefix"] = prefix
|
|
159
|
+
headers = {"X-Expected-API-Key-Prefix": prefix}
|
|
160
|
+
return JSONResponse(status_code=401, content=content, headers=headers)
|
|
139
161
|
return {"ok": True}
|
|
140
162
|
|
|
141
163
|
# _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.dev6 → synth_ai-0.2.8.dev8}/synth_ai/demos/demo_task_apps/math/deploy_modal.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/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.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/artifacts/__init__.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/artifacts/base.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/db/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/resources/sqlite.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/rewards/__init__.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/rewards/core.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/shared_engine.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/environment/tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/bandit/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/synth_ai/environments/examples/bandit/environment.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev6 → synth_ai-0.2.8.dev8}/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
|
|
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
|
|
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
|