synth-ai 0.18.2.dev603__tar.gz → 0.18.2.dev606__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.18.2.dev603/synth_ai.egg-info → synth_ai-0.18.2.dev606}/PKG-INFO +2 -2
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/README.md +1 -1
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/pyproject.toml +1 -1
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/client.py +6 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/research_intern.py +36 -4
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/client.py +10 -2
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/__init__.py +18 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/research_intern.py +131 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/facade.py +2 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/public.py +20 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/research_intern.py +118 -7
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606/synth_ai.egg-info}/PKG-INFO +2 -2
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/LICENSE +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/MANIFEST.in +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/setup.cfg +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/README.md +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/__main__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/AGENTS.md +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/README.md +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/__main__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/main.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/research.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/research_environments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/research_image_releases.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/cli/research_projects.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/README.md +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/auth/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/auth/credentials.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/contracts/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/contracts/json_value.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/contracts/pagination.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/errors.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/http/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/http/async_transport.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/http/request.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/http/retry.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/http/streaming.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/http/transport.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/utils/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/utils/env.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/utils/log_filter.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/utils/paths.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/core/utils/urls.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/README.md +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/__main__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/objective_tools.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/registry.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/request_models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/server.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/approvals.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/artifacts.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/datasets.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/environments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/exports.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/factories.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/factory_results.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/files.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/image_releases.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/integrations.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/logs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/outputs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/policy_schemas.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/progress.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/project_data.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/projects.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/prs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/readiness.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/repos.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/resources.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/runs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/trained_models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/usage.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/visuals.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/py.typed +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/README.md +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/pagination.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/_internal/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/_internal/crypto.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/_internal/env.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/_internal/urls.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/account.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/advanced.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/advanced_factories.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/advanced_swarms.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/artifacts.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/auth.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/_wire.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/activity.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/billing.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/common.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/economics.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/environments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/evidence.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/factories.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/failure.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/limit_evidence.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/project.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/project_data.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/projects.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/promotions.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_control.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_events.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_state.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/status.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/swarms.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/tag.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/traces.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/transcript.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/types.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/usage.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/visuals.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/wire_models_README.md +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/work_products.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/economics.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/efforts.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/environments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/errors.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/events.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/experiments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/factories.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/factory_storage.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/image_releases.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/knowledge.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/operations.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/project_data.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/project_deliveries.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/project_workspaces.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/projects.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/readouts.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/secrets.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/README.md +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/_base.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/approvals.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/billing.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/client.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/config.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/cost.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/datasets.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/dev_environments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/environments.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/exports.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/factories.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/files.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/github.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/image_releases.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/images.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/logs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/outputs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/progress.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/project.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/projects.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/prs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/readiness.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/repositories.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/runs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/secrets.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/setup.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/tag.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/trained_models.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/transport.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/usage.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/work_products.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/swarms.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/traces.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/transport/__init__.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/transport/http.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/transport/pagination.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/version.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/visuals.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/wiki.py +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai.egg-info/SOURCES.txt +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai.egg-info/requires.txt +0 -0
- {synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/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.18.2.
|
|
3
|
+
Version: 0.18.2.dev606
|
|
4
4
|
Summary: Python SDK and CLI for Synth Managed Research and Research Factory
|
|
5
5
|
Author-email: Synth AI <josh@usesynth.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -27,7 +27,7 @@ Dynamic: license-file
|
|
|
27
27
|
|
|
28
28
|
# Synth AI SDK
|
|
29
29
|
|
|
30
|
-
<!-- CI release pins: PyPI-0.18.
|
|
30
|
+
<!-- CI release pins: PyPI-0.18.2-orange synth-ai==0.18.2 -->
|
|
31
31
|
|
|
32
32
|
[](https://pypi.org/project/synth-ai/)
|
|
33
33
|
[](https://pypi.org/project/synth-ai/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Synth AI SDK
|
|
2
2
|
|
|
3
|
-
<!-- CI release pins: PyPI-0.18.
|
|
3
|
+
<!-- CI release pins: PyPI-0.18.2-orange synth-ai==0.18.2 -->
|
|
4
4
|
|
|
5
5
|
[](https://pypi.org/project/synth-ai/)
|
|
6
6
|
[](https://pypi.org/project/synth-ai/)
|
|
@@ -34,10 +34,12 @@ class SynthClient:
|
|
|
34
34
|
api_key: str | None = None,
|
|
35
35
|
base_url: str | None = None,
|
|
36
36
|
timeout_seconds: float = 30.0,
|
|
37
|
+
allow_legacy_intern_sessions: bool = False,
|
|
37
38
|
) -> None:
|
|
38
39
|
self.api_key = _resolve_api_key(api_key)
|
|
39
40
|
self.base_url = _resolve_base_url(base_url)
|
|
40
41
|
self.timeout_seconds = timeout_seconds
|
|
42
|
+
self.allow_legacy_intern_sessions = allow_legacy_intern_sessions
|
|
41
43
|
self._research_client: ResearchClient | None = None
|
|
42
44
|
|
|
43
45
|
@property
|
|
@@ -50,6 +52,7 @@ class SynthClient:
|
|
|
50
52
|
api_key=self.api_key,
|
|
51
53
|
base_url=self.base_url,
|
|
52
54
|
timeout_seconds=self.timeout_seconds,
|
|
55
|
+
allow_legacy_intern_sessions=self.allow_legacy_intern_sessions,
|
|
53
56
|
)
|
|
54
57
|
return self._research_client
|
|
55
58
|
|
|
@@ -75,10 +78,12 @@ class AsyncSynthClient:
|
|
|
75
78
|
api_key: str | None = None,
|
|
76
79
|
base_url: str | None = None,
|
|
77
80
|
timeout_seconds: float = 30.0,
|
|
81
|
+
allow_legacy_intern_sessions: bool = False,
|
|
78
82
|
) -> None:
|
|
79
83
|
self.api_key = _resolve_api_key(api_key)
|
|
80
84
|
self.base_url = _resolve_base_url(base_url)
|
|
81
85
|
self.timeout_seconds = timeout_seconds
|
|
86
|
+
self.allow_legacy_intern_sessions = allow_legacy_intern_sessions
|
|
82
87
|
self._async_research_client: AsyncResearchClient | None = None
|
|
83
88
|
|
|
84
89
|
@property
|
|
@@ -91,6 +96,7 @@ class AsyncSynthClient:
|
|
|
91
96
|
api_key=self.api_key,
|
|
92
97
|
base_url=self.base_url,
|
|
93
98
|
timeout_seconds=self.timeout_seconds,
|
|
99
|
+
allow_legacy_intern_sessions=self.allow_legacy_intern_sessions,
|
|
94
100
|
)
|
|
95
101
|
return self._async_research_client
|
|
96
102
|
|
{synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/mcp/research/tools/research_intern.py
RENAMED
|
@@ -12,7 +12,12 @@ from synth_ai.mcp.research.registry import (
|
|
|
12
12
|
ToolDefinition,
|
|
13
13
|
tool_schema,
|
|
14
14
|
)
|
|
15
|
-
from synth_ai.mcp.research.request_models import
|
|
15
|
+
from synth_ai.mcp.research.request_models import (
|
|
16
|
+
optional_int,
|
|
17
|
+
optional_string,
|
|
18
|
+
require_int,
|
|
19
|
+
require_string,
|
|
20
|
+
)
|
|
16
21
|
from synth_ai.sdk.research.client import Client as ResearchClient
|
|
17
22
|
from synth_ai.sdk.research.contracts.research_intern import (
|
|
18
23
|
InternAsyncCommandKind,
|
|
@@ -35,11 +40,35 @@ from synth_ai.sdk.research.contracts.research_intern import (
|
|
|
35
40
|
ResearchInternTracePublicationRequest,
|
|
36
41
|
ResearchInternTurnRequest,
|
|
37
42
|
)
|
|
38
|
-
from synth_ai.sdk.research.research_intern import
|
|
43
|
+
from synth_ai.sdk.research.research_intern import (
|
|
44
|
+
ResearchInternEventCursor,
|
|
45
|
+
legacy_intern_sessions_enabled,
|
|
46
|
+
)
|
|
39
47
|
|
|
40
48
|
CoreClientFactory = Callable[[JSONDict], ResearchClient]
|
|
41
49
|
_RESEARCH_INTERN_EVENT_SEQUENCE_MAX = 2**31 - 1
|
|
42
50
|
|
|
51
|
+
#: MCP tools that drive the legacy ``/smr/research-intern/sessions`` plane.
|
|
52
|
+
#: They are excluded from registration unless the environment explicitly opts
|
|
53
|
+
#: in via ``SYNTH_ALLOW_LEGACY_INTERN_SESSIONS=1``; QA treats any legacy
|
|
54
|
+
#: ``/sessions`` hit as a hard fail, so the default surface is sync-sessions
|
|
55
|
+
#: only (``intern_sync_*`` / ``intern_async_*``).
|
|
56
|
+
LEGACY_INTERN_SESSION_TOOL_NAMES = frozenset(
|
|
57
|
+
{
|
|
58
|
+
"research_append_research_intern_event",
|
|
59
|
+
"research_close_research_intern_session",
|
|
60
|
+
"research_create_research_intern_session",
|
|
61
|
+
"research_exchange_research_intern_turn",
|
|
62
|
+
"research_get_research_intern_session",
|
|
63
|
+
"research_list_research_intern_events",
|
|
64
|
+
"research_list_research_intern_sessions",
|
|
65
|
+
"research_publish_research_intern_session_trace",
|
|
66
|
+
"research_run_research_intern_turn",
|
|
67
|
+
"research_sync_research_intern_session",
|
|
68
|
+
"research_watch_research_intern_events",
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
|
|
43
72
|
|
|
44
73
|
def _request_payload(args: JSONDict, names: tuple[str, ...]) -> JSONDict:
|
|
45
74
|
return {name: args[name] for name in names if name in args}
|
|
@@ -725,7 +754,7 @@ def build_research_intern_tools(
|
|
|
725
754
|
sync_selector: JSONDict = {
|
|
726
755
|
"sync_session_id": {"type": "string", "minLength": 1},
|
|
727
756
|
}
|
|
728
|
-
|
|
757
|
+
tools = [
|
|
729
758
|
ToolDefinition(
|
|
730
759
|
name="intern_sync_create",
|
|
731
760
|
description="Create or replay one durable operator-present Sync session.",
|
|
@@ -1598,6 +1627,9 @@ def build_research_intern_tools(
|
|
|
1598
1627
|
required_scopes=READ_SCOPES,
|
|
1599
1628
|
),
|
|
1600
1629
|
]
|
|
1630
|
+
if not legacy_intern_sessions_enabled():
|
|
1631
|
+
tools = [tool for tool in tools if tool.name not in LEGACY_INTERN_SESSION_TOOL_NAMES]
|
|
1632
|
+
return tools
|
|
1601
1633
|
|
|
1602
1634
|
|
|
1603
|
-
__all__ = ["build_research_intern_tools"]
|
|
1635
|
+
__all__ = ["LEGACY_INTERN_SESSION_TOOL_NAMES", "build_research_intern_tools"]
|
|
@@ -45,6 +45,7 @@ class Client:
|
|
|
45
45
|
api_key: str | None = None,
|
|
46
46
|
base_url: str | None = None,
|
|
47
47
|
timeout_seconds: float = 30.0,
|
|
48
|
+
allow_legacy_intern_sessions: bool = False,
|
|
48
49
|
) -> None:
|
|
49
50
|
self._credential = resolve_api_credential(api_key)
|
|
50
51
|
self._transport = HttpTransport(
|
|
@@ -53,7 +54,10 @@ class Client:
|
|
|
53
54
|
timeout_seconds=timeout_seconds,
|
|
54
55
|
)
|
|
55
56
|
self.projects = ProjectsAPI(self._transport)
|
|
56
|
-
self.intern = ResearchInternAPI(
|
|
57
|
+
self.intern = ResearchInternAPI(
|
|
58
|
+
self._transport,
|
|
59
|
+
allow_legacy_intern_sessions=allow_legacy_intern_sessions,
|
|
60
|
+
)
|
|
57
61
|
self.swarms = SwarmsAPI(self._transport)
|
|
58
62
|
self.factories = FactoriesAPI(self._transport)
|
|
59
63
|
self.environments = EnvironmentsAPI(self._transport)
|
|
@@ -115,6 +119,7 @@ class AsyncClient:
|
|
|
115
119
|
api_key: str | None = None,
|
|
116
120
|
base_url: str | None = None,
|
|
117
121
|
timeout_seconds: float = 30.0,
|
|
122
|
+
allow_legacy_intern_sessions: bool = False,
|
|
118
123
|
) -> None:
|
|
119
124
|
self._credential = resolve_api_credential(api_key)
|
|
120
125
|
self._transport = AsyncHttpTransport(
|
|
@@ -123,7 +128,10 @@ class AsyncClient:
|
|
|
123
128
|
timeout_seconds=timeout_seconds,
|
|
124
129
|
)
|
|
125
130
|
self.projects = AsyncProjectsAPI(self._transport)
|
|
126
|
-
self.intern = AsyncResearchInternAPI(
|
|
131
|
+
self.intern = AsyncResearchInternAPI(
|
|
132
|
+
self._transport,
|
|
133
|
+
allow_legacy_intern_sessions=allow_legacy_intern_sessions,
|
|
134
|
+
)
|
|
127
135
|
self.swarms = AsyncSwarmsAPI(self._transport)
|
|
128
136
|
self.factories = AsyncFactoriesAPI(self._transport)
|
|
129
137
|
self.environments = AsyncEnvironmentsAPI(self._transport)
|
{synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/__init__.py
RENAMED
|
@@ -348,6 +348,15 @@ from synth_ai.sdk.research.contracts.research_intern import (
|
|
|
348
348
|
ResearchInternTurnRequest,
|
|
349
349
|
ResearchInternTurnResponse,
|
|
350
350
|
ResearchInternTurnStatus,
|
|
351
|
+
SyncKitAssociatedFile,
|
|
352
|
+
SyncKitAssociationReceipt,
|
|
353
|
+
SyncKitIngressKind,
|
|
354
|
+
SyncKitIngressObservation,
|
|
355
|
+
SyncKitIngressSource,
|
|
356
|
+
SyncKitReadiness,
|
|
357
|
+
SyncTemplateProvisionedResource,
|
|
358
|
+
SyncTemplateProvisioningReceipt,
|
|
359
|
+
SyncTracePublicationReceipt,
|
|
351
360
|
)
|
|
352
361
|
from synth_ai.sdk.research.contracts.runtime_stream import (
|
|
353
362
|
SwarmEvent,
|
|
@@ -921,6 +930,15 @@ __all__ = [
|
|
|
921
930
|
"SwarmTerminalOutcomeMissingError",
|
|
922
931
|
"SwarmEnvironment",
|
|
923
932
|
"SwarmUsage",
|
|
933
|
+
"SyncKitAssociatedFile",
|
|
934
|
+
"SyncKitAssociationReceipt",
|
|
935
|
+
"SyncKitIngressKind",
|
|
936
|
+
"SyncKitIngressObservation",
|
|
937
|
+
"SyncKitIngressSource",
|
|
938
|
+
"SyncKitReadiness",
|
|
939
|
+
"SyncTemplateProvisionedResource",
|
|
940
|
+
"SyncTemplateProvisioningReceipt",
|
|
941
|
+
"SyncTracePublicationReceipt",
|
|
924
942
|
"TaskId",
|
|
925
943
|
"TranscriptCursor",
|
|
926
944
|
"TranscriptCursorKind",
|
{synth_ai-0.18.2.dev603 → synth_ai-0.18.2.dev606}/synth_ai/sdk/research/contracts/research_intern.py
RENAMED
|
@@ -184,6 +184,129 @@ class InternSyncSessionCreateRequest(_StrictContract):
|
|
|
184
184
|
metadata: dict[str, Any] = Field(default_factory=dict)
|
|
185
185
|
|
|
186
186
|
|
|
187
|
+
class SyncTemplateProvisionedResource(_StrictContract):
|
|
188
|
+
"""One resource decision made while provisioning a task template."""
|
|
189
|
+
|
|
190
|
+
resource_kind: Literal[
|
|
191
|
+
"project",
|
|
192
|
+
"factory",
|
|
193
|
+
"factory_project_link",
|
|
194
|
+
"effort",
|
|
195
|
+
"intern_factory_membership",
|
|
196
|
+
"run",
|
|
197
|
+
]
|
|
198
|
+
status: Literal["created", "reused", "unsupported"]
|
|
199
|
+
resource_id: str | None = None
|
|
200
|
+
error_code: str | None = None
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
class SyncTemplateProvisioningReceipt(_StrictContract):
|
|
204
|
+
"""Durable record of what starting from a task template provisioned.
|
|
205
|
+
|
|
206
|
+
The backend mints this receipt inside the session-create transaction and
|
|
207
|
+
stamps it into the session projection; the SDK only ever observes it.
|
|
208
|
+
"""
|
|
209
|
+
|
|
210
|
+
schema_version: Literal["smr.intern-sync-template-provisioning.v1"]
|
|
211
|
+
task_template: str
|
|
212
|
+
binding: InternRuntimeBinding
|
|
213
|
+
resources: tuple[SyncTemplateProvisionedResource, ...]
|
|
214
|
+
provisioned_at: datetime
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
class SyncTracePublicationReceipt(_StrictContract):
|
|
218
|
+
"""Read-only receipt for the server-side terminal Trace V5 publication.
|
|
219
|
+
|
|
220
|
+
The backend publishes the durable Sync event chain as genuine Trace V5 as
|
|
221
|
+
an effect of the session reaching a terminal state. Clients never mint
|
|
222
|
+
this record; they observe it on the session projection after close.
|
|
223
|
+
"""
|
|
224
|
+
|
|
225
|
+
schema_version: Literal["smr.intern-sync-trace-publication.v1"]
|
|
226
|
+
status: Literal["published", "failed"]
|
|
227
|
+
sync_session_id: str
|
|
228
|
+
runtime_kind: Literal["sync"]
|
|
229
|
+
state_generation: int = Field(ge=1)
|
|
230
|
+
event_count: int | None = Field(default=None, ge=1)
|
|
231
|
+
trace_id: str | None = None
|
|
232
|
+
trace_digest: str | None = Field(default=None, pattern=r"^sha256:[0-9a-f]{64}$")
|
|
233
|
+
capture_id: str | None = None
|
|
234
|
+
bundle_id: str | None = None
|
|
235
|
+
manifest_digest: str | None = Field(default=None, pattern=r"^sha256:[0-9a-f]{64}$")
|
|
236
|
+
publication_id: str | None = None
|
|
237
|
+
error_code: str | None = None
|
|
238
|
+
attempted_at: datetime
|
|
239
|
+
published_at: datetime | None = None
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
SyncKitIngressKind = Literal[
|
|
243
|
+
"website_upload",
|
|
244
|
+
"sdk_upload",
|
|
245
|
+
"git_push",
|
|
246
|
+
"project_files",
|
|
247
|
+
]
|
|
248
|
+
|
|
249
|
+
SyncKitIngressObservation = Literal[
|
|
250
|
+
"stored_file_write",
|
|
251
|
+
"push_confirmation",
|
|
252
|
+
"upload_url_issuance",
|
|
253
|
+
]
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
class SyncKitAssociatedFile(_StrictContract):
|
|
257
|
+
"""One file observed in a kit ingress, with whatever identity was available."""
|
|
258
|
+
|
|
259
|
+
path: str
|
|
260
|
+
digest: str | None = Field(default=None, pattern=r"^sha256:[0-9a-f]{64}$")
|
|
261
|
+
size_bytes: int | None = Field(default=None, ge=0)
|
|
262
|
+
stored_file_id: str | None = None
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
class SyncKitIngressSource(_StrictContract):
|
|
266
|
+
"""Source identity of one kit ingress, per ingress kind."""
|
|
267
|
+
|
|
268
|
+
commit_sha: str | None = None
|
|
269
|
+
archive_key: str | None = None
|
|
270
|
+
workspace_archive_id: str | None = None
|
|
271
|
+
push_confirmation_receipt_id: str | None = None
|
|
272
|
+
upload_batch_id: str | None = None
|
|
273
|
+
dataset_ref: str | None = None
|
|
274
|
+
stored_file_ids: tuple[str, ...] = ()
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class SyncKitAssociationReceipt(_StrictContract):
|
|
278
|
+
"""Durable record that a kit ingress landed while this session was open.
|
|
279
|
+
|
|
280
|
+
The backend mints this receipt as a server-side effect of observing an
|
|
281
|
+
upload, push, or file write on a project bound to an open Sync session.
|
|
282
|
+
Clients never mint it; they observe it on the session projection.
|
|
283
|
+
"""
|
|
284
|
+
|
|
285
|
+
schema_version: Literal["smr.intern-sync-kit-association.v1"]
|
|
286
|
+
receipt_id: str
|
|
287
|
+
sync_session_id: str
|
|
288
|
+
project_id: str
|
|
289
|
+
ingress_kind: SyncKitIngressKind
|
|
290
|
+
observed_via: SyncKitIngressObservation
|
|
291
|
+
files: tuple[SyncKitAssociatedFile, ...] = ()
|
|
292
|
+
source: SyncKitIngressSource
|
|
293
|
+
open_session_count: int = Field(ge=1)
|
|
294
|
+
associated_at: datetime
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
class SyncKitReadiness(_StrictContract):
|
|
298
|
+
"""Read-only kit completeness projection for a template-bound session."""
|
|
299
|
+
|
|
300
|
+
schema_version: Literal["smr.intern-sync-kit-readiness.v1"]
|
|
301
|
+
status: Literal["ready", "incomplete"]
|
|
302
|
+
task_template: str
|
|
303
|
+
kit_contract: str
|
|
304
|
+
required_files: tuple[str, ...]
|
|
305
|
+
present_files: tuple[str, ...] = ()
|
|
306
|
+
missing_files: tuple[str, ...] = ()
|
|
307
|
+
checked_at: datetime
|
|
308
|
+
|
|
309
|
+
|
|
187
310
|
class InternSyncSession(_StrictContract):
|
|
188
311
|
schema_version: Literal["smr.intern-sync-session.v1"]
|
|
189
312
|
sync_session_id: str
|
|
@@ -200,6 +323,14 @@ class InternSyncSession(_StrictContract):
|
|
|
200
323
|
outcome: InternRuntimeOutcome | None = None
|
|
201
324
|
failure_code: str | None = None
|
|
202
325
|
temporal_workflow_id: str
|
|
326
|
+
# Server-minted projection stamps. Old backends omit them entirely; new
|
|
327
|
+
# backends stamp them once the corresponding effect lands. The SDK only
|
|
328
|
+
# observes these receipts — the backend remains the minting authority.
|
|
329
|
+
task_template: str | None = None
|
|
330
|
+
provisioning: SyncTemplateProvisioningReceipt | None = None
|
|
331
|
+
trace_publication: SyncTracePublicationReceipt | None = None
|
|
332
|
+
kit_associations: tuple[SyncKitAssociationReceipt, ...] = ()
|
|
333
|
+
kit_readiness: SyncKitReadiness | None = None
|
|
203
334
|
created_at: datetime
|
|
204
335
|
updated_at: datetime
|
|
205
336
|
closed_at: datetime | None = None
|
|
@@ -115,6 +115,7 @@ class Client:
|
|
|
115
115
|
api_key: str,
|
|
116
116
|
base_url: str,
|
|
117
117
|
timeout_seconds: float = 120.0,
|
|
118
|
+
allow_legacy_intern_sessions: bool = False,
|
|
118
119
|
) -> None:
|
|
119
120
|
self.api_key = api_key
|
|
120
121
|
self.base_url = base_url
|
|
@@ -123,6 +124,7 @@ class Client:
|
|
|
123
124
|
api_key=api_key,
|
|
124
125
|
base_url=base_url,
|
|
125
126
|
timeout_seconds=timeout_seconds,
|
|
127
|
+
allow_legacy_intern_sessions=allow_legacy_intern_sessions,
|
|
126
128
|
)
|
|
127
129
|
self._session: ResearchSession | None = None
|
|
128
130
|
self._advanced: ResearchAdvancedAPI | None = None
|
|
@@ -297,6 +297,15 @@ from synth_ai.sdk.research.contracts import (
|
|
|
297
297
|
SwarmTranscriptEvent,
|
|
298
298
|
SwarmTranscriptPage,
|
|
299
299
|
SwarmUsage,
|
|
300
|
+
SyncKitAssociatedFile,
|
|
301
|
+
SyncKitAssociationReceipt,
|
|
302
|
+
SyncKitIngressKind,
|
|
303
|
+
SyncKitIngressObservation,
|
|
304
|
+
SyncKitIngressSource,
|
|
305
|
+
SyncKitReadiness,
|
|
306
|
+
SyncTemplateProvisionedResource,
|
|
307
|
+
SyncTemplateProvisioningReceipt,
|
|
308
|
+
SyncTracePublicationReceipt,
|
|
300
309
|
TaskId,
|
|
301
310
|
TokenCounts,
|
|
302
311
|
TokenUsage,
|
|
@@ -413,6 +422,7 @@ from synth_ai.sdk.research.research_intern import (
|
|
|
413
422
|
AsyncResearchInternReactiveSession,
|
|
414
423
|
AsyncResearchInternSessionsAPI,
|
|
415
424
|
AsyncResearchInternSyncRuntimeAPI,
|
|
425
|
+
LegacyInternSessionsDisabledError,
|
|
416
426
|
ProjectComputerAPI,
|
|
417
427
|
ProjectDataBindingsAPI,
|
|
418
428
|
ResearchInternAcceptanceReceiptsAPI,
|
|
@@ -489,6 +499,7 @@ __all__ = [
|
|
|
489
499
|
"InternSyncSession",
|
|
490
500
|
"InternSyncSessionCreateRequest",
|
|
491
501
|
"InternSyncStatus",
|
|
502
|
+
"LegacyInternSessionsDisabledError",
|
|
492
503
|
"FactoryStorageAuthorityResponse",
|
|
493
504
|
"MAGI_CANONICAL_USER_BY_MODE",
|
|
494
505
|
"MagiActuationStatus",
|
|
@@ -754,6 +765,15 @@ __all__ = [
|
|
|
754
765
|
"SwarmTranscriptEvent",
|
|
755
766
|
"SwarmTranscriptPage",
|
|
756
767
|
"SwarmUsage",
|
|
768
|
+
"SyncKitAssociatedFile",
|
|
769
|
+
"SyncKitAssociationReceipt",
|
|
770
|
+
"SyncKitIngressKind",
|
|
771
|
+
"SyncKitIngressObservation",
|
|
772
|
+
"SyncKitIngressSource",
|
|
773
|
+
"SyncKitReadiness",
|
|
774
|
+
"SyncTemplateProvisionedResource",
|
|
775
|
+
"SyncTemplateProvisioningReceipt",
|
|
776
|
+
"SyncTracePublicationReceipt",
|
|
757
777
|
"TaskId",
|
|
758
778
|
"ToolProvider",
|
|
759
779
|
"TokenCounts",
|