synth-ai 0.17.5.dev587__tar.gz → 0.17.5.dev589__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.
- {synth_ai-0.17.5.dev587/synth_ai.egg-info → synth_ai-0.17.5.dev589}/PKG-INFO +7 -13
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/README.md +6 -12
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/pyproject.toml +1 -1
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/__init__.py +0 -58
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/main.py +2 -8
- synth_ai-0.17.5.dev589/synth_ai/client.py +127 -0
- synth_ai-0.17.5.dev589/synth_ai/sdk/__init__.py +13 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/client.py +1 -1
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/compat.py +2 -4
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/config.py +1 -2
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589/synth_ai.egg-info}/PKG-INFO +7 -13
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/SOURCES.txt +0 -15
- synth_ai-0.17.5.dev587/synth_ai/cli/containers.py +0 -93
- synth_ai-0.17.5.dev587/synth_ai/cli/pools.py +0 -147
- synth_ai-0.17.5.dev587/synth_ai/cli/tunnels.py +0 -159
- synth_ai-0.17.5.dev587/synth_ai/client.py +0 -263
- synth_ai-0.17.5.dev587/synth_ai/sdk/__init__.py +0 -66
- synth_ai-0.17.5.dev587/synth_ai/sdk/base.py +0 -149
- synth_ai-0.17.5.dev587/synth_ai/sdk/container/__init__.py +0 -15
- synth_ai-0.17.5.dev587/synth_ai/sdk/container/auth.py +0 -161
- synth_ai-0.17.5.dev587/synth_ai/sdk/containers.py +0 -307
- synth_ai-0.17.5.dev587/synth_ai/sdk/horizons_private.py +0 -132
- synth_ai-0.17.5.dev587/synth_ai/sdk/managed_agents/__init__.py +0 -8
- synth_ai-0.17.5.dev587/synth_ai/sdk/managed_agents/client.py +0 -910
- synth_ai-0.17.5.dev587/synth_ai/sdk/managed_agents_anthropic.py +0 -741
- synth_ai-0.17.5.dev587/synth_ai/sdk/openai_agents_sdk.py +0 -612
- synth_ai-0.17.5.dev587/synth_ai/sdk/openai_tools.py +0 -96
- synth_ai-0.17.5.dev587/synth_ai/sdk/pools.py +0 -603
- synth_ai-0.17.5.dev587/synth_ai/sdk/tunnels.py +0 -260
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/LICENSE +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/MANIFEST.in +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/setup.cfg +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/__main__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/__main__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/dev_envs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research_environments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research_factory_standup.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research_image_releases.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research_projects.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/config.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/auth/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/auth/context.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/auth/credentials.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/contracts/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/contracts/json_value.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/contracts/pagination.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/contracts/resources.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/errors.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/async_transport.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/request.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/retry.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/streaming.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/transport.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/research/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/dict.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/env.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/json.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/log_filter.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/paths.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/secure_files.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/urls.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/workspace.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/__main__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/objective_tools.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/registry.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/request_models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/server.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/approvals.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/artifacts.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/cloud_deployments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/datasets.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/dev_environments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/environments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/exports.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/factories.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/factory_results.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/files.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/image_releases.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/integrations.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/logs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/outputs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/progress.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/project_data.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/projects.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/prs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/readiness.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/repos.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/resources.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/runs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/smr_policy_schemas.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/tag.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/trained_models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/usage.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/visuals.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/py.typed +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/pagination.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/_internal/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/_internal/crypto.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/_internal/env.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/_internal/urls.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/account.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/advanced.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/advanced_factories.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/advanced_swarms.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/artifacts.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/auth.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/client.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/_wire.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/activity.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/billing.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/common.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/economics.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/environments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/evidence.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factories.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project_data.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/projects.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/promotions.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/research_intern.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_control.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_events.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_state.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/status.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/swarms.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/tag.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/traces.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/transcript.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/types.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/usage.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/visuals.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/work_products.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/economics.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/efforts.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/enums.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/environments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/errors.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/events.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/experiments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/facade.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/factories.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/factory_plans/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/factory_storage.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/image_releases.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/knowledge.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/operations.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/project_data.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/project_deliveries.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/project_workspaces.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/projects.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/public.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/readouts.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/research_intern.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/schemas/smr_openapi.yaml +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/secrets.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/_base.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/approvals.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/billing.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/cost.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/credentials.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/datasets.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/dev_environments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/environments.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/exports.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/factories.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/files.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/github.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/image_releases.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/images.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/integrations.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/logs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/outputs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/progress.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/project.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/projects.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/prs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/py.typed +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/readiness.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/repos.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/repositories.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/runs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/secrets.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/setup.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/tag.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/trained_models.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/transport.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/usage.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/work_products.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/swarms.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/traces.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/__init__.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/http.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/pagination.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/retries.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/streaming.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/version.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/visuals.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/wiki.py +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/requires.txt +0 -0
- {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/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.17.5.
|
|
3
|
+
Version: 0.17.5.dev589
|
|
4
4
|
Summary: Python-only SDK for Synth containers, tunnels, pools, and Research
|
|
5
5
|
Author-email: Synth AI <josh@usesynth.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -42,8 +42,7 @@ Dynamic: license-file
|
|
|
42
42
|
[](https://pypi.org/project/synth-ai/)
|
|
43
43
|
[](https://pypi.org/project/synth-ai/)
|
|
44
44
|
|
|
45
|
-
Python SDK and CLI for Managed Research
|
|
46
|
-
surfaces that support them.
|
|
45
|
+
Python SDK and CLI for Managed Research and Research Factory.
|
|
47
46
|
|
|
48
47
|
**Documentation:** https://docs.usesynth.ai/sdk/overview
|
|
49
48
|
|
|
@@ -183,9 +182,7 @@ synth-ai research --help
|
|
|
183
182
|
|
|
184
183
|
```bash
|
|
185
184
|
synth-ai --help
|
|
186
|
-
synth-ai
|
|
187
|
-
synth-ai tunnels health
|
|
188
|
-
synth-ai pools list
|
|
185
|
+
synth-ai research --help
|
|
189
186
|
```
|
|
190
187
|
|
|
191
188
|
## Public Surface
|
|
@@ -195,10 +192,10 @@ Use `SynthClient` as the front door:
|
|
|
195
192
|
| Surface | Client namespace | Use it for |
|
|
196
193
|
| --- | --- | --- |
|
|
197
194
|
| **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
|
|
198
|
-
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
195
|
+
| CLI | `synth-ai` | Terminal access to Research commands. |
|
|
196
|
+
|
|
197
|
+
Infrastructure clients (containers, tunnels, pools) are parked under `old/` for
|
|
198
|
+
later restoration and are not composed on `SynthClient` right now.
|
|
202
199
|
|
|
203
200
|
Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
|
|
204
201
|
want hosted research workers, repo runs, evidence, checkpoints, MCP, or final
|
|
@@ -225,9 +222,6 @@ recompute discounts in the client.
|
|
|
225
222
|
|
|
226
223
|
- [Install and authenticate](https://docs.usesynth.ai/sdk/install-and-auth)
|
|
227
224
|
- [SynthClient guide](https://docs.usesynth.ai/sdk/synth-client)
|
|
228
|
-
- [Tunnels](https://docs.usesynth.ai/sdk/tunnels)
|
|
229
|
-
- [Pools](https://docs.usesynth.ai/sdk/pools)
|
|
230
|
-
- [Containers](https://docs.usesynth.ai/sdk/containers)
|
|
231
225
|
- [SDK reference](https://docs.usesynth.ai/reference/sdk)
|
|
232
226
|
- [OpenAPI contracts](https://docs.usesynth.ai/reference/openapi)
|
|
233
227
|
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
[](https://pypi.org/project/synth-ai/)
|
|
7
7
|
[](https://pypi.org/project/synth-ai/)
|
|
8
8
|
|
|
9
|
-
Python SDK and CLI for Managed Research
|
|
10
|
-
surfaces that support them.
|
|
9
|
+
Python SDK and CLI for Managed Research and Research Factory.
|
|
11
10
|
|
|
12
11
|
**Documentation:** https://docs.usesynth.ai/sdk/overview
|
|
13
12
|
|
|
@@ -147,9 +146,7 @@ synth-ai research --help
|
|
|
147
146
|
|
|
148
147
|
```bash
|
|
149
148
|
synth-ai --help
|
|
150
|
-
synth-ai
|
|
151
|
-
synth-ai tunnels health
|
|
152
|
-
synth-ai pools list
|
|
149
|
+
synth-ai research --help
|
|
153
150
|
```
|
|
154
151
|
|
|
155
152
|
## Public Surface
|
|
@@ -159,10 +156,10 @@ Use `SynthClient` as the front door:
|
|
|
159
156
|
| Surface | Client namespace | Use it for |
|
|
160
157
|
| --- | --- | --- |
|
|
161
158
|
| **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
|
|
162
|
-
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
159
|
+
| CLI | `synth-ai` | Terminal access to Research commands. |
|
|
160
|
+
|
|
161
|
+
Infrastructure clients (containers, tunnels, pools) are parked under `old/` for
|
|
162
|
+
later restoration and are not composed on `SynthClient` right now.
|
|
166
163
|
|
|
167
164
|
Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
|
|
168
165
|
want hosted research workers, repo runs, evidence, checkpoints, MCP, or final
|
|
@@ -189,9 +186,6 @@ recompute discounts in the client.
|
|
|
189
186
|
|
|
190
187
|
- [Install and authenticate](https://docs.usesynth.ai/sdk/install-and-auth)
|
|
191
188
|
- [SynthClient guide](https://docs.usesynth.ai/sdk/synth-client)
|
|
192
|
-
- [Tunnels](https://docs.usesynth.ai/sdk/tunnels)
|
|
193
|
-
- [Pools](https://docs.usesynth.ai/sdk/pools)
|
|
194
|
-
- [Containers](https://docs.usesynth.ai/sdk/containers)
|
|
195
189
|
- [SDK reference](https://docs.usesynth.ai/reference/sdk)
|
|
196
190
|
- [OpenAPI contracts](https://docs.usesynth.ai/reference/openapi)
|
|
197
191
|
|
|
@@ -40,16 +40,7 @@ except _PackageNotFoundError:
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
__all__ = [
|
|
43
|
-
"AsyncContainerPoolsClient",
|
|
44
|
-
"AsyncContainersClient",
|
|
45
|
-
"AsyncHorizonsPrivateClient",
|
|
46
|
-
"AsyncManagedAgentsAnthropicClient",
|
|
47
|
-
"AsyncOpenAIAgentsSdkClient",
|
|
48
43
|
"AsyncSynthClient",
|
|
49
|
-
"AsyncSynthManagedAgents",
|
|
50
|
-
"AsyncTunnelsClient",
|
|
51
|
-
"ContainerPoolsClient",
|
|
52
|
-
"ContainersClient",
|
|
53
44
|
"DataBindingCreateRequest",
|
|
54
45
|
"DatasetRevisionCreateRequest",
|
|
55
46
|
"DatasetRevisionFinalizeRequest",
|
|
@@ -63,11 +54,7 @@ __all__ = [
|
|
|
63
54
|
"FactoryRoleReceiptResponse",
|
|
64
55
|
"FactoryRoleReceiptRuntimeEvidence",
|
|
65
56
|
"FactoryStorageAuthorityResponse",
|
|
66
|
-
"HorizonsPrivateClient",
|
|
67
57
|
"ResearchApiError",
|
|
68
|
-
"ManagedAgentsAnthropicClient",
|
|
69
|
-
"ManagedAgentRun",
|
|
70
|
-
"OpenAIAgentsSdkClient",
|
|
71
58
|
"MagiDecisionRequest",
|
|
72
59
|
"MagiMode",
|
|
73
60
|
"ProjectComputerCleanupReceiptResponse",
|
|
@@ -97,10 +84,6 @@ __all__ = [
|
|
|
97
84
|
"ResearchVisualPromotionRequest",
|
|
98
85
|
"ResearchVisualVersions",
|
|
99
86
|
"SynthClient",
|
|
100
|
-
"SynthManagedAgents",
|
|
101
|
-
"TunnelsClient",
|
|
102
|
-
"function_tool",
|
|
103
|
-
"mcp_tool",
|
|
104
87
|
]
|
|
105
88
|
|
|
106
89
|
_EXPORTS: dict[str, tuple[str, str]] = {
|
|
@@ -266,47 +249,6 @@ _EXPORTS: dict[str, tuple[str, str]] = {
|
|
|
266
249
|
),
|
|
267
250
|
"SynthClient": ("synth_ai.client", "SynthClient"),
|
|
268
251
|
"AsyncSynthClient": ("synth_ai.client", "AsyncSynthClient"),
|
|
269
|
-
"ContainersClient": ("synth_ai.sdk.containers", "ContainersClient"),
|
|
270
|
-
"AsyncContainersClient": ("synth_ai.sdk.containers", "AsyncContainersClient"),
|
|
271
|
-
"ContainerPoolsClient": ("synth_ai.sdk.pools", "ContainerPoolsClient"),
|
|
272
|
-
"AsyncContainerPoolsClient": ("synth_ai.sdk.pools", "AsyncContainerPoolsClient"),
|
|
273
|
-
"HorizonsPrivateClient": ("synth_ai.sdk.horizons_private", "HorizonsPrivateClient"),
|
|
274
|
-
"AsyncHorizonsPrivateClient": (
|
|
275
|
-
"synth_ai.sdk.horizons_private",
|
|
276
|
-
"AsyncHorizonsPrivateClient",
|
|
277
|
-
),
|
|
278
|
-
"ManagedAgentsAnthropicClient": (
|
|
279
|
-
"synth_ai.sdk.managed_agents_anthropic",
|
|
280
|
-
"ManagedAgentsAnthropicClient",
|
|
281
|
-
),
|
|
282
|
-
"ManagedAgentRun": (
|
|
283
|
-
"synth_ai.sdk.managed_agents_anthropic",
|
|
284
|
-
"ManagedAgentRun",
|
|
285
|
-
),
|
|
286
|
-
"AsyncManagedAgentsAnthropicClient": (
|
|
287
|
-
"synth_ai.sdk.managed_agents_anthropic",
|
|
288
|
-
"AsyncManagedAgentsAnthropicClient",
|
|
289
|
-
),
|
|
290
|
-
"SynthManagedAgents": (
|
|
291
|
-
"synth_ai.sdk.managed_agents",
|
|
292
|
-
"SynthManagedAgents",
|
|
293
|
-
),
|
|
294
|
-
"AsyncSynthManagedAgents": (
|
|
295
|
-
"synth_ai.sdk.managed_agents",
|
|
296
|
-
"AsyncSynthManagedAgents",
|
|
297
|
-
),
|
|
298
|
-
"OpenAIAgentsSdkClient": (
|
|
299
|
-
"synth_ai.sdk.openai_agents_sdk",
|
|
300
|
-
"OpenAIAgentsSdkClient",
|
|
301
|
-
),
|
|
302
|
-
"AsyncOpenAIAgentsSdkClient": (
|
|
303
|
-
"synth_ai.sdk.openai_agents_sdk",
|
|
304
|
-
"AsyncOpenAIAgentsSdkClient",
|
|
305
|
-
),
|
|
306
|
-
"TunnelsClient": ("synth_ai.sdk.tunnels", "TunnelsClient"),
|
|
307
|
-
"AsyncTunnelsClient": ("synth_ai.sdk.tunnels", "AsyncTunnelsClient"),
|
|
308
|
-
"function_tool": ("synth_ai.sdk.openai_tools", "function_tool"),
|
|
309
|
-
"mcp_tool": ("synth_ai.sdk.openai_tools", "mcp_tool"),
|
|
310
252
|
}
|
|
311
253
|
|
|
312
254
|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
"""Root CLI group
|
|
1
|
+
"""Root CLI group for Research and remaining local helpers."""
|
|
2
2
|
|
|
3
3
|
import click
|
|
4
4
|
|
|
5
|
-
from synth_ai.cli.containers import containers
|
|
6
5
|
from synth_ai.cli.dev_envs import dev_envs
|
|
7
|
-
from synth_ai.cli.pools import pools
|
|
8
6
|
from synth_ai.cli.research import research
|
|
9
|
-
from synth_ai.cli.tunnels import tunnels
|
|
10
7
|
|
|
11
8
|
|
|
12
9
|
def _get_version():
|
|
@@ -22,13 +19,10 @@ def _get_version():
|
|
|
22
19
|
@click.version_option(version=_get_version(), prog_name="synth-ai")
|
|
23
20
|
@click.pass_context
|
|
24
21
|
def cli(ctx):
|
|
25
|
-
"""Synth AI
|
|
22
|
+
"""Synth AI CLI."""
|
|
26
23
|
if ctx.invoked_subcommand is None:
|
|
27
24
|
click.echo(ctx.get_help())
|
|
28
25
|
|
|
29
26
|
|
|
30
|
-
cli.add_command(containers)
|
|
31
27
|
cli.add_command(dev_envs)
|
|
32
|
-
cli.add_command(pools)
|
|
33
28
|
cli.add_command(research)
|
|
34
|
-
cli.add_command(tunnels)
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"""Python-only front-door SDK clients."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import warnings
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
from synth_ai.core.auth.credentials import resolve_api_credential
|
|
9
|
+
from synth_ai.core.utils.urls import BACKEND_URL_BASE, normalize_backend_base
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from synth_ai.sdk.research import AsyncResearchClient
|
|
13
|
+
from synth_ai.sdk.research.facade import ResearchClient
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _resolve_api_key(api_key: str | None) -> str:
|
|
17
|
+
return resolve_api_credential(api_key).value
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _resolve_base_url(base_url: str | None) -> str:
|
|
21
|
+
return normalize_backend_base(base_url or BACKEND_URL_BASE)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class SynthClient:
|
|
25
|
+
"""Sync client for Managed Research.
|
|
26
|
+
|
|
27
|
+
Use ``research`` for hosted projects, swarms, and Factory lifecycles.
|
|
28
|
+
Infrastructure clients (containers, tunnels, pools) are archived under
|
|
29
|
+
``old/sdk/`` and are not composed here.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
def __init__(
|
|
33
|
+
self,
|
|
34
|
+
*,
|
|
35
|
+
api_key: str | None = None,
|
|
36
|
+
base_url: str | None = None,
|
|
37
|
+
timeout: float = 30.0,
|
|
38
|
+
) -> None:
|
|
39
|
+
self.api_key = _resolve_api_key(api_key)
|
|
40
|
+
self.base_url = _resolve_base_url(base_url)
|
|
41
|
+
self.timeout = timeout
|
|
42
|
+
self._research_client: ResearchClient | None = None
|
|
43
|
+
|
|
44
|
+
@property
|
|
45
|
+
def research(self) -> ResearchClient:
|
|
46
|
+
"""Research hero namespace (projects, swarms, and factories)."""
|
|
47
|
+
if self._research_client is None:
|
|
48
|
+
from synth_ai.sdk.research.facade import ResearchClient
|
|
49
|
+
|
|
50
|
+
self._research_client = ResearchClient(
|
|
51
|
+
api_key=self.api_key,
|
|
52
|
+
base_url=self.base_url,
|
|
53
|
+
timeout_seconds=self.timeout,
|
|
54
|
+
)
|
|
55
|
+
return self._research_client
|
|
56
|
+
|
|
57
|
+
def close(self) -> None:
|
|
58
|
+
"""Close all lazily opened SDK transports."""
|
|
59
|
+
if self._research_client is not None:
|
|
60
|
+
self._research_client.close()
|
|
61
|
+
|
|
62
|
+
def __enter__(self) -> SynthClient:
|
|
63
|
+
return self
|
|
64
|
+
|
|
65
|
+
def __exit__(self, exc_type: object, exc: object, traceback: object) -> None:
|
|
66
|
+
self.close()
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class AsyncSynthClient:
|
|
70
|
+
"""Async client for Managed Research."""
|
|
71
|
+
|
|
72
|
+
def __init__(
|
|
73
|
+
self,
|
|
74
|
+
*,
|
|
75
|
+
api_key: str | None = None,
|
|
76
|
+
base_url: str | None = None,
|
|
77
|
+
timeout: float = 30.0,
|
|
78
|
+
) -> None:
|
|
79
|
+
self.api_key = _resolve_api_key(api_key)
|
|
80
|
+
self.base_url = _resolve_base_url(base_url)
|
|
81
|
+
self.timeout = timeout
|
|
82
|
+
self._async_research_client: AsyncResearchClient | None = None
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def research(self) -> AsyncResearchClient:
|
|
86
|
+
"""Native asynchronous Research namespace."""
|
|
87
|
+
if self._async_research_client is None:
|
|
88
|
+
from synth_ai.sdk.research import AsyncResearchClient
|
|
89
|
+
|
|
90
|
+
self._async_research_client = AsyncResearchClient(
|
|
91
|
+
api_key=self.api_key,
|
|
92
|
+
base_url=self.base_url,
|
|
93
|
+
timeout_seconds=self.timeout,
|
|
94
|
+
)
|
|
95
|
+
return self._async_research_client
|
|
96
|
+
|
|
97
|
+
@property
|
|
98
|
+
def async_research(self) -> AsyncResearchClient:
|
|
99
|
+
"""Deprecated alias for :attr:`research`."""
|
|
100
|
+
warnings.warn(
|
|
101
|
+
"AsyncSynthClient.async_research is deprecated; use .research.",
|
|
102
|
+
DeprecationWarning,
|
|
103
|
+
stacklevel=2,
|
|
104
|
+
)
|
|
105
|
+
return self.research
|
|
106
|
+
|
|
107
|
+
async def close(self) -> None:
|
|
108
|
+
"""Close all asynchronous Research transports."""
|
|
109
|
+
if self._async_research_client is not None:
|
|
110
|
+
await self._async_research_client.close()
|
|
111
|
+
|
|
112
|
+
async def __aenter__(self) -> AsyncSynthClient:
|
|
113
|
+
return self
|
|
114
|
+
|
|
115
|
+
async def __aexit__(
|
|
116
|
+
self,
|
|
117
|
+
exc_type: object,
|
|
118
|
+
exc: object,
|
|
119
|
+
traceback: object,
|
|
120
|
+
) -> None:
|
|
121
|
+
await self.close()
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
__all__ = [
|
|
125
|
+
"AsyncSynthClient",
|
|
126
|
+
"SynthClient",
|
|
127
|
+
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""Public SDK layer: Research plus shared client plumbing.
|
|
2
|
+
|
|
3
|
+
Infrastructure clients (containers, tunnels, pools, horizons_private,
|
|
4
|
+
openai_tools, base) are archived under ``old/sdk/`` for later restoration.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from synth_ai.sdk.pagination import AsyncPage, SyncPage, page_from_wire
|
|
8
|
+
|
|
9
|
+
__all__ = [
|
|
10
|
+
"AsyncPage",
|
|
11
|
+
"SyncPage",
|
|
12
|
+
"page_from_wire",
|
|
13
|
+
]
|
|
@@ -6064,7 +6064,7 @@ class ResearchSession(ManagedResearchRunAuthorityMixin):
|
|
|
6064
6064
|
|
|
6065
6065
|
|
|
6066
6066
|
class ResearchControlSession(ResearchControlSessionMixin, ResearchSession):
|
|
6067
|
-
"""Compatibility alias
|
|
6067
|
+
"""Compatibility alias; retired managed-agents bridge attributes raise.
|
|
6068
6068
|
|
|
6069
6069
|
`ResearchSession` is the canonical public name. `ResearchControlSession`
|
|
6070
6070
|
remains as a one-release alias but requires callers to pass the selected
|
|
@@ -9,10 +9,8 @@ class ResearchControlSessionMixin:
|
|
|
9
9
|
@staticmethod
|
|
10
10
|
def _retired_bridge_error(surface: str) -> RuntimeError:
|
|
11
11
|
return RuntimeError(
|
|
12
|
-
f"{surface} was retired with the backend managed-agents proxy
|
|
13
|
-
"
|
|
14
|
-
"Horizons Private base URL and credential; a Synth API key is not a "
|
|
15
|
-
"replacement service credential."
|
|
12
|
+
f"{surface} was retired with the backend managed-agents proxy and is "
|
|
13
|
+
"no longer available in synth-ai."
|
|
16
14
|
)
|
|
17
15
|
|
|
18
16
|
def close_openai_bridge(self) -> None:
|
|
@@ -88,8 +88,7 @@ def resolve_openai_transport_mode(value: str | None) -> str:
|
|
|
88
88
|
}:
|
|
89
89
|
raise ValueError(
|
|
90
90
|
f"openai_transport_mode={normalized!r} was retired with the backend "
|
|
91
|
-
"managed-agents proxy
|
|
92
|
-
"base URL and credential"
|
|
91
|
+
"managed-agents proxy and is no longer available"
|
|
93
92
|
)
|
|
94
93
|
if normalized not in OPENAI_VALID_TRANSPORT_MODES:
|
|
95
94
|
raise ValueError(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synth-ai
|
|
3
|
-
Version: 0.17.5.
|
|
3
|
+
Version: 0.17.5.dev589
|
|
4
4
|
Summary: Python-only SDK for Synth containers, tunnels, pools, and Research
|
|
5
5
|
Author-email: Synth AI <josh@usesynth.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -42,8 +42,7 @@ Dynamic: license-file
|
|
|
42
42
|
[](https://pypi.org/project/synth-ai/)
|
|
43
43
|
[](https://pypi.org/project/synth-ai/)
|
|
44
44
|
|
|
45
|
-
Python SDK and CLI for Managed Research
|
|
46
|
-
surfaces that support them.
|
|
45
|
+
Python SDK and CLI for Managed Research and Research Factory.
|
|
47
46
|
|
|
48
47
|
**Documentation:** https://docs.usesynth.ai/sdk/overview
|
|
49
48
|
|
|
@@ -183,9 +182,7 @@ synth-ai research --help
|
|
|
183
182
|
|
|
184
183
|
```bash
|
|
185
184
|
synth-ai --help
|
|
186
|
-
synth-ai
|
|
187
|
-
synth-ai tunnels health
|
|
188
|
-
synth-ai pools list
|
|
185
|
+
synth-ai research --help
|
|
189
186
|
```
|
|
190
187
|
|
|
191
188
|
## Public Surface
|
|
@@ -195,10 +192,10 @@ Use `SynthClient` as the front door:
|
|
|
195
192
|
| Surface | Client namespace | Use it for |
|
|
196
193
|
| --- | --- | --- |
|
|
197
194
|
| **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
|
|
198
|
-
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
195
|
+
| CLI | `synth-ai` | Terminal access to Research commands. |
|
|
196
|
+
|
|
197
|
+
Infrastructure clients (containers, tunnels, pools) are parked under `old/` for
|
|
198
|
+
later restoration and are not composed on `SynthClient` right now.
|
|
202
199
|
|
|
203
200
|
Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
|
|
204
201
|
want hosted research workers, repo runs, evidence, checkpoints, MCP, or final
|
|
@@ -225,9 +222,6 @@ recompute discounts in the client.
|
|
|
225
222
|
|
|
226
223
|
- [Install and authenticate](https://docs.usesynth.ai/sdk/install-and-auth)
|
|
227
224
|
- [SynthClient guide](https://docs.usesynth.ai/sdk/synth-client)
|
|
228
|
-
- [Tunnels](https://docs.usesynth.ai/sdk/tunnels)
|
|
229
|
-
- [Pools](https://docs.usesynth.ai/sdk/pools)
|
|
230
|
-
- [Containers](https://docs.usesynth.ai/sdk/containers)
|
|
231
225
|
- [SDK reference](https://docs.usesynth.ai/reference/sdk)
|
|
232
226
|
- [OpenAPI contracts](https://docs.usesynth.ai/reference/openapi)
|
|
233
227
|
|
|
@@ -15,16 +15,13 @@ synth_ai.egg-info/requires.txt
|
|
|
15
15
|
synth_ai.egg-info/top_level.txt
|
|
16
16
|
synth_ai/cli/__init__.py
|
|
17
17
|
synth_ai/cli/__main__.py
|
|
18
|
-
synth_ai/cli/containers.py
|
|
19
18
|
synth_ai/cli/dev_envs.py
|
|
20
19
|
synth_ai/cli/main.py
|
|
21
|
-
synth_ai/cli/pools.py
|
|
22
20
|
synth_ai/cli/research.py
|
|
23
21
|
synth_ai/cli/research_environments.py
|
|
24
22
|
synth_ai/cli/research_factory_standup.py
|
|
25
23
|
synth_ai/cli/research_image_releases.py
|
|
26
24
|
synth_ai/cli/research_projects.py
|
|
27
|
-
synth_ai/cli/tunnels.py
|
|
28
25
|
synth_ai/core/__init__.py
|
|
29
26
|
synth_ai/core/errors.py
|
|
30
27
|
synth_ai/core/auth/__init__.py
|
|
@@ -87,19 +84,7 @@ synth_ai/mcp/research/tools/usage.py
|
|
|
87
84
|
synth_ai/mcp/research/tools/visuals.py
|
|
88
85
|
synth_ai/mcp/research/tools/workspace_inputs.py
|
|
89
86
|
synth_ai/sdk/__init__.py
|
|
90
|
-
synth_ai/sdk/base.py
|
|
91
|
-
synth_ai/sdk/containers.py
|
|
92
|
-
synth_ai/sdk/horizons_private.py
|
|
93
|
-
synth_ai/sdk/managed_agents_anthropic.py
|
|
94
|
-
synth_ai/sdk/openai_agents_sdk.py
|
|
95
|
-
synth_ai/sdk/openai_tools.py
|
|
96
87
|
synth_ai/sdk/pagination.py
|
|
97
|
-
synth_ai/sdk/pools.py
|
|
98
|
-
synth_ai/sdk/tunnels.py
|
|
99
|
-
synth_ai/sdk/container/__init__.py
|
|
100
|
-
synth_ai/sdk/container/auth.py
|
|
101
|
-
synth_ai/sdk/managed_agents/__init__.py
|
|
102
|
-
synth_ai/sdk/managed_agents/client.py
|
|
103
88
|
synth_ai/sdk/research/__init__.py
|
|
104
89
|
synth_ai/sdk/research/account.py
|
|
105
90
|
synth_ai/sdk/research/advanced.py
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"""Containers CLI commands."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import json
|
|
6
|
-
import os
|
|
7
|
-
from pathlib import Path
|
|
8
|
-
from typing import Any
|
|
9
|
-
|
|
10
|
-
import click
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def _load_json_argument(raw: str | None) -> dict[str, Any]:
|
|
14
|
-
if not raw:
|
|
15
|
-
return {}
|
|
16
|
-
value = raw.strip()
|
|
17
|
-
if value.startswith("@"):
|
|
18
|
-
value = Path(value[1:]).read_text()
|
|
19
|
-
parsed = json.loads(value)
|
|
20
|
-
if not isinstance(parsed, dict):
|
|
21
|
-
raise click.ClickException("Expected a JSON object.")
|
|
22
|
-
return parsed
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def _client(api_key: str | None, backend_url: str | None):
|
|
26
|
-
from synth_ai.sdk.containers import ContainersClient
|
|
27
|
-
|
|
28
|
-
return ContainersClient(api_key=api_key, backend_base=backend_url)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
def _echo(data: Any) -> None:
|
|
32
|
-
click.echo(json.dumps(data, indent=2, default=str))
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
@click.group()
|
|
36
|
-
def containers() -> None:
|
|
37
|
-
"""Manage hosted containers."""
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
@containers.command("list")
|
|
41
|
-
@click.option("--api-key", envvar="SYNTH_API_KEY")
|
|
42
|
-
@click.option("--backend-url", envvar="SYNTH_BACKEND_URL", default=os.getenv("SYNTH_BACKEND_URL"))
|
|
43
|
-
def list_containers(api_key: str | None, backend_url: str | None) -> None:
|
|
44
|
-
items = _client(api_key, backend_url).list()
|
|
45
|
-
_echo([item.model_dump() for item in items])
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
@containers.command("get")
|
|
49
|
-
@click.argument("container_id")
|
|
50
|
-
@click.option("--api-key", envvar="SYNTH_API_KEY")
|
|
51
|
-
@click.option("--backend-url", envvar="SYNTH_BACKEND_URL", default=os.getenv("SYNTH_BACKEND_URL"))
|
|
52
|
-
def get_container(container_id: str, api_key: str | None, backend_url: str | None) -> None:
|
|
53
|
-
item = _client(api_key, backend_url).get(container_id)
|
|
54
|
-
_echo(item.model_dump())
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
@containers.command("create")
|
|
58
|
-
@click.option("--name", required=True)
|
|
59
|
-
@click.option("--task-type", required=True)
|
|
60
|
-
@click.option("--definition", default="{}")
|
|
61
|
-
@click.option("--environment-config", default=None)
|
|
62
|
-
@click.option("--internal-url", default=None)
|
|
63
|
-
@click.option("--api-key", envvar="SYNTH_API_KEY")
|
|
64
|
-
@click.option("--backend-url", envvar="SYNTH_BACKEND_URL", default=os.getenv("SYNTH_BACKEND_URL"))
|
|
65
|
-
def create_container(
|
|
66
|
-
name: str,
|
|
67
|
-
task_type: str,
|
|
68
|
-
definition: str,
|
|
69
|
-
environment_config: str | None,
|
|
70
|
-
internal_url: str | None,
|
|
71
|
-
api_key: str | None,
|
|
72
|
-
backend_url: str | None,
|
|
73
|
-
) -> None:
|
|
74
|
-
from synth_ai.sdk.containers import ContainerSpec
|
|
75
|
-
|
|
76
|
-
spec = ContainerSpec(
|
|
77
|
-
name=name,
|
|
78
|
-
task_type=task_type,
|
|
79
|
-
definition=_load_json_argument(definition),
|
|
80
|
-
environment_config=_load_json_argument(environment_config) if environment_config else None,
|
|
81
|
-
internal_url=internal_url,
|
|
82
|
-
)
|
|
83
|
-
item = _client(api_key, backend_url).create(spec)
|
|
84
|
-
_echo(item.model_dump())
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
@containers.command("delete")
|
|
88
|
-
@click.argument("container_id")
|
|
89
|
-
@click.option("--api-key", envvar="SYNTH_API_KEY")
|
|
90
|
-
@click.option("--backend-url", envvar="SYNTH_BACKEND_URL", default=os.getenv("SYNTH_BACKEND_URL"))
|
|
91
|
-
def delete_container(container_id: str, api_key: str | None, backend_url: str | None) -> None:
|
|
92
|
-
_client(api_key, backend_url).delete(container_id)
|
|
93
|
-
_echo({"status": "deleted", "container_id": container_id})
|