synth-ai 0.18.2.dev607__tar.gz → 0.18.2.dev609__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.dev607/synth_ai.egg-info → synth_ai-0.18.2.dev609}/PKG-INFO +1 -1
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/pyproject.toml +1 -1
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/factories.py +8 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/advanced_factories.py +3 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/__init__.py +4 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/factory_operations.py +13 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/research_intern.py +46 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/public.py +4 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/research_intern.py +33 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/factories.py +3 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609/synth_ai.egg-info}/PKG-INFO +1 -1
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/LICENSE +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/MANIFEST.in +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/README.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/setup.cfg +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/README.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/__main__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/AGENTS.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/README.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/__main__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/main.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/research.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/research_environments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/research_image_releases.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/cli/research_projects.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/client.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/README.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/auth/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/auth/credentials.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/contracts/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/contracts/json_value.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/contracts/pagination.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/errors.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/http/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/http/async_transport.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/http/request.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/http/retry.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/http/streaming.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/http/transport.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/utils/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/utils/env.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/utils/log_filter.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/utils/paths.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/core/utils/urls.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/README.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/__main__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/objective_tools.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/registry.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/request_models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/server.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/approvals.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/artifacts.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/datasets.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/environments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/exports.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/factory_results.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/files.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/image_releases.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/integrations.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/logs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/outputs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/policy_schemas.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/progress.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/project_data.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/projects.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/prs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/readiness.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/repos.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/research_intern.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/resources.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/runs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/trained_models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/usage.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/visuals.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/py.typed +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/README.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/pagination.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/_internal/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/_internal/crypto.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/_internal/env.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/_internal/urls.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/account.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/advanced.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/advanced_swarms.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/artifacts.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/auth.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/client.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/_wire.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/activity.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/billing.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/common.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/economics.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/environments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/evidence.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/factories.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/failure.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/limit_evidence.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/project.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/project_data.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/projects.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/promotions.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_control.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_events.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_state.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/status.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/swarms.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/tag.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/traces.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/transcript.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/types.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/usage.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/visuals.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/wire_models_README.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/work_products.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/economics.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/efforts.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/environments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/errors.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/events.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/experiments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/facade.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/factories.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/factory_storage.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/image_releases.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/knowledge.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/operations.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/project_data.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/project_deliveries.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/project_workspaces.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/projects.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/readouts.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/secrets.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/README.md +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/_base.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/approvals.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/billing.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/client.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/config.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/cost.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/datasets.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/dev_environments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/environments.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/exports.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/files.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/github.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/image_releases.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/images.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/logs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/outputs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/progress.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/project.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/projects.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/prs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/readiness.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/repositories.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/runs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/secrets.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/setup.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/tag.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/trained_models.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/transport.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/usage.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/work_products.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/swarms.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/traces.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/transport/__init__.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/transport/http.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/transport/pagination.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/version.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/visuals.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/wiki.py +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai.egg-info/SOURCES.txt +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai.egg-info/requires.txt +0 -0
- {synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai.egg-info/top_level.txt +0 -0
|
@@ -277,6 +277,7 @@ def build_factory_tools(server: Any) -> list[ToolDefinition]:
|
|
|
277
277
|
return client.factories.wake_due(
|
|
278
278
|
str(args["factory_id"]),
|
|
279
279
|
launch_request=args.get("launch_request"),
|
|
280
|
+
effort_ids=tuple(str(value) for value in args.get("effort_ids") or []),
|
|
280
281
|
limit=int(args.get("limit") or 10),
|
|
281
282
|
allow_overlap=bool(args.get("allow_overlap") or False),
|
|
282
283
|
dry_run=True,
|
|
@@ -765,6 +766,13 @@ def build_factory_tools(server: Any) -> list[ToolDefinition]:
|
|
|
765
766
|
"type": "object",
|
|
766
767
|
"description": "Optional default launch request.",
|
|
767
768
|
},
|
|
769
|
+
"effort_ids": {
|
|
770
|
+
"type": "array",
|
|
771
|
+
"items": {"type": "string"},
|
|
772
|
+
"maxItems": 100,
|
|
773
|
+
"uniqueItems": True,
|
|
774
|
+
"description": "Optional exact Effort scope for the preview.",
|
|
775
|
+
},
|
|
768
776
|
"limit": {
|
|
769
777
|
"type": "integer",
|
|
770
778
|
"description": "Maximum due Efforts to evaluate.",
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/advanced_factories.py
RENAMED
|
@@ -287,6 +287,7 @@ class ResearchFactoriesAPI:
|
|
|
287
287
|
factory_id: str,
|
|
288
288
|
*,
|
|
289
289
|
launch_request: Mapping[str, Any] | dict[str, Any] | None = None,
|
|
290
|
+
effort_ids: tuple[str, ...] = (),
|
|
290
291
|
limit: int = 10,
|
|
291
292
|
allow_overlap: bool = False,
|
|
292
293
|
continue_on_error: bool = True,
|
|
@@ -295,6 +296,7 @@ class ResearchFactoriesAPI:
|
|
|
295
296
|
return self._session.factories.wake_due(
|
|
296
297
|
factory_id,
|
|
297
298
|
launch_request=launch_request,
|
|
299
|
+
effort_ids=effort_ids,
|
|
298
300
|
limit=limit,
|
|
299
301
|
allow_overlap=allow_overlap,
|
|
300
302
|
dry_run=True,
|
|
@@ -322,6 +324,7 @@ class ResearchFactoriesAPI:
|
|
|
322
324
|
result = self._session.factories.wake_due(
|
|
323
325
|
factory_id,
|
|
324
326
|
launch_request=contract.launch_request,
|
|
327
|
+
effort_ids=contract.effort_ids,
|
|
325
328
|
limit=contract.limit,
|
|
326
329
|
allow_overlap=contract.allow_overlap,
|
|
327
330
|
dry_run=False,
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/__init__.py
RENAMED
|
@@ -296,6 +296,8 @@ from synth_ai.sdk.research.contracts.research_intern import (
|
|
|
296
296
|
InternSyncCommandKind,
|
|
297
297
|
InternSyncCommandReceipt,
|
|
298
298
|
InternSyncCommandRequest,
|
|
299
|
+
InternSyncDeployPacket,
|
|
300
|
+
InternSyncDeployPacketEndpoint,
|
|
299
301
|
InternSyncEvent,
|
|
300
302
|
InternSyncEventPage,
|
|
301
303
|
InternSyncEventStreamEnvelope,
|
|
@@ -842,6 +844,8 @@ __all__ = [
|
|
|
842
844
|
"InternSyncCommandKind",
|
|
843
845
|
"InternSyncCommandReceipt",
|
|
844
846
|
"InternSyncCommandRequest",
|
|
847
|
+
"InternSyncDeployPacket",
|
|
848
|
+
"InternSyncDeployPacketEndpoint",
|
|
845
849
|
"InternSyncEvent",
|
|
846
850
|
"InternSyncEventPage",
|
|
847
851
|
"InternSyncEventStreamEnvelope",
|
|
@@ -2150,6 +2150,7 @@ class FactoryStatus:
|
|
|
2150
2150
|
@dataclass(frozen=True)
|
|
2151
2151
|
class FactoryWakeDueRequest:
|
|
2152
2152
|
launch_request: dict[str, Any] | None = None
|
|
2153
|
+
effort_ids: tuple[str, ...] = ()
|
|
2153
2154
|
limit: int = 10
|
|
2154
2155
|
allow_overlap: bool = False
|
|
2155
2156
|
dry_run: bool = False
|
|
@@ -2163,6 +2164,7 @@ class FactoryWakeDueRequest:
|
|
|
2163
2164
|
mapping = _require_mapping(payload, label="factory wake request contract")
|
|
2164
2165
|
allowed_keys = {
|
|
2165
2166
|
"launch_request",
|
|
2167
|
+
"effort_ids",
|
|
2166
2168
|
"limit",
|
|
2167
2169
|
"allow_overlap",
|
|
2168
2170
|
"continue_on_error",
|
|
@@ -2194,12 +2196,21 @@ class FactoryWakeDueRequest:
|
|
|
2194
2196
|
if not 1 <= limit <= 100:
|
|
2195
2197
|
raise ValueError("factory wake limit must be between 1 and 100")
|
|
2196
2198
|
continue_on_error = _optional_bool(mapping, "continue_on_error")
|
|
2199
|
+
raw_effort_ids = mapping.get("effort_ids") or ()
|
|
2200
|
+
if not isinstance(raw_effort_ids, (list, tuple)):
|
|
2201
|
+
raise ValueError("factory wake effort_ids must be an array")
|
|
2202
|
+
effort_ids = tuple(str(value).strip() for value in raw_effort_ids)
|
|
2203
|
+
if any(not value for value in effort_ids) or len(set(effort_ids)) != len(effort_ids):
|
|
2204
|
+
raise ValueError("factory wake effort_ids must be unique non-empty strings")
|
|
2205
|
+
if len(effort_ids) > 100:
|
|
2206
|
+
raise ValueError("factory wake effort_ids must contain at most 100 entries")
|
|
2197
2207
|
return cls(
|
|
2198
2208
|
launch_request=(
|
|
2199
2209
|
_optional_object_dict(launch_request, label="factory wake launch_request")
|
|
2200
2210
|
if launch_request is not None
|
|
2201
2211
|
else None
|
|
2202
2212
|
),
|
|
2213
|
+
effort_ids=effort_ids,
|
|
2203
2214
|
limit=limit,
|
|
2204
2215
|
allow_overlap=bool(_optional_bool(mapping, "allow_overlap")),
|
|
2205
2216
|
dry_run=bool(_optional_bool(mapping, "dry_run")),
|
|
@@ -2214,6 +2225,7 @@ class FactoryWakeDueRequest:
|
|
|
2214
2225
|
"launch_request": (
|
|
2215
2226
|
dict(self.launch_request) if self.launch_request is not None else None
|
|
2216
2227
|
),
|
|
2228
|
+
"effort_ids": list(self.effort_ids),
|
|
2217
2229
|
"limit": self.limit,
|
|
2218
2230
|
"allow_overlap": self.allow_overlap,
|
|
2219
2231
|
"continue_on_error": self.continue_on_error,
|
|
@@ -2222,6 +2234,7 @@ class FactoryWakeDueRequest:
|
|
|
2222
2234
|
|
|
2223
2235
|
def to_wire(self) -> dict[str, Any]:
|
|
2224
2236
|
payload: dict[str, Any] = {
|
|
2237
|
+
"effort_ids": list(self.effort_ids),
|
|
2225
2238
|
"limit": self.limit,
|
|
2226
2239
|
"allow_overlap": self.allow_overlap,
|
|
2227
2240
|
"dry_run": self.dry_run,
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/research_intern.py
RENAMED
|
@@ -164,7 +164,12 @@ class InternSyncStatus(StrEnum):
|
|
|
164
164
|
|
|
165
165
|
class InternRuntimeOutcome(StrEnum):
|
|
166
166
|
COMPLETED = "completed"
|
|
167
|
+
PARTIAL = "partial"
|
|
168
|
+
BLOCKED = "blocked"
|
|
167
169
|
CANCELLED = "cancelled"
|
|
170
|
+
CANCELED = "canceled"
|
|
171
|
+
STOPPED = "stopped"
|
|
172
|
+
ARCHIVED = "archived"
|
|
168
173
|
FAILED = "failed"
|
|
169
174
|
|
|
170
175
|
|
|
@@ -182,6 +187,9 @@ class InternSyncSessionCreateRequest(_StrictContract):
|
|
|
182
187
|
idempotency_key: str = Field(min_length=1, max_length=512)
|
|
183
188
|
binding: InternRuntimeBinding = Field(default_factory=InternRuntimeBinding)
|
|
184
189
|
metadata: dict[str, Any] = Field(default_factory=dict)
|
|
190
|
+
execution_mode: Literal["fast", "standard", "deep"] = "standard"
|
|
191
|
+
task_template: str | None = Field(default=None, min_length=1, max_length=128)
|
|
192
|
+
objective_bounds: dict[str, Any] | None = None
|
|
185
193
|
|
|
186
194
|
|
|
187
195
|
class SyncTemplateProvisionedResource(_StrictContract):
|
|
@@ -317,12 +325,16 @@ class InternSyncSession(_StrictContract):
|
|
|
317
325
|
state_generation: int = Field(ge=0)
|
|
318
326
|
last_event_sequence: int = Field(ge=0)
|
|
319
327
|
binding: InternRuntimeBinding
|
|
328
|
+
metadata: dict[str, Any] = Field(default_factory=dict)
|
|
329
|
+
objective_bounds: dict[str, Any] | None = None
|
|
320
330
|
pending_turn_id: str | None = None
|
|
321
331
|
pending_action_id: str | None = None
|
|
322
332
|
pending_interaction_id: str | None = None
|
|
323
333
|
outcome: InternRuntimeOutcome | None = None
|
|
324
334
|
failure_code: str | None = None
|
|
325
335
|
temporal_workflow_id: str
|
|
336
|
+
execution_mode: Literal["fast", "standard", "deep"] = "standard"
|
|
337
|
+
execution_profile_id: Literal["intern_sync"] = "intern_sync"
|
|
326
338
|
# Server-minted projection stamps. Old backends omit them entirely; new
|
|
327
339
|
# backends stamp them once the corresponding effect lands. The SDK only
|
|
328
340
|
# observes these receipts — the backend remains the minting authority.
|
|
@@ -331,6 +343,10 @@ class InternSyncSession(_StrictContract):
|
|
|
331
343
|
trace_publication: SyncTracePublicationReceipt | None = None
|
|
332
344
|
kit_associations: tuple[SyncKitAssociationReceipt, ...] = ()
|
|
333
345
|
kit_readiness: SyncKitReadiness | None = None
|
|
346
|
+
visuals: tuple[dict[str, Any], ...] = ()
|
|
347
|
+
kit_state_receipts: tuple[dict[str, Any], ...] = ()
|
|
348
|
+
experiments: tuple[dict[str, Any], ...] = ()
|
|
349
|
+
harness_bundle_available: bool = False
|
|
334
350
|
created_at: datetime
|
|
335
351
|
updated_at: datetime
|
|
336
352
|
closed_at: datetime | None = None
|
|
@@ -342,6 +358,10 @@ class InternSyncCommandRequest(_StrictContract):
|
|
|
342
358
|
expected_generation: int = Field(ge=0)
|
|
343
359
|
command_kind: InternSyncCommandKind
|
|
344
360
|
payload: dict[str, Any] = Field(default_factory=dict)
|
|
361
|
+
execution_mode: Literal["fast", "standard", "deep"] = "standard"
|
|
362
|
+
visual_selection: dict[str, Any] | None = None
|
|
363
|
+
mode: Literal["sync", "async"] = "sync"
|
|
364
|
+
evidence_refs: tuple[str, ...] = Field(default=(), max_length=128)
|
|
345
365
|
|
|
346
366
|
@model_validator(mode="after")
|
|
347
367
|
def validate_command_payload(self) -> InternSyncCommandRequest:
|
|
@@ -370,6 +390,32 @@ class InternSyncCommandRequest(_StrictContract):
|
|
|
370
390
|
return self
|
|
371
391
|
|
|
372
392
|
|
|
393
|
+
class InternSyncDeployPacketEndpoint(_StrictContract):
|
|
394
|
+
purpose: Literal[
|
|
395
|
+
"upload_files",
|
|
396
|
+
"upload_workspace",
|
|
397
|
+
"confirm_push",
|
|
398
|
+
"assign_container",
|
|
399
|
+
"container_health",
|
|
400
|
+
]
|
|
401
|
+
method: Literal["GET", "POST"]
|
|
402
|
+
path: str
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
class InternSyncDeployPacket(_StrictContract):
|
|
406
|
+
schema_version: Literal["smr.intern-sync-deploy-packet.v1"]
|
|
407
|
+
sync_session_id: str
|
|
408
|
+
project_id: str
|
|
409
|
+
task_template: str | None = None
|
|
410
|
+
auth_scheme: Literal["bearer"]
|
|
411
|
+
auth_env_var: Literal["SYNTH_API_KEY"]
|
|
412
|
+
required_paths: tuple[str, ...] = ()
|
|
413
|
+
endpoints: tuple[InternSyncDeployPacketEndpoint, ...]
|
|
414
|
+
done_signal: Literal["workspace_confirm_push"]
|
|
415
|
+
image_kind: Literal["craftax_eval"]
|
|
416
|
+
instructions: str
|
|
417
|
+
|
|
418
|
+
|
|
373
419
|
class InternSyncCommandReceipt(_StrictContract):
|
|
374
420
|
schema_version: Literal["smr.intern-runtime-command-receipt.v1"]
|
|
375
421
|
command_id: str
|
|
@@ -166,6 +166,8 @@ from synth_ai.sdk.research.contracts import (
|
|
|
166
166
|
InternSyncCommandKind,
|
|
167
167
|
InternSyncCommandReceipt,
|
|
168
168
|
InternSyncCommandRequest,
|
|
169
|
+
InternSyncDeployPacket,
|
|
170
|
+
InternSyncDeployPacketEndpoint,
|
|
169
171
|
InternSyncEvent,
|
|
170
172
|
InternSyncEventPage,
|
|
171
173
|
InternSyncEventStreamEnvelope,
|
|
@@ -493,6 +495,8 @@ __all__ = [
|
|
|
493
495
|
"InternSyncCommandKind",
|
|
494
496
|
"InternSyncCommandReceipt",
|
|
495
497
|
"InternSyncCommandRequest",
|
|
498
|
+
"InternSyncDeployPacket",
|
|
499
|
+
"InternSyncDeployPacketEndpoint",
|
|
496
500
|
"InternSyncEvent",
|
|
497
501
|
"InternSyncEventPage",
|
|
498
502
|
"InternSyncEventStreamEnvelope",
|
|
@@ -60,6 +60,7 @@ from synth_ai.sdk.research.contracts.research_intern import (
|
|
|
60
60
|
InternSyncCommandKind,
|
|
61
61
|
InternSyncCommandReceipt,
|
|
62
62
|
InternSyncCommandRequest,
|
|
63
|
+
InternSyncDeployPacket,
|
|
63
64
|
InternSyncEvent,
|
|
64
65
|
InternSyncEventPage,
|
|
65
66
|
InternSyncEventStreamEnvelope,
|
|
@@ -2134,6 +2135,19 @@ class ResearchInternSyncRuntimeAPI:
|
|
|
2134
2135
|
raise ValueError("Sync Intern session identity drifted")
|
|
2135
2136
|
return session
|
|
2136
2137
|
|
|
2138
|
+
def deploy_packet(self, sync_session_id: str) -> InternSyncDeployPacket:
|
|
2139
|
+
packet = InternSyncDeployPacket.from_wire(
|
|
2140
|
+
self._transport.execute(
|
|
2141
|
+
_request(
|
|
2142
|
+
"get_intern_sync_deploy_packet",
|
|
2143
|
+
f"{self._PATH}/{sync_session_id}/deploy-packet",
|
|
2144
|
+
)
|
|
2145
|
+
)
|
|
2146
|
+
)
|
|
2147
|
+
if packet.sync_session_id != sync_session_id:
|
|
2148
|
+
raise ValueError("Sync Intern deploy packet identity drifted")
|
|
2149
|
+
return packet
|
|
2150
|
+
|
|
2137
2151
|
def command(
|
|
2138
2152
|
self,
|
|
2139
2153
|
sync_session_id: str,
|
|
@@ -2562,6 +2576,25 @@ class ResearchInternAsyncRuntimeAPI:
|
|
|
2562
2576
|
after_sequence=after_sequence,
|
|
2563
2577
|
)
|
|
2564
2578
|
|
|
2579
|
+
def mcp_actions(self, *, limit: int = 100) -> tuple[JsonObject, ...]:
|
|
2580
|
+
"""Read the shared runtime MCP-action ledger for this Async Intern."""
|
|
2581
|
+
|
|
2582
|
+
runtime_id = self.get().async_runtime_id
|
|
2583
|
+
response = self._transport.execute(
|
|
2584
|
+
_request(
|
|
2585
|
+
"list_intern_async_runtime_mcp_actions",
|
|
2586
|
+
f"/smr/research-intern/runtimes/async/{runtime_id}/mcp-actions",
|
|
2587
|
+
query={"limit": _bounded_limit(limit)},
|
|
2588
|
+
)
|
|
2589
|
+
)
|
|
2590
|
+
items = array_value(
|
|
2591
|
+
cast(JsonValue, response),
|
|
2592
|
+
operation_id="list_intern_async_runtime_mcp_actions",
|
|
2593
|
+
)
|
|
2594
|
+
if any(not isinstance(item, dict) for item in items):
|
|
2595
|
+
raise ValueError("Async Intern MCP-action ledger must contain objects")
|
|
2596
|
+
return tuple(cast(JsonObject, item) for item in items)
|
|
2597
|
+
|
|
2565
2598
|
def stream_events(
|
|
2566
2599
|
self,
|
|
2567
2600
|
*,
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/session/factories.py
RENAMED
|
@@ -219,6 +219,7 @@ def _wake_due_preview_kwargs(plan: Mapping[str, Any]) -> dict[str, Any]:
|
|
|
219
219
|
field="wake_due.launch_request",
|
|
220
220
|
)
|
|
221
221
|
or None,
|
|
222
|
+
"effort_ids": tuple(str(value) for value in wake_due.get("effort_ids") or []),
|
|
222
223
|
"limit": int(wake_due.get("limit") or 10),
|
|
223
224
|
"allow_overlap": bool(wake_due.get("allow_overlap") or False),
|
|
224
225
|
"continue_on_error": bool(wake_due.get("continue_on_error", True)),
|
|
@@ -1170,6 +1171,7 @@ class FactoriesAPI(_ClientNamespace):
|
|
|
1170
1171
|
factory_id: str,
|
|
1171
1172
|
*,
|
|
1172
1173
|
launch_request: Mapping[str, Any] | dict[str, Any] | None = None,
|
|
1174
|
+
effort_ids: tuple[str, ...] = (),
|
|
1173
1175
|
limit: int = 10,
|
|
1174
1176
|
allow_overlap: bool = False,
|
|
1175
1177
|
dry_run: bool = False,
|
|
@@ -1190,6 +1192,7 @@ class FactoriesAPI(_ClientNamespace):
|
|
|
1190
1192
|
factory_id,
|
|
1191
1193
|
FactoryWakeDueRequest(
|
|
1192
1194
|
launch_request=dict(launch_request) if launch_request else None,
|
|
1195
|
+
effort_ids=effort_ids,
|
|
1193
1196
|
limit=limit,
|
|
1194
1197
|
allow_overlap=allow_overlap,
|
|
1195
1198
|
dry_run=dry_run,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/environments.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/factory_results.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/image_releases.py
RENAMED
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/policy_schemas.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/project_data.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/research_intern.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/trained_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/mcp/research/tools/workspace_inputs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/_internal/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/_activity_wire.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/activity.py
RENAMED
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/activity_items.py
RENAMED
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/actor_images.py
RENAMED
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/billing.py
RENAMED
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/canonical_usage.py
RENAMED
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/checkpoints.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/deliveries.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/economics.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/environments.py
RENAMED
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/evidence.py
RENAMED
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/factories.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.18.2.dev607 → synth_ai-0.18.2.dev609}/synth_ai/sdk/research/contracts/factory_lenses.py
RENAMED
|
File without changes
|
|
File without changes
|