synth-ai 0.2.8.dev4__tar.gz → 0.2.8.dev6__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.dev4/synth_ai.egg-info → synth_ai-0.2.8.dev6}/PKG-INFO +4 -3
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/README.md +2 -1
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/pyproject.toml +2 -2
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/core/cli.py +19 -16
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/modal_task_app.py +9 -3
- synth_ai-0.2.8.dev6/synth_ai/handshake.py +106 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6/synth_ai.egg-info}/PKG-INFO +4 -3
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai.egg-info/requires.txt +1 -1
- synth_ai-0.2.8.dev4/synth_ai/handshake.py +0 -63
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/LICENSE +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/MANIFEST.in +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/setup.cfg +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/__main__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/balance.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/calc.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/demo.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/legacy_root_backup.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/man.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/recent.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/rl_demo.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/root.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/status.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/traces.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/cli/watch.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/compound/cais.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/config/base_url.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/core/experiment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/core/system.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/core.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/_common.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/app.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/config.toml +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/deploy_modal.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/deploy_task_app.sh +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/artifacts/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/artifacts/base.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/core.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/db/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/db/sqlite.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/registry.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/resources/sqlite.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/results.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/rewards/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/rewards/core.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/shared_engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/tools/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/bandit/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/bandit/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/bandit/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/bandit/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_config.toml +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_lm_traces.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_no_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_trace_issue.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_db_schema.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_latest_results.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/debug_agent_responses.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/quick_trace_check.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/compare_experiments.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_hook_storage.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_seeds.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/compare_seed_performance.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/custom_eval_pipelines.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/plot_hook_frequency.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/seed_analysis_summary.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/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.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/compare_traces.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_env_serialization.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/debug_player_loss.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_service.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_slowness.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_by_difficulty.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_example.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/explore_saved_states.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft_OLD.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_gemini.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_modal.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_metadata.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_gemini.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/prepare_vertex_ft.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/profile_env_slowness.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/replicate_issue.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_and_eval.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_comparison.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_qwen_rollouts.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/trace_eval_OLD.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/agent_demos/old/validate_openai_format.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/config_logging.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/debug_translation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/engine_helpers/action_map.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/engine_helpers/serialization.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/crafter/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/crafter/config.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/crafter/constants.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/crafter/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/crafter/env.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/crafter/objects.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/crafter/recorder.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/crafter/worldgen.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/dataset_builder.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_issue.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_spawning.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/old/compare_worlds.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/old/dataset_stats.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/old/diamond_spawning_summary.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/old/example_dataset_usage.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/crafter_custom/run_dataset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/enron/art_helpers/email_search_tools.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/enron/art_helpers/local_email_db.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/enron/art_helpers/types_enron.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/enron/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/enron/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/enron/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/enron/units/keyword_stats.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_react_agent.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_trace_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/environment_mapping.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/puzzle_loader.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/minigrid/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/achievements.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/agent_demos/nethack_evaluation_framework.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/agent_demos/nethack_quick_evaluation.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/agent_demos/nethack_react_agent.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/helpers/action_mapping.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/helpers/nle_wrapper.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/helpers/observation_utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/helpers/recording_wrapper.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/helpers/trajectory_recorder.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/helpers/visualization/replay_viewer.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/helpers/visualization/visualizer.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/nethack/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/config_logging.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/memory_map.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_components.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/adaptive_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/battle_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/composite_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/economy_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/efficiency_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/exploration_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/novelty_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/pokemon_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/social_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/reward_library/story_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/screen_analysis.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/engine_helpers/state_extraction.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/red/units/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/agent_demos/sokoban_full_eval.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/room_utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/boxoban_env.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/render_utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/room_utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_fixed_targets.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_pull.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_two_player.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_variations.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/generate_verified_puzzles.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/puzzle_loader.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/sokoban/units/astar_common.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/tictactoe/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/tictactoe/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/tictactoe/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/tictactoe/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/verilog/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/verilog/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/verilog/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/verilog/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/wordle/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/wordle/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/wordle/environment.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/wordle/taskset.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/reproducibility/core.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/reproducibility/helpers.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/reproducibility/tree.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/service/app.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/service/core_routes.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/service/external_registry.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/service/registry.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/stateful/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/stateful/core.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/stateful/engine.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/stateful/state.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/tasks/api.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/tasks/core.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/tasks/filters.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/tasks/utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/v0_observability/history.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/v0_observability/log.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/evals/base.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/experimental/synth_oss.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/http.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/http_client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/inference/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/inference/client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/install_sqld.sh +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/jobs/client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/config.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/constants.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/core.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/filtering.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/ft_client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/gateway.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/health.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/jobs.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/offline/dpo.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/offline/providers.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/offline/sft.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/offline/shared.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/online/grpo.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/online/irft.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/prompts/banking77_injection_eval.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/prompts/gepa.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/prompts/mipro.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/prompts/random_search.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/prompts/run_mipro_banking77.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/prompts/run_random_search_banking77.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/rl_client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/sse.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/learning/validators.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/caching/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/caching/constants.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/caching/dbs.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/caching/ephemeral.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/caching/handler.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/caching/initialize.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/caching/persistent.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/config.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/constants.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/core/all.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/core/exceptions.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/core/main.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/core/main_v3.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/core/synth_models.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/core/vendor_clients.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/cost/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/cost/monitor.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/cost/statefulness.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/injection.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/overrides.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/provider_support/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/provider_support/anthropic.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/provider_support/openai.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/provider_support/suppress_logging.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/structured_outputs/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/structured_outputs/handler.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/structured_outputs/inject.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/structured_outputs/rehabilitate.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/tools/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/tools/base.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/unified_interface.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/base.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/core/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/core/anthropic_api.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/core/gemini_api.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/core/mistral_api.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/core/openai_api.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/core/synth_dev_api.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/local/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/local/ollama.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/openai_standard.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/openai_standard_responses.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/retries.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/supported/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/supported/custom_endpoint.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/supported/deepseek.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/supported/grok.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/supported/groq.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/supported/ollama.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/supported/openrouter.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/supported/together.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/vendors/synth_client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/lm/warmup.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/rl/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/rl/contracts.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/rl/env_keys.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/rl/secrets.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/scripts/verify_rewards.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/task/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/task/contracts.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/task/health.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/task/validators.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/abstractions.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/config.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/db_config.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/decorators.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/examples/basic_usage.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/hooks.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/llm_call_record_helpers.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/lm_call_record_abstractions.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/migration_helper.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/replica_sync.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/session_tracer.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/storage/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/storage/base.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/storage/config.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/storage/exceptions.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/storage/factory.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/storage/types.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/storage/utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/turso/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/turso/daemon.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/turso/manager.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/turso/models.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/tracing_v3/utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/abstractions.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/base_client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/client_manager.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/config.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/context.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/decorators.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/events/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/events/manage.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/events/scope.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/events/store.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/immediate_client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/local.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/log_client_base.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/retry_queue.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/trackers.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/upload.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing/utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/abstractions.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/base_client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/client_manager.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/config.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/context.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/decorators.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/events/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/events/manage.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/events/scope.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/events/store.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/immediate_client.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/local.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/log_client_base.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/retry_queue.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/trackers.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/upload.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/v0/tracing_v1/utils.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/zyk/__init__.py +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai.egg-info/SOURCES.txt +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synth-ai
|
|
3
|
-
Version: 0.2.8.
|
|
3
|
+
Version: 0.2.8.dev6
|
|
4
4
|
Summary: RL as a service SDK - Core AI functionality and tracing
|
|
5
5
|
Author-email: Synth AI <josh@usesynth.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -53,7 +53,7 @@ Requires-Dist: asyncpg>=0.30.0
|
|
|
53
53
|
Requires-Dist: aiohttp>=3.8.0
|
|
54
54
|
Requires-Dist: datasets>=4.0.0
|
|
55
55
|
Requires-Dist: transformers>=4.56.1
|
|
56
|
-
Requires-Dist: modal>=1.1.
|
|
56
|
+
Requires-Dist: modal>=1.1.0
|
|
57
57
|
Provides-Extra: dev
|
|
58
58
|
Requires-Dist: build>=1.2.2.post1; extra == "dev"
|
|
59
59
|
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
@@ -125,5 +125,6 @@ If your browser isn’t already signed in, sign in when prompted and the pairing
|
|
|
125
125
|
|
|
126
126
|
Environment variables:
|
|
127
127
|
|
|
128
|
-
- `SYNTH_CANONICAL_ORIGIN` (optional): override the dashboard base URL the SDK uses for the handshake (defaults to `
|
|
128
|
+
- `SYNTH_CANONICAL_ORIGIN` (optional): override the dashboard base URL the SDK uses for the handshake (defaults to `https://www.usesynth.ai/dashboard`).
|
|
129
|
+
- `SYNTH_CANONICAL_DEV` (optional): set to `1`, `true`, `yes`, or `on` to target the local dashboard at `http://localhost:3000`.
|
|
129
130
|
- Keys are stored only in your project’s `.env` file, not exported to your shell.
|
|
@@ -51,5 +51,6 @@ If your browser isn’t already signed in, sign in when prompted and the pairing
|
|
|
51
51
|
|
|
52
52
|
Environment variables:
|
|
53
53
|
|
|
54
|
-
- `SYNTH_CANONICAL_ORIGIN` (optional): override the dashboard base URL the SDK uses for the handshake (defaults to `
|
|
54
|
+
- `SYNTH_CANONICAL_ORIGIN` (optional): override the dashboard base URL the SDK uses for the handshake (defaults to `https://www.usesynth.ai/dashboard`).
|
|
55
|
+
- `SYNTH_CANONICAL_DEV` (optional): set to `1`, `true`, `yes`, or `on` to target the local dashboard at `http://localhost:3000`.
|
|
55
56
|
- Keys are stored only in your project’s `.env` file, not exported to your shell.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "synth-ai"
|
|
3
|
-
version = "0.2.8.
|
|
3
|
+
version = "0.2.8.dev6"
|
|
4
4
|
description = "RL as a service SDK - Core AI functionality and tracing"
|
|
5
5
|
authors = [{name = "Synth AI", email = "josh@usesynth.ai"}]
|
|
6
6
|
license = "MIT"
|
|
@@ -55,7 +55,7 @@ dependencies = [
|
|
|
55
55
|
"aiohttp>=3.8.0", # For async HTTP requests in Harmony integration
|
|
56
56
|
"datasets>=4.0.0",
|
|
57
57
|
"transformers>=4.56.1",
|
|
58
|
-
"modal>=1.1.
|
|
58
|
+
"modal>=1.1.0",
|
|
59
59
|
]
|
|
60
60
|
|
|
61
61
|
[project.scripts]
|
|
@@ -763,7 +763,10 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
763
763
|
raise FileNotFoundError(f"App file not found: {app_path}")
|
|
764
764
|
# Surface the app path before asking for the name
|
|
765
765
|
print(f"Using task app: {app_path}")
|
|
766
|
-
|
|
766
|
+
existing_name = (args.name or env.task_app_name or "").strip()
|
|
767
|
+
if not existing_name:
|
|
768
|
+
existing_name = f"synth-{os.path.splitext(os.path.basename(app_path))[0]}"
|
|
769
|
+
suggested_name = existing_name
|
|
767
770
|
name_in = input(f"Modal app name [{suggested_name}]: ").strip() or suggested_name
|
|
768
771
|
app_name = name_in
|
|
769
772
|
print("\nAbout to deploy with:")
|
|
@@ -774,7 +777,11 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
774
777
|
print("Aborted by user.")
|
|
775
778
|
return 1
|
|
776
779
|
|
|
777
|
-
|
|
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
|
|
778
785
|
existing_env_key = (env.env_api_key or "").strip()
|
|
779
786
|
env_key: str | None = existing_env_key or None
|
|
780
787
|
if existing_env_key:
|
|
@@ -799,24 +806,24 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
799
806
|
print("[deploy] Minted new ENVIRONMENT_API_KEY")
|
|
800
807
|
|
|
801
808
|
# Optionally upload the new key to the backend using sealed box helper
|
|
802
|
-
backend_base = env.dev_backend_url or ""
|
|
809
|
+
backend_base = (env.dev_backend_url or "").rstrip("/")
|
|
803
810
|
synth_key = (env.synth_api_key or os.environ.get("SYNTH_API_KEY") or local_env.get("SYNTH_API_KEY") or "").strip()
|
|
804
811
|
if backend_base and synth_key:
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
812
|
+
# Pass a base WITHOUT trailing /api to setup_environment_api_key,
|
|
813
|
+
# since it appends /api/v1/... internally.
|
|
814
|
+
non_api_base = backend_base[:-4] if backend_base.endswith("/api") else backend_base
|
|
808
815
|
try:
|
|
809
816
|
choice = input(
|
|
810
|
-
f"Upload ENVIRONMENT_API_KEY to backend {
|
|
817
|
+
f"Upload ENVIRONMENT_API_KEY to backend {non_api_base}? [Y/n]: "
|
|
811
818
|
).strip().lower() or "y"
|
|
812
819
|
except Exception:
|
|
813
820
|
choice = "y"
|
|
814
821
|
if choice.startswith("y"):
|
|
815
822
|
try:
|
|
816
|
-
print(f"[deploy] Uploading ENVIRONMENT_API_KEY to {
|
|
823
|
+
print(f"[deploy] Uploading ENVIRONMENT_API_KEY to {non_api_base} …")
|
|
817
824
|
from synth_ai.rl.env_keys import setup_environment_api_key
|
|
818
825
|
|
|
819
|
-
setup_environment_api_key(
|
|
826
|
+
setup_environment_api_key(non_api_base, synth_key, token=env_key)
|
|
820
827
|
print("[deploy] Backend sealed-box upload complete.")
|
|
821
828
|
except Exception as upload_err:
|
|
822
829
|
print(f"[deploy] Failed to upload ENVIRONMENT_API_KEY: {upload_err}")
|
|
@@ -917,7 +924,7 @@ def cmd_deploy(args: argparse.Namespace) -> int:
|
|
|
917
924
|
print(f" export TASK_APP_NAME={app_name}")
|
|
918
925
|
print(f" export TASK_APP_SECRET_NAME={app_name}-secret")
|
|
919
926
|
print(f"Persisted to {dotenv_path}")
|
|
920
|
-
print("
|
|
927
|
+
print("\nNext step:\n$ uvx synth-ai run")
|
|
921
928
|
return 0
|
|
922
929
|
except Exception as e:
|
|
923
930
|
print(f"Deploy error: {e}")
|
|
@@ -1070,11 +1077,7 @@ fi
|
|
|
1070
1077
|
if os.path.exists(dst_cfg):
|
|
1071
1078
|
print(f" - {dst_cfg} (seeded)")
|
|
1072
1079
|
print("")
|
|
1073
|
-
print("
|
|
1074
|
-
print(" 1) cd synth_demo && put your ENVIRONMENT_API_KEY in ./.env")
|
|
1075
|
-
print(" 2) Deploy to Modal:")
|
|
1076
|
-
print(" uvx bash ./deploy_task_app.sh")
|
|
1077
|
-
print(" 3) From project root, run: uvx synth-ai run")
|
|
1080
|
+
print("\nNext step:\n$ uvx synth-ai setup")
|
|
1078
1081
|
return 0
|
|
1079
1082
|
except Exception as e:
|
|
1080
1083
|
print(f"Init error: {e}")
|
|
@@ -1363,7 +1366,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
1363
1366
|
def _deploy_opts(parser):
|
|
1364
1367
|
parser.add_argument("--local", action="store_true", help="Run local FastAPI instead of Modal deploy")
|
|
1365
1368
|
parser.add_argument("--app", type=str, default=None, help="Path to Modal app.py for uv run modal deploy")
|
|
1366
|
-
parser.add_argument("--name", type=str, default=
|
|
1369
|
+
parser.add_argument("--name", type=str, default=None, help="Modal app name")
|
|
1367
1370
|
parser.add_argument("--script", type=str, default=None, help="Path to deploy_task_app.sh (optional legacy)")
|
|
1368
1371
|
parser.set_defaults(func=cmd_deploy)
|
|
1369
1372
|
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/modal_task_app.py
RENAMED
|
@@ -43,7 +43,15 @@ if _SYNTH_HOSTED is not None:
|
|
|
43
43
|
# No extra local dirs required; app is self-contained
|
|
44
44
|
|
|
45
45
|
app = App("hendrycks-math-task-app")
|
|
46
|
-
_SECRET_NAME =
|
|
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"
|
|
47
55
|
|
|
48
56
|
|
|
49
57
|
@app.function(
|
|
@@ -411,5 +419,3 @@ def fastapi_app():
|
|
|
411
419
|
}
|
|
412
420
|
|
|
413
421
|
return api
|
|
414
|
-
|
|
415
|
-
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import os
|
|
3
|
+
import time
|
|
4
|
+
import webbrowser
|
|
5
|
+
from typing import Any, Dict, Tuple
|
|
6
|
+
from urllib.parse import urljoin, urlsplit, urlunsplit
|
|
7
|
+
|
|
8
|
+
import requests
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class HandshakeError(Exception):
|
|
12
|
+
pass
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
_TRUTHY = {"1", "true", "yes", "on"}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _origin() -> str:
|
|
19
|
+
"""Resolve the dashboard origin for the browser handshake.
|
|
20
|
+
|
|
21
|
+
Priority order:
|
|
22
|
+
1. Explicit ``SYNTH_CANONICAL_ORIGIN`` override.
|
|
23
|
+
2. Development flag ``SYNTH_CANONICAL_DEV`` (case-insensitive truthy) → localhost.
|
|
24
|
+
3. Production dashboard at ``https://www.usesynth.ai/dashboard``.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
override = (os.getenv("SYNTH_CANONICAL_ORIGIN") or "").strip()
|
|
28
|
+
if override:
|
|
29
|
+
return override.rstrip("/")
|
|
30
|
+
|
|
31
|
+
dev_flag = (os.getenv("SYNTH_CANONICAL_DEV") or "").strip().lower()
|
|
32
|
+
if dev_flag in _TRUTHY:
|
|
33
|
+
return "http://localhost:3000"
|
|
34
|
+
|
|
35
|
+
return "https://www.usesynth.ai/dashboard"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _split_origin(origin: str) -> tuple[str, str]:
|
|
39
|
+
parsed = urlsplit(origin)
|
|
40
|
+
bare = urlunsplit((parsed.scheme, parsed.netloc, "", "", ""))
|
|
41
|
+
path = parsed.path.rstrip("/")
|
|
42
|
+
return bare, path
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _ensure_verification_uri(data: Dict[str, Any], base_with_path: str) -> None:
|
|
46
|
+
uri = data.get("verification_uri")
|
|
47
|
+
if not isinstance(uri, str) or not uri:
|
|
48
|
+
return
|
|
49
|
+
if uri.startswith("http://") or uri.startswith("https://"):
|
|
50
|
+
return
|
|
51
|
+
data["verification_uri"] = urljoin(base_with_path.rstrip("/") + "/", uri.lstrip("/"))
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def start_handshake_session(origin: str | None = None) -> Tuple[str, str, int, int]:
|
|
55
|
+
base = (origin or _origin()).rstrip("/")
|
|
56
|
+
api_origin, _ = _split_origin(base)
|
|
57
|
+
url = urljoin(api_origin.rstrip("/") + "/", "api/sdk/handshake/init")
|
|
58
|
+
r = requests.post(url, timeout=10)
|
|
59
|
+
if r.status_code != 200:
|
|
60
|
+
raise HandshakeError(f"init failed: {r.status_code} {r.text}")
|
|
61
|
+
try:
|
|
62
|
+
data = r.json()
|
|
63
|
+
except ValueError as exc: # pragma: no cover - network dependent
|
|
64
|
+
raise HandshakeError(f"init returned malformed JSON: {exc}") from exc
|
|
65
|
+
_ensure_verification_uri(data, base)
|
|
66
|
+
return (
|
|
67
|
+
str(data.get("device_code")),
|
|
68
|
+
str(data.get("verification_uri")),
|
|
69
|
+
int(data.get("expires_in", 600)),
|
|
70
|
+
int(data.get("interval", 3)),
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def poll_handshake_token(device_code: str, origin: str | None = None, *, timeout_s: int | None = None) -> Dict[str, Any]:
|
|
75
|
+
base = (origin or _origin()).rstrip("/")
|
|
76
|
+
api_origin, _ = _split_origin(base)
|
|
77
|
+
url = urljoin(api_origin.rstrip("/") + "/", "api/sdk/handshake/token")
|
|
78
|
+
deadline = time.time() + (timeout_s or 600)
|
|
79
|
+
while True:
|
|
80
|
+
if time.time() > deadline:
|
|
81
|
+
raise HandshakeError("handshake timed out")
|
|
82
|
+
try:
|
|
83
|
+
r = requests.post(url, json={"device_code": device_code}, timeout=10)
|
|
84
|
+
except Exception as e:
|
|
85
|
+
time.sleep(2)
|
|
86
|
+
continue
|
|
87
|
+
if r.status_code == 200:
|
|
88
|
+
try:
|
|
89
|
+
data = r.json()
|
|
90
|
+
except ValueError as exc: # pragma: no cover - network dependent
|
|
91
|
+
raise HandshakeError(f"token returned malformed JSON: {exc}") from exc
|
|
92
|
+
_ensure_verification_uri(data, base)
|
|
93
|
+
return data
|
|
94
|
+
elif r.status_code in (404, 410):
|
|
95
|
+
raise HandshakeError(f"handshake failed: {r.status_code}")
|
|
96
|
+
# 428 authorization_pending or others → wait and retry
|
|
97
|
+
time.sleep(2)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def run_handshake(origin: str | None = None) -> Dict[str, Any]:
|
|
101
|
+
device_code, verification_uri, expires_in, interval = start_handshake_session(origin)
|
|
102
|
+
try:
|
|
103
|
+
webbrowser.open(verification_uri)
|
|
104
|
+
except Exception:
|
|
105
|
+
pass
|
|
106
|
+
return poll_handshake_token(device_code, origin, timeout_s=expires_in)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synth-ai
|
|
3
|
-
Version: 0.2.8.
|
|
3
|
+
Version: 0.2.8.dev6
|
|
4
4
|
Summary: RL as a service SDK - Core AI functionality and tracing
|
|
5
5
|
Author-email: Synth AI <josh@usesynth.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -53,7 +53,7 @@ Requires-Dist: asyncpg>=0.30.0
|
|
|
53
53
|
Requires-Dist: aiohttp>=3.8.0
|
|
54
54
|
Requires-Dist: datasets>=4.0.0
|
|
55
55
|
Requires-Dist: transformers>=4.56.1
|
|
56
|
-
Requires-Dist: modal>=1.1.
|
|
56
|
+
Requires-Dist: modal>=1.1.0
|
|
57
57
|
Provides-Extra: dev
|
|
58
58
|
Requires-Dist: build>=1.2.2.post1; extra == "dev"
|
|
59
59
|
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
@@ -125,5 +125,6 @@ If your browser isn’t already signed in, sign in when prompted and the pairing
|
|
|
125
125
|
|
|
126
126
|
Environment variables:
|
|
127
127
|
|
|
128
|
-
- `SYNTH_CANONICAL_ORIGIN` (optional): override the dashboard base URL the SDK uses for the handshake (defaults to `
|
|
128
|
+
- `SYNTH_CANONICAL_ORIGIN` (optional): override the dashboard base URL the SDK uses for the handshake (defaults to `https://www.usesynth.ai/dashboard`).
|
|
129
|
+
- `SYNTH_CANONICAL_DEV` (optional): set to `1`, `true`, `yes`, or `on` to target the local dashboard at `http://localhost:3000`.
|
|
129
130
|
- Keys are stored only in your project’s `.env` file, not exported to your shell.
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import json
|
|
4
|
-
import os
|
|
5
|
-
import time
|
|
6
|
-
import webbrowser
|
|
7
|
-
from typing import Any, Dict, Tuple
|
|
8
|
-
|
|
9
|
-
import requests
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class HandshakeError(Exception):
|
|
13
|
-
pass
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def _origin() -> str:
|
|
17
|
-
# Prefer explicit env; fallback to localhost dashboard
|
|
18
|
-
return (os.getenv("SYNTH_CANONICAL_ORIGIN", "") or "http://localhost:3000").rstrip("/")
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def start_handshake_session(origin: str | None = None) -> Tuple[str, str, int, int]:
|
|
22
|
-
base = (origin or _origin()).rstrip("/")
|
|
23
|
-
url = f"{base}/api/sdk/handshake/init"
|
|
24
|
-
r = requests.post(url, timeout=10)
|
|
25
|
-
if r.status_code != 200:
|
|
26
|
-
raise HandshakeError(f"init failed: {r.status_code} {r.text}")
|
|
27
|
-
data = r.json()
|
|
28
|
-
return (
|
|
29
|
-
str(data.get("device_code")),
|
|
30
|
-
str(data.get("verification_uri")),
|
|
31
|
-
int(data.get("expires_in", 600)),
|
|
32
|
-
int(data.get("interval", 3)),
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def poll_handshake_token(device_code: str, origin: str | None = None, *, timeout_s: int | None = None) -> Dict[str, Any]:
|
|
37
|
-
base = (origin or _origin()).rstrip("/")
|
|
38
|
-
url = f"{base}/api/sdk/handshake/token"
|
|
39
|
-
deadline = time.time() + (timeout_s or 600)
|
|
40
|
-
while True:
|
|
41
|
-
if time.time() > deadline:
|
|
42
|
-
raise HandshakeError("handshake timed out")
|
|
43
|
-
try:
|
|
44
|
-
r = requests.post(url, json={"device_code": device_code}, timeout=10)
|
|
45
|
-
except Exception as e:
|
|
46
|
-
time.sleep(2)
|
|
47
|
-
continue
|
|
48
|
-
if r.status_code == 200:
|
|
49
|
-
return r.json()
|
|
50
|
-
elif r.status_code in (404, 410):
|
|
51
|
-
raise HandshakeError(f"handshake failed: {r.status_code}")
|
|
52
|
-
# 428 authorization_pending or others → wait and retry
|
|
53
|
-
time.sleep(2)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
def run_handshake(origin: str | None = None) -> Dict[str, Any]:
|
|
57
|
-
device_code, verification_uri, expires_in, interval = start_handshake_session(origin)
|
|
58
|
-
try:
|
|
59
|
-
webbrowser.open(verification_uri)
|
|
60
|
-
except Exception:
|
|
61
|
-
pass
|
|
62
|
-
return poll_handshake_token(device_code, origin, timeout_s=expires_in)
|
|
63
|
-
|
|
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.dev4 → synth_ai-0.2.8.dev6}/synth_ai/demos/demo_task_apps/math/deploy_modal.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/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.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/artifacts/__init__.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/artifacts/base.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/db/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/resources/sqlite.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/rewards/__init__.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/rewards/core.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/shared_engine.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/environment/tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/bandit/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/synth_ai/environments/examples/bandit/environment.py
RENAMED
|
File without changes
|
{synth_ai-0.2.8.dev4 → synth_ai-0.2.8.dev6}/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
|