synth-ai 0.18.2.dev610__tar.gz → 0.18.2.dev612__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.dev610/synth_ai.egg-info → synth_ai-0.18.2.dev612}/PKG-INFO +1 -1
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/pyproject.toml +1 -1
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/research_intern.py +126 -6
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/workspace_inputs.py +1 -2
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/__init__.py +30 -16
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/research_intern.py +164 -99
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/operations.py +37 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/public.py +34 -16
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/research_intern.py +249 -4
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612/synth_ai.egg-info}/PKG-INFO +1 -1
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/LICENSE +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/MANIFEST.in +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/README.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/setup.cfg +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/README.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/__main__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/AGENTS.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/README.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/__main__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/main.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/research.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/research_environments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/research_image_releases.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/cli/research_projects.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/client.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/README.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/auth/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/auth/credentials.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/contracts/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/contracts/json_value.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/contracts/pagination.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/errors.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/http/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/http/async_transport.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/http/request.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/http/retry.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/http/streaming.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/http/transport.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/utils/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/utils/env.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/utils/log_filter.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/utils/paths.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/core/utils/urls.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/README.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/__main__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/objective_tools.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/registry.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/request_models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/server.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/approvals.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/artifacts.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/datasets.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/environments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/exports.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/factories.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/factory_results.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/files.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/image_releases.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/integrations.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/logs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/outputs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/policy_schemas.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/progress.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/project_data.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/projects.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/prs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/readiness.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/repos.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/resources.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/runs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/trained_models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/usage.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/visuals.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/py.typed +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/README.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/pagination.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/_internal/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/_internal/crypto.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/_internal/env.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/_internal/urls.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/account.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/advanced.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/advanced_factories.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/advanced_swarms.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/artifacts.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/auth.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/client.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/_wire.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/activity.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/billing.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/common.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/economics.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/environments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/evidence.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/factories.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/failure.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/limit_evidence.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/project.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/project_data.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/projects.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/promotions.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_control.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_events.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_state.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/status.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/swarms.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/tag.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/traces.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/transcript.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/types.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/usage.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/visuals.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/wire_models_README.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/work_products.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/economics.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/efforts.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/environments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/errors.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/events.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/experiments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/facade.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/factories.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/factory_storage.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/image_releases.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/knowledge.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/project_data.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/project_deliveries.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/project_workspaces.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/projects.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/readouts.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/secrets.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/README.md +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/_base.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/approvals.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/billing.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/client.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/config.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/cost.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/datasets.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/dev_environments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/environments.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/exports.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/factories.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/files.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/github.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/image_releases.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/images.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/logs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/outputs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/progress.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/project.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/projects.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/prs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/readiness.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/repositories.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/runs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/secrets.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/setup.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/tag.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/trained_models.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/transport.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/usage.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/work_products.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/swarms.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/traces.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/transport/__init__.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/transport/http.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/transport/pagination.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/version.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/visuals.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/wiki.py +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai.egg-info/SOURCES.txt +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai.egg-info/requires.txt +0 -0
- {synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai.egg-info/top_level.txt +0 -0
{synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/research_intern.py
RENAMED
|
@@ -25,6 +25,7 @@ from synth_ai.sdk.research.contracts.research_intern import (
|
|
|
25
25
|
InternAsyncEnsureRequest,
|
|
26
26
|
InternAsyncInstructionKind,
|
|
27
27
|
InternAsyncInstructionRequest,
|
|
28
|
+
InternCrossMetaThreadMessageCreateRequest,
|
|
28
29
|
InternRuntimeOutcome,
|
|
29
30
|
InternSyncCommandKind,
|
|
30
31
|
InternSyncCommandRequest,
|
|
@@ -140,7 +141,52 @@ def build_research_intern_tools(
|
|
|
140
141
|
|
|
141
142
|
def intern_sync_list(args: JSONDict) -> list[JSONDict]:
|
|
142
143
|
with client_from_args(args) as client:
|
|
143
|
-
return _wire_list(client.intern.sync_.
|
|
144
|
+
return _wire_list(client.intern.sync_.branches())
|
|
145
|
+
|
|
146
|
+
def intern_sync_branches(args: JSONDict) -> list[JSONDict]:
|
|
147
|
+
with client_from_args(args) as client:
|
|
148
|
+
return _wire_list(client.intern.sync_.branches())
|
|
149
|
+
|
|
150
|
+
def intern_meta_threads(args: JSONDict) -> list[JSONDict]:
|
|
151
|
+
with client_from_args(args) as client:
|
|
152
|
+
return _wire_list(client.intern.meta_threads.list())
|
|
153
|
+
|
|
154
|
+
def intern_meta_segments(args: JSONDict) -> list[JSONDict]:
|
|
155
|
+
with client_from_args(args) as client:
|
|
156
|
+
return _wire_list(
|
|
157
|
+
client.intern.meta_threads.segments(require_string(args, "meta_thread_id"))
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
def intern_meta_messages(args: JSONDict) -> list[JSONDict]:
|
|
161
|
+
with client_from_args(args) as client:
|
|
162
|
+
return _wire_list(
|
|
163
|
+
client.intern.meta_threads.messages(
|
|
164
|
+
require_string(args, "meta_thread_id"),
|
|
165
|
+
limit=optional_int(args, "limit") or 200,
|
|
166
|
+
)
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
def intern_meta_send(args: JSONDict) -> JSONDict:
|
|
170
|
+
request = InternCrossMetaThreadMessageCreateRequest.model_validate(
|
|
171
|
+
_request_payload(
|
|
172
|
+
args,
|
|
173
|
+
(
|
|
174
|
+
"message_id",
|
|
175
|
+
"source_meta_thread_id",
|
|
176
|
+
"destination_meta_thread_id",
|
|
177
|
+
"kind",
|
|
178
|
+
"idempotency_key",
|
|
179
|
+
"payload",
|
|
180
|
+
"linked_message_id",
|
|
181
|
+
"sync_session_id",
|
|
182
|
+
"segment_id",
|
|
183
|
+
"resolution",
|
|
184
|
+
"summary",
|
|
185
|
+
),
|
|
186
|
+
)
|
|
187
|
+
)
|
|
188
|
+
with client_from_args(args) as client:
|
|
189
|
+
return client.intern.meta_threads.send(request).to_wire()
|
|
144
190
|
|
|
145
191
|
def intern_sync_get(args: JSONDict) -> JSONDict:
|
|
146
192
|
with client_from_args(args) as client:
|
|
@@ -755,6 +801,76 @@ def build_research_intern_tools(
|
|
|
755
801
|
"sync_session_id": {"type": "string", "minLength": 1},
|
|
756
802
|
}
|
|
757
803
|
tools = [
|
|
804
|
+
ToolDefinition(
|
|
805
|
+
name="intern_meta_threads",
|
|
806
|
+
description="List the Intern's one Sync and one Async meta-thread.",
|
|
807
|
+
input_schema=tool_schema({}, required=[]),
|
|
808
|
+
handler=intern_meta_threads,
|
|
809
|
+
required_scopes=READ_SCOPES,
|
|
810
|
+
),
|
|
811
|
+
ToolDefinition(
|
|
812
|
+
name="intern_meta_segments",
|
|
813
|
+
description="List head, live, and sealed segments for one meta-thread.",
|
|
814
|
+
input_schema=tool_schema(
|
|
815
|
+
{"meta_thread_id": {"type": "string", "minLength": 1}},
|
|
816
|
+
required=["meta_thread_id"],
|
|
817
|
+
),
|
|
818
|
+
handler=intern_meta_segments,
|
|
819
|
+
required_scopes=READ_SCOPES,
|
|
820
|
+
),
|
|
821
|
+
ToolDefinition(
|
|
822
|
+
name="intern_meta_messages",
|
|
823
|
+
description="List durable cross-lane messages visible to one meta-thread.",
|
|
824
|
+
input_schema=tool_schema(
|
|
825
|
+
{
|
|
826
|
+
"meta_thread_id": {"type": "string", "minLength": 1},
|
|
827
|
+
"limit": {"type": "integer", "minimum": 1, "maximum": 500},
|
|
828
|
+
},
|
|
829
|
+
required=["meta_thread_id"],
|
|
830
|
+
),
|
|
831
|
+
handler=intern_meta_messages,
|
|
832
|
+
required_scopes=READ_SCOPES,
|
|
833
|
+
),
|
|
834
|
+
ToolDefinition(
|
|
835
|
+
name="intern_meta_send",
|
|
836
|
+
description="Send one exact durable Sync-to-Async protocol object.",
|
|
837
|
+
input_schema=tool_schema(
|
|
838
|
+
{
|
|
839
|
+
"message_id": {"type": "string", "minLength": 1},
|
|
840
|
+
"source_meta_thread_id": {"type": "string", "minLength": 1},
|
|
841
|
+
"destination_meta_thread_id": {"type": "string", "minLength": 1},
|
|
842
|
+
"kind": {
|
|
843
|
+
"type": "string",
|
|
844
|
+
"enum": [
|
|
845
|
+
"request_decision",
|
|
846
|
+
"open_branch_ack",
|
|
847
|
+
"decision_resolved",
|
|
848
|
+
"steer",
|
|
849
|
+
"note",
|
|
850
|
+
],
|
|
851
|
+
},
|
|
852
|
+
"idempotency_key": {"type": "string", "minLength": 1},
|
|
853
|
+
"payload": {"type": "object"},
|
|
854
|
+
"linked_message_id": {"type": "string"},
|
|
855
|
+
"sync_session_id": {"type": "string"},
|
|
856
|
+
"segment_id": {"type": "string"},
|
|
857
|
+
"resolution": {
|
|
858
|
+
"type": "string",
|
|
859
|
+
"enum": ["completed", "denied", "superseded"],
|
|
860
|
+
},
|
|
861
|
+
"summary": {"type": "string", "maxLength": 4000},
|
|
862
|
+
},
|
|
863
|
+
required=[
|
|
864
|
+
"message_id",
|
|
865
|
+
"source_meta_thread_id",
|
|
866
|
+
"destination_meta_thread_id",
|
|
867
|
+
"kind",
|
|
868
|
+
"idempotency_key",
|
|
869
|
+
],
|
|
870
|
+
),
|
|
871
|
+
handler=intern_meta_send,
|
|
872
|
+
required_scopes=WRITE_SCOPES,
|
|
873
|
+
),
|
|
758
874
|
ToolDefinition(
|
|
759
875
|
name="intern_sync_create",
|
|
760
876
|
description="Create or replay one durable operator-present Sync session.",
|
|
@@ -774,13 +890,17 @@ def build_research_intern_tools(
|
|
|
774
890
|
handler=intern_sync_create,
|
|
775
891
|
required_scopes=WRITE_SCOPES,
|
|
776
892
|
),
|
|
893
|
+
ToolDefinition(
|
|
894
|
+
name="intern_sync_branches",
|
|
895
|
+
description="List the Sync head plus every live or sealed branch.",
|
|
896
|
+
input_schema=tool_schema({}, required=[]),
|
|
897
|
+
handler=intern_sync_branches,
|
|
898
|
+
required_scopes=READ_SCOPES,
|
|
899
|
+
),
|
|
777
900
|
ToolDefinition(
|
|
778
901
|
name="intern_sync_list",
|
|
779
|
-
description="
|
|
780
|
-
input_schema=tool_schema(
|
|
781
|
-
{"limit": {"type": "integer", "minimum": 1, "maximum": 500}},
|
|
782
|
-
required=[],
|
|
783
|
-
),
|
|
902
|
+
description="Compatibility alias of intern_sync_branches.",
|
|
903
|
+
input_schema=tool_schema({}, required=[]),
|
|
784
904
|
handler=intern_sync_list,
|
|
785
905
|
required_scopes=READ_SCOPES,
|
|
786
906
|
),
|
{synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/mcp/research/tools/workspace_inputs.py
RENAMED
|
@@ -212,8 +212,7 @@ def build_workspace_input_tools(
|
|
|
212
212
|
"Confirm an already-pushed workspace commit through project "
|
|
213
213
|
"authority and return the typed WorkspacePushConfirmationReceipt "
|
|
214
214
|
"-- the done signal for coding agents driving workspace ingress "
|
|
215
|
-
"over MCP.
|
|
216
|
-
"backend also auto-records a kit-association receipt server-side."
|
|
215
|
+
"over MCP."
|
|
217
216
|
),
|
|
218
217
|
input_schema=tool_schema(
|
|
219
218
|
{
|
{synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/__init__.py
RENAMED
|
@@ -275,6 +275,7 @@ from synth_ai.sdk.research.contracts.research_intern import (
|
|
|
275
275
|
DataBindingResponse,
|
|
276
276
|
DatasetRevisionCreateRequest,
|
|
277
277
|
DatasetRevisionResponse,
|
|
278
|
+
InternAgentConfig,
|
|
278
279
|
InternAsyncBlocker,
|
|
279
280
|
InternAsyncCheckpoint,
|
|
280
281
|
InternAsyncCommandKind,
|
|
@@ -291,6 +292,17 @@ from synth_ai.sdk.research.contracts.research_intern import (
|
|
|
291
292
|
InternAsyncRuntime,
|
|
292
293
|
InternAsyncRuntimeBudget,
|
|
293
294
|
InternAsyncStatus,
|
|
295
|
+
InternCrossMetaThreadMessage,
|
|
296
|
+
InternCrossMetaThreadMessageCreateRequest,
|
|
297
|
+
InternCrossMetaThreadMessageKind,
|
|
298
|
+
InternCrossMetaThreadMessageResolution,
|
|
299
|
+
InternMetaHandoff,
|
|
300
|
+
InternMetaHandoffStatus,
|
|
301
|
+
InternMetaThread,
|
|
302
|
+
InternMetaThreadKind,
|
|
303
|
+
InternMetaThreadLifecycle,
|
|
304
|
+
InternMetaThreadSegment,
|
|
305
|
+
InternMetaThreadSegmentStatus,
|
|
294
306
|
InternRuntimeBinding,
|
|
295
307
|
InternRuntimeOutcome,
|
|
296
308
|
InternSyncCommandKind,
|
|
@@ -350,15 +362,10 @@ from synth_ai.sdk.research.contracts.research_intern import (
|
|
|
350
362
|
ResearchInternTurnRequest,
|
|
351
363
|
ResearchInternTurnResponse,
|
|
352
364
|
ResearchInternTurnStatus,
|
|
353
|
-
SyncKitAssociatedFile,
|
|
354
|
-
SyncKitAssociationReceipt,
|
|
355
|
-
SyncKitIngressKind,
|
|
356
|
-
SyncKitIngressObservation,
|
|
357
|
-
SyncKitIngressSource,
|
|
358
|
-
SyncKitReadiness,
|
|
359
|
-
SyncTemplateProvisionedResource,
|
|
360
|
-
SyncTemplateProvisioningReceipt,
|
|
361
365
|
SyncTracePublicationReceipt,
|
|
366
|
+
SyncWorkspaceRunReceipt,
|
|
367
|
+
SyncWorkspaceSnapshotIdentity,
|
|
368
|
+
SyncWorkspaceSnapshotKind,
|
|
362
369
|
)
|
|
363
370
|
from synth_ai.sdk.research.contracts.runtime_stream import (
|
|
364
371
|
SwarmEvent,
|
|
@@ -839,6 +846,18 @@ __all__ = [
|
|
|
839
846
|
"InternAsyncRuntime",
|
|
840
847
|
"InternAsyncRuntimeBudget",
|
|
841
848
|
"InternAsyncStatus",
|
|
849
|
+
"InternAgentConfig",
|
|
850
|
+
"InternCrossMetaThreadMessage",
|
|
851
|
+
"InternCrossMetaThreadMessageCreateRequest",
|
|
852
|
+
"InternCrossMetaThreadMessageKind",
|
|
853
|
+
"InternCrossMetaThreadMessageResolution",
|
|
854
|
+
"InternMetaHandoff",
|
|
855
|
+
"InternMetaHandoffStatus",
|
|
856
|
+
"InternMetaThread",
|
|
857
|
+
"InternMetaThreadKind",
|
|
858
|
+
"InternMetaThreadLifecycle",
|
|
859
|
+
"InternMetaThreadSegment",
|
|
860
|
+
"InternMetaThreadSegmentStatus",
|
|
842
861
|
"InternRuntimeBinding",
|
|
843
862
|
"InternRuntimeOutcome",
|
|
844
863
|
"InternSyncCommandKind",
|
|
@@ -934,15 +953,10 @@ __all__ = [
|
|
|
934
953
|
"SwarmTerminalOutcomeMissingError",
|
|
935
954
|
"SwarmEnvironment",
|
|
936
955
|
"SwarmUsage",
|
|
937
|
-
"SyncKitAssociatedFile",
|
|
938
|
-
"SyncKitAssociationReceipt",
|
|
939
|
-
"SyncKitIngressKind",
|
|
940
|
-
"SyncKitIngressObservation",
|
|
941
|
-
"SyncKitIngressSource",
|
|
942
|
-
"SyncKitReadiness",
|
|
943
|
-
"SyncTemplateProvisionedResource",
|
|
944
|
-
"SyncTemplateProvisioningReceipt",
|
|
945
956
|
"SyncTracePublicationReceipt",
|
|
957
|
+
"SyncWorkspaceRunReceipt",
|
|
958
|
+
"SyncWorkspaceSnapshotIdentity",
|
|
959
|
+
"SyncWorkspaceSnapshotKind",
|
|
946
960
|
"TaskId",
|
|
947
961
|
"TranscriptCursor",
|
|
948
962
|
"TranscriptCursorKind",
|
{synth_ai-0.18.2.dev610 → synth_ai-0.18.2.dev612}/synth_ai/sdk/research/contracts/research_intern.py
RENAMED
|
@@ -144,6 +144,128 @@ class ResearchInternResponse(_StrictContract):
|
|
|
144
144
|
updated_at: datetime
|
|
145
145
|
|
|
146
146
|
|
|
147
|
+
class InternMetaThreadKind(StrEnum):
|
|
148
|
+
SYNC = "sync"
|
|
149
|
+
ASYNC = "async"
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class InternMetaThreadLifecycle(StrEnum):
|
|
153
|
+
ACTIVE = "active"
|
|
154
|
+
ARCHIVED = "archived"
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class InternMetaThreadSegmentStatus(StrEnum):
|
|
158
|
+
LIVE = "live"
|
|
159
|
+
SEALED = "sealed"
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
class InternMetaHandoffStatus(StrEnum):
|
|
163
|
+
SEALED = "sealed"
|
|
164
|
+
MERGED = "merged"
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
class InternCrossMetaThreadMessageKind(StrEnum):
|
|
168
|
+
REQUEST_DECISION = "request_decision"
|
|
169
|
+
OPEN_BRANCH_ACK = "open_branch_ack"
|
|
170
|
+
DECISION_RESOLVED = "decision_resolved"
|
|
171
|
+
STEER = "steer"
|
|
172
|
+
NOTE = "note"
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
class InternCrossMetaThreadMessageResolution(StrEnum):
|
|
176
|
+
COMPLETED = "completed"
|
|
177
|
+
DENIED = "denied"
|
|
178
|
+
SUPERSEDED = "superseded"
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
class InternAgentConfig(_StrictContract):
|
|
182
|
+
agent_role: str
|
|
183
|
+
harness: str
|
|
184
|
+
model: str
|
|
185
|
+
reasoning_effort: str
|
|
186
|
+
segment_role: str | None = None
|
|
187
|
+
harness_command: str | None = None
|
|
188
|
+
workspace_root: str | None = None
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
class InternMetaThread(_StrictContract):
|
|
192
|
+
schema_version: Literal["smr.meta-thread.v1"]
|
|
193
|
+
meta_thread_id: str
|
|
194
|
+
organization_id: str
|
|
195
|
+
research_intern_id: str
|
|
196
|
+
kind: InternMetaThreadKind
|
|
197
|
+
lifecycle: InternMetaThreadLifecycle
|
|
198
|
+
head_segment_id: str
|
|
199
|
+
created_at: datetime
|
|
200
|
+
updated_at: datetime
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
class InternMetaThreadSegment(_StrictContract):
|
|
204
|
+
schema_version: Literal["smr.meta-thread-segment.v1"]
|
|
205
|
+
segment_id: str
|
|
206
|
+
meta_thread_id: str
|
|
207
|
+
parent_segment_id: str | None = None
|
|
208
|
+
lane_runtime_id: str | None = None
|
|
209
|
+
agent_config: InternAgentConfig | None = None
|
|
210
|
+
status: InternMetaThreadSegmentStatus
|
|
211
|
+
opened_at: datetime
|
|
212
|
+
sealed_at: datetime | None = None
|
|
213
|
+
linked_message_id: str | None = None
|
|
214
|
+
handoff_id: str | None = None
|
|
215
|
+
is_head: bool = False
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
class InternMetaHandoff(_StrictContract):
|
|
219
|
+
schema_version: Literal["smr.meta-handoff.v1"]
|
|
220
|
+
handoff_id: str
|
|
221
|
+
meta_thread_id: str
|
|
222
|
+
source_segment_id: str
|
|
223
|
+
summary: str
|
|
224
|
+
evidence_references: tuple[str, ...] = ()
|
|
225
|
+
agent_config: InternAgentConfig | None = None
|
|
226
|
+
status: InternMetaHandoffStatus
|
|
227
|
+
created_at: datetime
|
|
228
|
+
sealed_at: datetime
|
|
229
|
+
merged_at: datetime | None = None
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
class InternCrossMetaThreadMessageCreateRequest(_StrictContract):
|
|
233
|
+
schema_version: Literal["smr.cross-meta-thread-message-create.v1"] = (
|
|
234
|
+
"smr.cross-meta-thread-message-create.v1"
|
|
235
|
+
)
|
|
236
|
+
message_id: str = Field(min_length=1, max_length=512)
|
|
237
|
+
source_meta_thread_id: str = Field(min_length=1, max_length=512)
|
|
238
|
+
destination_meta_thread_id: str = Field(min_length=1, max_length=512)
|
|
239
|
+
kind: InternCrossMetaThreadMessageKind
|
|
240
|
+
idempotency_key: str = Field(min_length=1, max_length=512)
|
|
241
|
+
payload: dict[str, Any] = Field(default_factory=dict)
|
|
242
|
+
linked_message_id: str | None = None
|
|
243
|
+
sync_session_id: str | None = None
|
|
244
|
+
segment_id: str | None = None
|
|
245
|
+
resolution: InternCrossMetaThreadMessageResolution | None = None
|
|
246
|
+
summary: str | None = Field(default=None, max_length=4_000)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
class InternCrossMetaThreadMessage(_StrictContract):
|
|
250
|
+
schema_version: Literal["smr.cross-meta-thread-message.v1"]
|
|
251
|
+
message_id: str
|
|
252
|
+
organization_id: str
|
|
253
|
+
research_intern_id: str
|
|
254
|
+
source_meta_thread_id: str
|
|
255
|
+
source_kind: InternMetaThreadKind
|
|
256
|
+
destination_meta_thread_id: str
|
|
257
|
+
destination_kind: InternMetaThreadKind
|
|
258
|
+
kind: InternCrossMetaThreadMessageKind
|
|
259
|
+
idempotency_key: str
|
|
260
|
+
payload: dict[str, Any] = Field(default_factory=dict)
|
|
261
|
+
linked_message_id: str | None = None
|
|
262
|
+
sync_session_id: str | None = None
|
|
263
|
+
segment_id: str | None = None
|
|
264
|
+
resolution: InternCrossMetaThreadMessageResolution | None = None
|
|
265
|
+
summary: str | None = None
|
|
266
|
+
created_at: datetime
|
|
267
|
+
|
|
268
|
+
|
|
147
269
|
class InternRuntimeBinding(_StrictContract):
|
|
148
270
|
factory_id: str | None = None
|
|
149
271
|
project_id: str | None = None
|
|
@@ -188,40 +310,9 @@ class InternSyncSessionCreateRequest(_StrictContract):
|
|
|
188
310
|
binding: InternRuntimeBinding = Field(default_factory=InternRuntimeBinding)
|
|
189
311
|
metadata: dict[str, Any] = Field(default_factory=dict)
|
|
190
312
|
execution_mode: Literal["fast", "standard", "deep"] = "standard"
|
|
191
|
-
task_template: str | None = Field(default=None, min_length=1, max_length=128)
|
|
192
313
|
objective_bounds: dict[str, Any] | None = None
|
|
193
314
|
|
|
194
315
|
|
|
195
|
-
class SyncTemplateProvisionedResource(_StrictContract):
|
|
196
|
-
"""One resource decision made while provisioning a task template."""
|
|
197
|
-
|
|
198
|
-
resource_kind: Literal[
|
|
199
|
-
"project",
|
|
200
|
-
"factory",
|
|
201
|
-
"factory_project_link",
|
|
202
|
-
"effort",
|
|
203
|
-
"intern_factory_membership",
|
|
204
|
-
"run",
|
|
205
|
-
]
|
|
206
|
-
status: Literal["created", "reused", "unsupported"]
|
|
207
|
-
resource_id: str | None = None
|
|
208
|
-
error_code: str | None = None
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
class SyncTemplateProvisioningReceipt(_StrictContract):
|
|
212
|
-
"""Durable record of what starting from a task template provisioned.
|
|
213
|
-
|
|
214
|
-
The backend mints this receipt inside the session-create transaction and
|
|
215
|
-
stamps it into the session projection; the SDK only ever observes it.
|
|
216
|
-
"""
|
|
217
|
-
|
|
218
|
-
schema_version: Literal["smr.intern-sync-template-provisioning.v1"]
|
|
219
|
-
task_template: str
|
|
220
|
-
binding: InternRuntimeBinding
|
|
221
|
-
resources: tuple[SyncTemplateProvisionedResource, ...]
|
|
222
|
-
provisioned_at: datetime
|
|
223
|
-
|
|
224
|
-
|
|
225
316
|
class SyncTracePublicationReceipt(_StrictContract):
|
|
226
317
|
"""Read-only receipt for the server-side terminal Trace V5 publication.
|
|
227
318
|
|
|
@@ -247,76 +338,59 @@ class SyncTracePublicationReceipt(_StrictContract):
|
|
|
247
338
|
published_at: datetime | None = None
|
|
248
339
|
|
|
249
340
|
|
|
250
|
-
|
|
251
|
-
"
|
|
252
|
-
"
|
|
253
|
-
"
|
|
254
|
-
"project_files",
|
|
341
|
+
SyncWorkspaceSnapshotKind = Literal[
|
|
342
|
+
"internal_git_head",
|
|
343
|
+
"stored_file_digest_set",
|
|
344
|
+
"internal_git_head_with_stored_files",
|
|
255
345
|
]
|
|
256
346
|
|
|
257
|
-
SyncKitIngressObservation = Literal[
|
|
258
|
-
"stored_file_write",
|
|
259
|
-
"push_confirmation",
|
|
260
|
-
"upload_url_issuance",
|
|
261
|
-
]
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
class SyncKitAssociatedFile(_StrictContract):
|
|
265
|
-
"""One file observed in a kit ingress, with whatever identity was available."""
|
|
266
|
-
|
|
267
|
-
path: str
|
|
268
|
-
digest: str | None = Field(default=None, pattern=r"^sha256:[0-9a-f]{64}$")
|
|
269
|
-
size_bytes: int | None = Field(default=None, ge=0)
|
|
270
|
-
stored_file_id: str | None = None
|
|
271
|
-
|
|
272
347
|
|
|
273
|
-
class
|
|
274
|
-
"""
|
|
348
|
+
class SyncWorkspaceSnapshotIdentity(_StrictContract):
|
|
349
|
+
"""Provable project workspace identity captured when a run is triggered."""
|
|
275
350
|
|
|
351
|
+
schema_version: Literal["smr.intern-sync-workspace-snapshot.v1"] = (
|
|
352
|
+
"smr.intern-sync-workspace-snapshot.v1"
|
|
353
|
+
)
|
|
354
|
+
kind: SyncWorkspaceSnapshotKind
|
|
276
355
|
commit_sha: str | None = None
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
upload_batch_id: str | None = None
|
|
281
|
-
dataset_ref: str | None = None
|
|
282
|
-
stored_file_ids: tuple[str, ...] = ()
|
|
356
|
+
inventory_digest: str | None = Field(default=None, pattern=r"^sha256:[0-9a-f]{64}$")
|
|
357
|
+
file_count: int | None = Field(default=None, ge=1)
|
|
358
|
+
captured_at: datetime
|
|
283
359
|
|
|
360
|
+
@model_validator(mode="after")
|
|
361
|
+
def require_identity_per_kind(self) -> SyncWorkspaceSnapshotIdentity:
|
|
362
|
+
if self.kind == "internal_git_head" and not self.commit_sha:
|
|
363
|
+
raise ValueError("internal_git_head snapshot requires commit_sha")
|
|
364
|
+
if self.kind == "stored_file_digest_set" and (
|
|
365
|
+
not self.inventory_digest or not self.file_count
|
|
366
|
+
):
|
|
367
|
+
raise ValueError(
|
|
368
|
+
"stored_file_digest_set snapshot requires the inventory digest and file count"
|
|
369
|
+
)
|
|
370
|
+
if self.kind == "internal_git_head_with_stored_files" and (
|
|
371
|
+
not self.commit_sha or not self.inventory_digest or not self.file_count
|
|
372
|
+
):
|
|
373
|
+
raise ValueError(
|
|
374
|
+
"internal_git_head_with_stored_files snapshot requires commit_sha, "
|
|
375
|
+
"the inventory digest, and file count"
|
|
376
|
+
)
|
|
377
|
+
return self
|
|
284
378
|
|
|
285
|
-
class SyncKitAssociationReceipt(_StrictContract):
|
|
286
|
-
"""Durable record that a kit ingress landed while this session was open.
|
|
287
379
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
Clients never mint it; they observe it on the session projection.
|
|
291
|
-
"""
|
|
380
|
+
class SyncWorkspaceRunReceipt(_StrictContract):
|
|
381
|
+
"""Server-minted proof of the project workspace used to trigger one run."""
|
|
292
382
|
|
|
293
|
-
schema_version: Literal["smr.intern-sync-
|
|
294
|
-
|
|
383
|
+
schema_version: Literal["smr.intern-sync-workspace-run.v1"] = "smr.intern-sync-workspace-run.v1"
|
|
384
|
+
run_id: str
|
|
295
385
|
sync_session_id: str
|
|
296
386
|
project_id: str
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
source: SyncKitIngressSource
|
|
301
|
-
open_session_count: int = Field(ge=1)
|
|
302
|
-
associated_at: datetime
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
class SyncKitReadiness(_StrictContract):
|
|
306
|
-
"""Read-only kit completeness projection for a template-bound session."""
|
|
307
|
-
|
|
308
|
-
schema_version: Literal["smr.intern-sync-kit-readiness.v1"]
|
|
309
|
-
status: Literal["ready", "incomplete"]
|
|
310
|
-
task_template: str
|
|
311
|
-
kit_contract: str
|
|
312
|
-
required_files: tuple[str, ...]
|
|
313
|
-
present_files: tuple[str, ...] = ()
|
|
314
|
-
missing_files: tuple[str, ...] = ()
|
|
315
|
-
checked_at: datetime
|
|
387
|
+
experiment_id: str | None = None
|
|
388
|
+
workspace: SyncWorkspaceSnapshotIdentity
|
|
389
|
+
recorded_at: datetime
|
|
316
390
|
|
|
317
391
|
|
|
318
392
|
class InternSyncSession(_StrictContract):
|
|
319
|
-
schema_version: Literal["smr.intern-sync-session.v1"]
|
|
393
|
+
schema_version: Literal["smr.intern-sync-session.v1"] = "smr.intern-sync-session.v1"
|
|
320
394
|
sync_session_id: str
|
|
321
395
|
research_intern_id: str
|
|
322
396
|
org_id: str
|
|
@@ -333,18 +407,11 @@ class InternSyncSession(_StrictContract):
|
|
|
333
407
|
outcome: InternRuntimeOutcome | None = None
|
|
334
408
|
failure_code: str | None = None
|
|
335
409
|
temporal_workflow_id: str
|
|
336
|
-
execution_mode: Literal["fast", "standard", "deep"]
|
|
410
|
+
execution_mode: Literal["fast", "standard", "deep"]
|
|
337
411
|
execution_profile_id: Literal["intern_sync"] = "intern_sync"
|
|
338
|
-
# Server-minted projection stamps. Old backends omit them entirely; new
|
|
339
|
-
# backends stamp them once the corresponding effect lands. The SDK only
|
|
340
|
-
# observes these receipts — the backend remains the minting authority.
|
|
341
|
-
task_template: str | None = None
|
|
342
|
-
provisioning: SyncTemplateProvisioningReceipt | None = None
|
|
343
412
|
trace_publication: SyncTracePublicationReceipt | None = None
|
|
344
|
-
kit_associations: tuple[SyncKitAssociationReceipt, ...] = ()
|
|
345
|
-
kit_readiness: SyncKitReadiness | None = None
|
|
346
413
|
visuals: tuple[dict[str, Any], ...] = ()
|
|
347
|
-
|
|
414
|
+
workspace_run_receipts: tuple[SyncWorkspaceRunReceipt, ...] = ()
|
|
348
415
|
experiments: tuple[dict[str, Any], ...] = ()
|
|
349
416
|
harness_bundle_available: bool = False
|
|
350
417
|
created_at: datetime
|
|
@@ -406,13 +473,11 @@ class InternSyncDeployPacket(_StrictContract):
|
|
|
406
473
|
schema_version: Literal["smr.intern-sync-deploy-packet.v1"]
|
|
407
474
|
sync_session_id: str
|
|
408
475
|
project_id: str
|
|
409
|
-
task_template: str | None = None
|
|
410
476
|
auth_scheme: Literal["bearer"]
|
|
411
477
|
auth_env_var: Literal["SYNTH_API_KEY"]
|
|
412
|
-
required_paths: tuple[str, ...] = ()
|
|
413
478
|
endpoints: tuple[InternSyncDeployPacketEndpoint, ...]
|
|
414
479
|
done_signal: Literal["workspace_confirm_push"]
|
|
415
|
-
image_kind: Literal["
|
|
480
|
+
image_kind: Literal["project_default"]
|
|
416
481
|
instructions: str
|
|
417
482
|
|
|
418
483
|
|
|
@@ -97,6 +97,43 @@ RESEARCH_OPERATIONS = {
|
|
|
97
97
|
mutation=True,
|
|
98
98
|
idempotent=True,
|
|
99
99
|
),
|
|
100
|
+
_operation(
|
|
101
|
+
"list_intern_meta_threads",
|
|
102
|
+
HttpMethod.GET,
|
|
103
|
+
"/smr/research-intern/meta-threads",
|
|
104
|
+
idempotent=True,
|
|
105
|
+
),
|
|
106
|
+
_operation(
|
|
107
|
+
"get_intern_meta_thread",
|
|
108
|
+
HttpMethod.GET,
|
|
109
|
+
"/smr/research-intern/meta-threads/{meta_thread_id}",
|
|
110
|
+
idempotent=True,
|
|
111
|
+
),
|
|
112
|
+
_operation(
|
|
113
|
+
"list_intern_meta_thread_segments",
|
|
114
|
+
HttpMethod.GET,
|
|
115
|
+
"/smr/research-intern/meta-threads/{meta_thread_id}/segments",
|
|
116
|
+
idempotent=True,
|
|
117
|
+
),
|
|
118
|
+
_operation(
|
|
119
|
+
"list_intern_meta_thread_handoffs",
|
|
120
|
+
HttpMethod.GET,
|
|
121
|
+
"/smr/research-intern/meta-threads/{meta_thread_id}/handoffs",
|
|
122
|
+
idempotent=True,
|
|
123
|
+
),
|
|
124
|
+
_operation(
|
|
125
|
+
"list_intern_meta_thread_messages",
|
|
126
|
+
HttpMethod.GET,
|
|
127
|
+
"/smr/research-intern/meta-threads/{meta_thread_id}/messages",
|
|
128
|
+
idempotent=True,
|
|
129
|
+
),
|
|
130
|
+
_operation(
|
|
131
|
+
"create_intern_meta_thread_message",
|
|
132
|
+
HttpMethod.POST,
|
|
133
|
+
"/smr/research-intern/meta-threads/messages",
|
|
134
|
+
mutation=True,
|
|
135
|
+
idempotent=True,
|
|
136
|
+
),
|
|
100
137
|
_operation(
|
|
101
138
|
"list_intern_runtime_events",
|
|
102
139
|
HttpMethod.GET,
|