synth-ai 0.18.2.dev600__tar.gz → 0.18.2.dev602__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.dev600/synth_ai.egg-info → synth_ai-0.18.2.dev602}/PKG-INFO +1 -1
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/pyproject.toml +1 -1
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/README.md +34 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/request_models.py +9 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/server.py +25 -0
- synth_ai-0.18.2.dev602/synth_ai/mcp/research/tools/research_intern.py +1603 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/__init__.py +58 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/research_intern.py +395 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/swarms.py +30 -2
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/operations.py +70 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/public.py +62 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/research_intern.py +1171 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602/synth_ai.egg-info}/PKG-INFO +1 -1
- synth_ai-0.18.2.dev600/synth_ai/mcp/research/tools/research_intern.py +0 -838
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/LICENSE +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/MANIFEST.in +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/README.md +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/setup.cfg +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/README.md +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/__main__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/AGENTS.md +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/README.md +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/__main__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/main.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/research.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/research_environments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/research_image_releases.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/cli/research_projects.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/client.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/README.md +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/auth/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/auth/credentials.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/contracts/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/contracts/json_value.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/contracts/pagination.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/errors.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/http/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/http/async_transport.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/http/request.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/http/retry.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/http/streaming.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/http/transport.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/utils/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/utils/env.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/utils/log_filter.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/utils/paths.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/core/utils/urls.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/__main__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/objective_tools.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/registry.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/approvals.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/artifacts.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/datasets.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/environments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/exports.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/factories.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/factory_results.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/files.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/image_releases.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/integrations.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/logs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/models.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/outputs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/policy_schemas.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/progress.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/project_data.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/projects.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/prs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/readiness.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/repos.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/resources.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/runs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/trained_models.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/usage.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/visuals.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/py.typed +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/README.md +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/pagination.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/_internal/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/_internal/crypto.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/_internal/env.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/_internal/urls.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/account.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/advanced.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/advanced_factories.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/advanced_swarms.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/artifacts.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/auth.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/client.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/_wire.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/activity.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/billing.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/common.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/economics.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/environments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/evidence.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/factories.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/failure.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/limit_evidence.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/project.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/project_data.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/projects.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/promotions.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_control.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_events.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_state.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/status.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/tag.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/traces.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/transcript.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/types.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/usage.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/visuals.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/wire_models_README.md +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/work_products.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/economics.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/efforts.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/environments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/errors.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/events.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/experiments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/facade.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/factories.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/factory_storage.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/image_releases.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/knowledge.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/models.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/project_data.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/project_deliveries.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/project_workspaces.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/projects.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/readouts.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/secrets.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/README.md +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/_base.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/approvals.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/billing.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/client.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/config.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/cost.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/datasets.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/dev_environments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/environments.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/exports.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/factories.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/files.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/github.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/image_releases.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/images.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/logs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/models.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/outputs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/progress.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/project.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/projects.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/prs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/readiness.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/repositories.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/runs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/secrets.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/setup.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/tag.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/trained_models.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/transport.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/usage.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/work_products.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/swarms.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/traces.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/transport/__init__.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/transport/http.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/transport/pagination.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/version.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/visuals.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai/sdk/research/wiki.py +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai.egg-info/SOURCES.txt +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai.egg-info/requires.txt +0 -0
- {synth_ai-0.18.2.dev600 → synth_ai-0.18.2.dev602}/synth_ai.egg-info/top_level.txt +0 -0
|
@@ -80,6 +80,40 @@ Noun reads and run-control tools below need
|
|
|
80
80
|
`research_branch_run_from_checkpoint`, for exact branches and
|
|
81
81
|
branch-with-message, is in the stable subset.
|
|
82
82
|
|
|
83
|
+
Sync Intern control plane:
|
|
84
|
+
- `intern_sync_create`, `intern_sync_list`, and `intern_sync_get` address
|
|
85
|
+
durable operator-present sessions
|
|
86
|
+
- `intern_sync_send`, `intern_sync_intervene`, `intern_sync_answer`,
|
|
87
|
+
`intern_sync_pause`, `intern_sync_resume`, and `intern_sync_close` are typed
|
|
88
|
+
generation-fenced controls over the same command inbox
|
|
89
|
+
- `intern_sync_command` preserves the exact command envelope, while
|
|
90
|
+
`intern_sync_events` and `intern_sync_tail` provide reconnectable ledger access
|
|
91
|
+
|
|
92
|
+
These tools are thin adapters over `client.intern.sync_`. Sync session identity
|
|
93
|
+
and event cursors are explicit because one organization may have multiple Sync
|
|
94
|
+
sessions; they never address the singleton Async resource implicitly.
|
|
95
|
+
|
|
96
|
+
Async Intern control plane:
|
|
97
|
+
- `intern_async_ensure` and `intern_async_get` address the organization's one
|
|
98
|
+
long-lived Async Intern runtime
|
|
99
|
+
- `intern_async_command` preserves the exact durable command envelope
|
|
100
|
+
- `intern_async_send`, `intern_async_intervene`,
|
|
101
|
+
`intern_async_redirect_objective`, and `intern_async_request_checkpoint`
|
|
102
|
+
submit typed instructions to the same backend inbox
|
|
103
|
+
- `intern_async_pause`, `intern_async_resume`, `intern_async_cancel`, and
|
|
104
|
+
`intern_async_provide_input` expose explicit state-machine controls
|
|
105
|
+
- `intern_async_events` replays a bounded event page and `intern_async_tail`
|
|
106
|
+
waits for a bounded number of SSE events
|
|
107
|
+
|
|
108
|
+
These tools are thin adapters over `client.intern.async_`; they do not call
|
|
109
|
+
HTTP directly and do not contain reducer logic. A command receipt proves
|
|
110
|
+
durable admission, not completion. Callers retain command/idempotency identity
|
|
111
|
+
across retries and use the event cursor for progress after disconnecting. This
|
|
112
|
+
MCP surface is the external client control plane. The Intern's own
|
|
113
|
+
capability-gated Factory/Swarm MCP execution happens behind Temporal and is not
|
|
114
|
+
routed through these tools. Manderqueue remains actor transport for a bound Run
|
|
115
|
+
and is never the client mailbox.
|
|
116
|
+
|
|
83
117
|
Provider-wrapper note:
|
|
84
118
|
- OpenRouter, Tinker, and Modal wrapper usage should still be read through canonical
|
|
85
119
|
run usage and actor-usage surfaces, not wrapper-specific payloads
|
|
@@ -40,6 +40,15 @@ def require_string(payload: JSONDict, key: str) -> str:
|
|
|
40
40
|
return value.strip()
|
|
41
41
|
|
|
42
42
|
|
|
43
|
+
def require_int(payload: JSONDict, key: str) -> int:
|
|
44
|
+
if key not in payload or payload.get(key) is None:
|
|
45
|
+
raise ValueError(f"'{key}' is required and must be an integer")
|
|
46
|
+
value = payload[key]
|
|
47
|
+
if isinstance(value, bool) or not isinstance(value, int):
|
|
48
|
+
raise ValueError(f"'{key}' is required and must be an integer")
|
|
49
|
+
return value
|
|
50
|
+
|
|
51
|
+
|
|
43
52
|
def optional_string(payload: JSONDict, key: str) -> str | None:
|
|
44
53
|
value = payload.get(key)
|
|
45
54
|
if value is None:
|
|
@@ -95,6 +95,31 @@ def _optional_int_default(args: JSONDict, name: str, default: int) -> int:
|
|
|
95
95
|
|
|
96
96
|
_STABLE_TOOL_NAMES = frozenset(
|
|
97
97
|
{
|
|
98
|
+
"intern_async_cancel",
|
|
99
|
+
"intern_async_command",
|
|
100
|
+
"intern_async_ensure",
|
|
101
|
+
"intern_async_events",
|
|
102
|
+
"intern_async_get",
|
|
103
|
+
"intern_async_intervene",
|
|
104
|
+
"intern_async_pause",
|
|
105
|
+
"intern_async_provide_input",
|
|
106
|
+
"intern_async_redirect_objective",
|
|
107
|
+
"intern_async_request_checkpoint",
|
|
108
|
+
"intern_async_resume",
|
|
109
|
+
"intern_async_send",
|
|
110
|
+
"intern_async_tail",
|
|
111
|
+
"intern_sync_answer",
|
|
112
|
+
"intern_sync_close",
|
|
113
|
+
"intern_sync_command",
|
|
114
|
+
"intern_sync_create",
|
|
115
|
+
"intern_sync_events",
|
|
116
|
+
"intern_sync_get",
|
|
117
|
+
"intern_sync_intervene",
|
|
118
|
+
"intern_sync_list",
|
|
119
|
+
"intern_sync_pause",
|
|
120
|
+
"intern_sync_resume",
|
|
121
|
+
"intern_sync_send",
|
|
122
|
+
"intern_sync_tail",
|
|
98
123
|
"research_append_research_intern_event",
|
|
99
124
|
"research_archive_factory",
|
|
100
125
|
"research_archive_project",
|