synth-ai 0.22.2.dev690__tar.gz → 0.22.2.dev692__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.22.2.dev690/synth_ai.egg-info → synth_ai-0.22.2.dev692}/PKG-INFO +1 -1
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/pyproject.toml +5 -1
- synth_ai-0.22.2.dev692/synth_ai/core/contracts/rate_limits.py +64 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/errors.py +14 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/http/__init__.py +3 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/http/async_transport.py +6 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/http/transport.py +7 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/server.py +1 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/client.py +11 -1
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692/synth_ai.egg-info}/PKG-INFO +1 -1
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai.egg-info/SOURCES.txt +1 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/LICENSE +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/MANIFEST.in +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/openapi/index-v1.json +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/openapi/messaging-v1.json +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/openapi/research-v1.json +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/setup.cfg +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/setup.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/__main__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/AGENTS.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/__main__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/index.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/main.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/research.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/research_environments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/research_image_releases.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/research_projects.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/utils/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/cli/utils/research_launch.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/client.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/auth/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/auth/credentials.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/contracts/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/contracts/json_value.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/contracts/pagination.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/http/request.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/http/retry.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/http/streaming.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/local_files.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/research/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/utils/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/utils/env.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/utils/log_filter.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/utils/paths.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/core/utils/urls.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/__main__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/objective_tools.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/registry.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/request_models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/approvals.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/artifacts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/datasets.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/environments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/exports.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/factories.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/factory_results.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/files.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/image_releases.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/index.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/index_qa.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/integrations.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/intern_program.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/launch_schemas.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/local_files.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/logs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/outputs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/policy_schemas.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/progress.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/project_data.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/projects.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/prs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/readiness.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/repos.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/research_intern.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/resource_reads.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/resources.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/runs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/scientific_records.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/trained_models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/usage.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/visuals.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/pools.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/py.typed +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/AGENT_SETUP_PROMPT.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/agent_policy.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/artifacts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/catalog.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/catalogue.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/classification.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/contracts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/contributions.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/errors.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/forge_notices.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/intake.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/lifecycle.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/local_files.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/manifest.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/oauth.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/package.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/public.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/public_corpus.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/public_search.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/qa.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/qa_checks.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/qa_preflight.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/qa_reviews.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/research/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/research/build.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/research/capture.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/research/contracts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/research/files.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/research/release.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/research_intake.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/retry.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/rights.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/scientific_provenance.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/scope_errors.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/scopes.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/search.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/submission.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/timeouts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/transfer.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/upload_session.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/usage_accounting.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/value.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/wallet_search.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/messaging/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/messaging/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/messaging/client.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/messaging/contracts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/optimizers/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/optimizers/client.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/optimizers/contracts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/pagination.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/_internal/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/_internal/crypto.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/_internal/env.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/_internal/urls.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/account.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/advanced.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/advanced_factories.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/advanced_swarms.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/artifacts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/auth.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/client.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/container_pools/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/container_pools/api.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/container_pools/contracts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/container_pools/operations.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/container_pools/packaging.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/_wire.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/activity.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/billing.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/common.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/economics.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/environments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/evidence.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/experiment_evidence.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/factories.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/failure.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge/contracts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge/evaluation.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge/exports.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge/operations.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge/records.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge/resources.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge/schema.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge_citations.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/forge_uploads.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/intern_authority.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/intern_blockers.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/intern_grants.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/intern_program.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/intern_resources.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/intern_usage.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/limit_evidence.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/native_attachment.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/native_result_outcome.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/project.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/project_data.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/projects.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/promotions.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/research_intern.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/resource_reads.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/resource_settlement.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_control.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_events.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_state.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/scientific_citations.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/status.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/swarm_controls.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/swarm_history.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/swarm_rollouts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/swarm_tasks.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/swarms.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/tag.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/traces.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/transcript.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/types.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/usage.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/visuals.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/wire_models_README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/work_products.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/economics.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/efforts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/environments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/errors.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/events.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/execution_reads.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/experiments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/facade.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/factories.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/factory_storage.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/hierarchy.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/hierarchy_models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/image_releases.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/intern_authority.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/intern_blockers.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/intern_program.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/knowledge.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/operations.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/owner_reads.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/planning_reads.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/project_data.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/project_deliveries.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/project_workspaces.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/projects.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/public.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/readouts.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/research_intern.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/resource_reads.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/scientific_records.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/secrets.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/README.md +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/_base.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/approvals.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/billing.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/client.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/config.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/cost.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/datasets.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/dev_environments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/directory_inputs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/environments.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/exports.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/factories.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/files.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/github.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/image_releases.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/images.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/logs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/outputs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/progress.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/project.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/projects.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/prs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/readiness.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/repositories.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/runs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/secrets.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/setup.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/tag.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/trained_models.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/transport.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/usage.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/work_products.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/surface_parity.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/swarms.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/traces.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/transport/__init__.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/transport/http.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/transport/pagination.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/version.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/visuals.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/research/wiki.py +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai.egg-info/entry_points.txt +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai.egg-info/requires.txt +0 -0
- {synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "synth-ai"
|
|
3
|
-
version = "0.22.2.
|
|
3
|
+
version = "0.22.2.dev692"
|
|
4
4
|
description = "Python SDK, CLI and MCP servers for Synth Index search and Swarms"
|
|
5
5
|
keywords = ["synth", "index", "search", "citations", "research", "swarms", "mcp", "sdk"]
|
|
6
6
|
authors = [{name = "Synth AI", email = "josh@usesynth.ai"}]
|
|
@@ -135,3 +135,7 @@ dev = [
|
|
|
135
135
|
"ipykernel>=7.1.0",
|
|
136
136
|
"mdxify>=0.2.0",
|
|
137
137
|
]
|
|
138
|
+
|
|
139
|
+
[tool.pytest.ini_options]
|
|
140
|
+
cache_dir = ".pytest_cache"
|
|
141
|
+
addopts = "--basetemp=.pytest_tmp"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Per-response rate capacity; see testing/specifications/sdk/rate_limits.md.
|
|
2
|
+
|
|
3
|
+
Only recognized, bounded numeric/ISO fields are retained. Response cookies,
|
|
4
|
+
authorization, and unrelated headers never enter logs or exception metadata.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from collections.abc import Mapping
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass(frozen=True, slots=True)
|
|
15
|
+
class RateLimitSnapshot:
|
|
16
|
+
dimension: str
|
|
17
|
+
limit: int | None
|
|
18
|
+
remaining: int | None
|
|
19
|
+
reset_at: str | None
|
|
20
|
+
burst: int | None = None
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def parse_rate_limits(headers: Mapping[str, str]) -> tuple[RateLimitSnapshot, ...]:
|
|
24
|
+
normalized = {name.lower(): value for name, value in headers.items()}
|
|
25
|
+
result = []
|
|
26
|
+
for dimension in ("requests", "concurrency", "tokens", "spend-cents"):
|
|
27
|
+
|
|
28
|
+
def count(kind: str, dimension: str = dimension) -> int | None:
|
|
29
|
+
raw = normalized.get(f"x-ratelimit-{kind}-{dimension}", "")
|
|
30
|
+
return (
|
|
31
|
+
int(raw)
|
|
32
|
+
if raw.isascii() and raw.isdigit() and len(raw) <= 16 and int(raw) <= 2**53 - 1
|
|
33
|
+
else None
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
limit, remaining, burst = count("limit"), count("remaining"), count("burst")
|
|
37
|
+
reset = normalized.get(f"x-ratelimit-reset-{dimension}")
|
|
38
|
+
if reset is not None:
|
|
39
|
+
try:
|
|
40
|
+
if (
|
|
41
|
+
len(reset) > 64
|
|
42
|
+
or datetime.fromisoformat(reset.replace("Z", "+00:00")).tzinfo is None
|
|
43
|
+
):
|
|
44
|
+
reset = None
|
|
45
|
+
except ValueError:
|
|
46
|
+
reset = None
|
|
47
|
+
if limit is not None or remaining is not None or reset is not None or burst is not None:
|
|
48
|
+
result.append(RateLimitSnapshot(dimension, limit, remaining, reset, burst))
|
|
49
|
+
return tuple(result)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@dataclass(slots=True)
|
|
53
|
+
class ResponseMetadata:
|
|
54
|
+
"""Caller-owned metadata for one request; safe for concurrent transports.
|
|
55
|
+
|
|
56
|
+
Pass a distinct instance per concurrent request. Metadata is replaced on
|
|
57
|
+
each response, so a later response without rate headers cannot reuse old
|
|
58
|
+
capacity. JSON/result wire contracts remain unchanged.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
rate_limits: tuple[RateLimitSnapshot, ...] = ()
|
|
62
|
+
|
|
63
|
+
def capture(self, headers: Mapping[str, str]) -> None:
|
|
64
|
+
self.rate_limits = parse_rate_limits(headers)
|
|
@@ -13,6 +13,8 @@ from dataclasses import dataclass
|
|
|
13
13
|
from enum import StrEnum
|
|
14
14
|
from typing import Any
|
|
15
15
|
|
|
16
|
+
from synth_ai.core.contracts.rate_limits import RateLimitSnapshot
|
|
17
|
+
|
|
16
18
|
HTTP_ERROR_BODY_CAPTURE_CHARS_MAX = 8192
|
|
17
19
|
_DISPLAY_MESSAGE_CHARS_MAX = 4096
|
|
18
20
|
_DISPLAY_BODY_CHARS_MAX = 4096
|
|
@@ -94,6 +96,7 @@ class SynthFailure:
|
|
|
94
96
|
# Server-declared sub-cause of ``code`` (for example ``daily_spend_cap``
|
|
95
97
|
# inside ``index_rate_limited``). Stable vocabulary owned by the backend.
|
|
96
98
|
reason: str | None = None
|
|
99
|
+
rate_limits: tuple[RateLimitSnapshot, ...] = ()
|
|
97
100
|
|
|
98
101
|
|
|
99
102
|
class SynthError(Exception):
|
|
@@ -138,6 +141,11 @@ class SynthError(Exception):
|
|
|
138
141
|
"""Server-declared sub-cause of the error code, when one was sent."""
|
|
139
142
|
return self.failure.reason if self.failure is not None else None
|
|
140
143
|
|
|
144
|
+
@property
|
|
145
|
+
def rate_limits(self) -> tuple[RateLimitSnapshot, ...]:
|
|
146
|
+
"""Recognized rate-capacity metadata from this failed response."""
|
|
147
|
+
return self.failure.rate_limits if self.failure is not None else ()
|
|
148
|
+
|
|
141
149
|
@property
|
|
142
150
|
def resource(self) -> ResourceRef | None:
|
|
143
151
|
"""Resource the failed operation already created or addressed, if named."""
|
|
@@ -187,6 +195,12 @@ class HTTPError(SynthError):
|
|
|
187
195
|
if self.body_snippet:
|
|
188
196
|
body = _safe_error_display(self.body_snippet, limit=_DISPLAY_BODY_CHARS_MAX)
|
|
189
197
|
base += f" | body_excerpt={body}"
|
|
198
|
+
if self.rate_limits:
|
|
199
|
+
limits = "; ".join(
|
|
200
|
+
f"{item.dimension} remaining={item.remaining} limit={item.limit}"
|
|
201
|
+
for item in self.rate_limits
|
|
202
|
+
)
|
|
203
|
+
base += f" | rate_limits={limits}"
|
|
190
204
|
return base
|
|
191
205
|
|
|
192
206
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Shared sync and async HTTP operation substrate."""
|
|
2
2
|
|
|
3
|
+
from synth_ai.core.contracts.rate_limits import RateLimitSnapshot, ResponseMetadata
|
|
3
4
|
from synth_ai.core.http.async_transport import AsyncHttpTransport
|
|
4
5
|
from synth_ai.core.http.request import HttpMethod, HttpRequest, OperationId, OperationMetadata
|
|
5
6
|
from synth_ai.core.http.retry import RetryPolicy
|
|
@@ -14,6 +15,8 @@ __all__ = [
|
|
|
14
15
|
"OperationId",
|
|
15
16
|
"OperationMetadata",
|
|
16
17
|
"RetryPolicy",
|
|
18
|
+
"RateLimitSnapshot",
|
|
19
|
+
"ResponseMetadata",
|
|
17
20
|
"SseEvent",
|
|
18
21
|
"iter_sse_events",
|
|
19
22
|
]
|
|
@@ -14,6 +14,7 @@ from typing import Any, cast
|
|
|
14
14
|
import httpx
|
|
15
15
|
|
|
16
16
|
from synth_ai.core.contracts.json_value import JsonObject, JsonValue
|
|
17
|
+
from synth_ai.core.contracts.rate_limits import ResponseMetadata
|
|
17
18
|
from synth_ai.core.http.request import HttpRequest
|
|
18
19
|
from synth_ai.core.http.retry import (
|
|
19
20
|
RetryPolicy,
|
|
@@ -70,7 +71,10 @@ class AsyncHttpTransport:
|
|
|
70
71
|
allow_not_found: bool = False,
|
|
71
72
|
timeout_seconds: float | None = None,
|
|
72
73
|
operation_id: str | None = None,
|
|
74
|
+
response_metadata: ResponseMetadata | None = None,
|
|
73
75
|
) -> JsonValue:
|
|
76
|
+
if response_metadata is not None:
|
|
77
|
+
response_metadata.rate_limits = ()
|
|
74
78
|
try:
|
|
75
79
|
response = await self.client.request(
|
|
76
80
|
method,
|
|
@@ -84,6 +88,8 @@ class AsyncHttpTransport:
|
|
|
84
88
|
self.exception_handler(method, path, exc, operation_id)
|
|
85
89
|
except httpx.TransportError as exc:
|
|
86
90
|
self.exception_handler(method, path, exc, operation_id)
|
|
91
|
+
if response_metadata is not None:
|
|
92
|
+
response_metadata.capture(response.headers)
|
|
87
93
|
if allow_not_found and response.status_code == 404:
|
|
88
94
|
return None
|
|
89
95
|
if response.is_error:
|
|
@@ -16,6 +16,7 @@ from typing import Any, NoReturn, cast
|
|
|
16
16
|
import httpx
|
|
17
17
|
|
|
18
18
|
from synth_ai.core.contracts.json_value import JsonObject, JsonValue
|
|
19
|
+
from synth_ai.core.contracts.rate_limits import ResponseMetadata, parse_rate_limits
|
|
19
20
|
from synth_ai.core.errors import (
|
|
20
21
|
HTTP_ERROR_BODY_CAPTURE_CHARS_MAX,
|
|
21
22
|
RUNTIME_UNAVAILABLE_CODES,
|
|
@@ -203,6 +204,7 @@ def _failure_from_response(
|
|
|
203
204
|
detail=message,
|
|
204
205
|
resource=_created_search(response, sources),
|
|
205
206
|
reason=reason,
|
|
207
|
+
rate_limits=parse_rate_limits(response.headers),
|
|
206
208
|
)
|
|
207
209
|
|
|
208
210
|
|
|
@@ -463,7 +465,10 @@ class HttpTransport:
|
|
|
463
465
|
allow_not_found: bool = False,
|
|
464
466
|
timeout_seconds: float | None = None,
|
|
465
467
|
operation_id: str | None = None,
|
|
468
|
+
response_metadata: ResponseMetadata | None = None,
|
|
466
469
|
) -> JsonValue:
|
|
470
|
+
if response_metadata is not None:
|
|
471
|
+
response_metadata.rate_limits = ()
|
|
467
472
|
replay_safe = request_permits_replay(method, {**self.headers, **(headers or {})})
|
|
468
473
|
attempts = 0
|
|
469
474
|
waited_seconds = 0.0
|
|
@@ -502,6 +507,8 @@ class HttpTransport:
|
|
|
502
507
|
)
|
|
503
508
|
self.sleep(delay)
|
|
504
509
|
waited_seconds += delay
|
|
510
|
+
if response_metadata is not None:
|
|
511
|
+
response_metadata.capture(response.headers)
|
|
505
512
|
if allow_not_found and response.status_code == 404:
|
|
506
513
|
return None
|
|
507
514
|
if response.is_error:
|
|
@@ -273,6 +273,7 @@ def _mcp_structured_core_error_payload(exc: SynthError) -> dict[str, Any]:
|
|
|
273
273
|
"correlation_id": failure.correlation_id,
|
|
274
274
|
"retryable": failure.retry.retryable,
|
|
275
275
|
"retry_after_seconds": failure.retry.retry_after_seconds,
|
|
276
|
+
"rate_limits": [asdict(item) for item in failure.rate_limits],
|
|
276
277
|
}
|
|
277
278
|
)
|
|
278
279
|
if failure.status is not None:
|
|
@@ -16,6 +16,7 @@ from hashlib import sha256
|
|
|
16
16
|
from typing import Any, Awaitable
|
|
17
17
|
from uuid import UUID, uuid4
|
|
18
18
|
|
|
19
|
+
from synth_ai.core.contracts.rate_limits import ResponseMetadata
|
|
19
20
|
from synth_ai.core.errors import SynthError
|
|
20
21
|
from synth_ai.core.http.async_transport import AsyncHttpTransport
|
|
21
22
|
from synth_ai.core.http.transport import HttpTransport
|
|
@@ -318,6 +319,7 @@ class _Call:
|
|
|
318
319
|
headers: dict[str, str] | None = None
|
|
319
320
|
params: dict[str, Any] | None = None
|
|
320
321
|
raw: bool = False
|
|
322
|
+
response_metadata: ResponseMetadata | None = None
|
|
321
323
|
# Per-request transport timeout; None keeps the client's default.
|
|
322
324
|
timeout_seconds: float | None = None
|
|
323
325
|
|
|
@@ -339,6 +341,8 @@ class _Call:
|
|
|
339
341
|
kwargs["json_body"] = self.json_body
|
|
340
342
|
if self.headers is not None:
|
|
341
343
|
kwargs["headers"] = self.headers
|
|
344
|
+
if self.response_metadata is not None:
|
|
345
|
+
kwargs["response_metadata"] = self.response_metadata
|
|
342
346
|
return method, template.format(**(self.path_parameters or {})), kwargs
|
|
343
347
|
|
|
344
348
|
|
|
@@ -683,6 +687,7 @@ class SearchesAPI(_Resource):
|
|
|
683
687
|
*,
|
|
684
688
|
idempotency_key: str | None = None,
|
|
685
689
|
retry: IndexRetryPolicy = DEFAULT_INDEX_RETRY_POLICY,
|
|
690
|
+
response_metadata: ResponseMetadata | None = None,
|
|
686
691
|
) -> Any:
|
|
687
692
|
"""Create one durable Search and return its handle.
|
|
688
693
|
|
|
@@ -698,6 +703,7 @@ class SearchesAPI(_Resource):
|
|
|
698
703
|
Search.model_validate,
|
|
699
704
|
json_body=_body(spec),
|
|
700
705
|
headers=_key(idempotency_key),
|
|
706
|
+
response_metadata=response_metadata,
|
|
701
707
|
)
|
|
702
708
|
if self._asynchronous:
|
|
703
709
|
|
|
@@ -3000,6 +3006,7 @@ class _IndexRoot(_Resource):
|
|
|
3000
3006
|
limits: SearchExecutionLimits | None = None,
|
|
3001
3007
|
billing: SearchBillingConstraints | None = None,
|
|
3002
3008
|
idempotency_key: str | None = None,
|
|
3009
|
+
response_metadata: ResponseMetadata | None = None,
|
|
3003
3010
|
) -> Any:
|
|
3004
3011
|
"""Execute fast immediately or create-and-wait for one durable deep Search.
|
|
3005
3012
|
|
|
@@ -3010,7 +3017,9 @@ class _IndexRoot(_Resource):
|
|
|
3010
3017
|
spec = _search_spec(spec, query, scope, filters, max_results, mode, limits, billing)
|
|
3011
3018
|
if spec.mode == SearchMode.DEEP:
|
|
3012
3019
|
key = _key(idempotency_key)["Idempotency-Key"]
|
|
3013
|
-
handle = self.searches.create(
|
|
3020
|
+
handle = self.searches.create(
|
|
3021
|
+
spec, idempotency_key=key, response_metadata=response_metadata
|
|
3022
|
+
)
|
|
3014
3023
|
if self._asynchronous:
|
|
3015
3024
|
|
|
3016
3025
|
async def await_deep() -> SearchResult:
|
|
@@ -3030,6 +3039,7 @@ class _IndexRoot(_Resource):
|
|
|
3030
3039
|
lambda payload: _search_result(payload, spec),
|
|
3031
3040
|
json_body=spec.model_dump(mode="json"),
|
|
3032
3041
|
headers=_key(idempotency_key),
|
|
3042
|
+
response_metadata=response_metadata,
|
|
3033
3043
|
)
|
|
3034
3044
|
)
|
|
3035
3045
|
|
|
@@ -39,6 +39,7 @@ synth_ai/core/auth/credentials.py
|
|
|
39
39
|
synth_ai/core/contracts/__init__.py
|
|
40
40
|
synth_ai/core/contracts/json_value.py
|
|
41
41
|
synth_ai/core/contracts/pagination.py
|
|
42
|
+
synth_ai/core/contracts/rate_limits.py
|
|
42
43
|
synth_ai/core/http/__init__.py
|
|
43
44
|
synth_ai/core/http/async_transport.py
|
|
44
45
|
synth_ai/core/http/request.py
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/environments.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/factory_results.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/image_releases.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/integrations.py
RENAMED
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/intern_program.py
RENAMED
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/launch_schemas.py
RENAMED
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/local_files.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/policy_schemas.py
RENAMED
|
File without changes
|
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/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.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/research_intern.py
RENAMED
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/resource_reads.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/scientific_records.py
RENAMED
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/mcp/research/tools/trained_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synth_ai-0.22.2.dev690 → synth_ai-0.22.2.dev692}/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
|
|
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.22.2.dev690 → synth_ai-0.22.2.dev692}/synth_ai/sdk/index/scientific_provenance.py
RENAMED
|
File without changes
|