synth-ai 0.17.5.dev587__tar.gz → 0.17.5.dev589__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.
Files changed (280) hide show
  1. {synth_ai-0.17.5.dev587/synth_ai.egg-info → synth_ai-0.17.5.dev589}/PKG-INFO +7 -13
  2. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/README.md +6 -12
  3. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/pyproject.toml +1 -1
  4. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/__init__.py +0 -58
  5. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/main.py +2 -8
  6. synth_ai-0.17.5.dev589/synth_ai/client.py +127 -0
  7. synth_ai-0.17.5.dev589/synth_ai/sdk/__init__.py +13 -0
  8. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/client.py +1 -1
  9. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/compat.py +2 -4
  10. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/config.py +1 -2
  11. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589/synth_ai.egg-info}/PKG-INFO +7 -13
  12. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/SOURCES.txt +0 -15
  13. synth_ai-0.17.5.dev587/synth_ai/cli/containers.py +0 -93
  14. synth_ai-0.17.5.dev587/synth_ai/cli/pools.py +0 -147
  15. synth_ai-0.17.5.dev587/synth_ai/cli/tunnels.py +0 -159
  16. synth_ai-0.17.5.dev587/synth_ai/client.py +0 -263
  17. synth_ai-0.17.5.dev587/synth_ai/sdk/__init__.py +0 -66
  18. synth_ai-0.17.5.dev587/synth_ai/sdk/base.py +0 -149
  19. synth_ai-0.17.5.dev587/synth_ai/sdk/container/__init__.py +0 -15
  20. synth_ai-0.17.5.dev587/synth_ai/sdk/container/auth.py +0 -161
  21. synth_ai-0.17.5.dev587/synth_ai/sdk/containers.py +0 -307
  22. synth_ai-0.17.5.dev587/synth_ai/sdk/horizons_private.py +0 -132
  23. synth_ai-0.17.5.dev587/synth_ai/sdk/managed_agents/__init__.py +0 -8
  24. synth_ai-0.17.5.dev587/synth_ai/sdk/managed_agents/client.py +0 -910
  25. synth_ai-0.17.5.dev587/synth_ai/sdk/managed_agents_anthropic.py +0 -741
  26. synth_ai-0.17.5.dev587/synth_ai/sdk/openai_agents_sdk.py +0 -612
  27. synth_ai-0.17.5.dev587/synth_ai/sdk/openai_tools.py +0 -96
  28. synth_ai-0.17.5.dev587/synth_ai/sdk/pools.py +0 -603
  29. synth_ai-0.17.5.dev587/synth_ai/sdk/tunnels.py +0 -260
  30. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/LICENSE +0 -0
  31. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/MANIFEST.in +0 -0
  32. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/setup.cfg +0 -0
  33. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/__main__.py +0 -0
  34. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/__init__.py +0 -0
  35. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/__main__.py +0 -0
  36. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/dev_envs.py +0 -0
  37. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research.py +0 -0
  38. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research_environments.py +0 -0
  39. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research_factory_standup.py +0 -0
  40. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research_image_releases.py +0 -0
  41. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/cli/research_projects.py +0 -0
  42. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/config.py +0 -0
  43. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/__init__.py +0 -0
  44. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/auth/__init__.py +0 -0
  45. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/auth/context.py +0 -0
  46. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/auth/credentials.py +0 -0
  47. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/contracts/__init__.py +0 -0
  48. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/contracts/json_value.py +0 -0
  49. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/contracts/pagination.py +0 -0
  50. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/contracts/resources.py +0 -0
  51. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/errors.py +0 -0
  52. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/__init__.py +0 -0
  53. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/async_transport.py +0 -0
  54. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/request.py +0 -0
  55. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/retry.py +0 -0
  56. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/streaming.py +0 -0
  57. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/http/transport.py +0 -0
  58. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/research/__init__.py +0 -0
  59. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/__init__.py +0 -0
  60. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/dict.py +0 -0
  61. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/env.py +0 -0
  62. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/json.py +0 -0
  63. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/log_filter.py +0 -0
  64. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/paths.py +0 -0
  65. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/secure_files.py +0 -0
  66. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/urls.py +0 -0
  67. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/core/utils/workspace.py +0 -0
  68. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/__init__.py +0 -0
  69. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/__main__.py +0 -0
  70. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/objective_tools.py +0 -0
  71. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/registry.py +0 -0
  72. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/request_models.py +0 -0
  73. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/server.py +0 -0
  74. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/__init__.py +0 -0
  75. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/approvals.py +0 -0
  76. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/artifacts.py +0 -0
  77. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/cloud_deployments.py +0 -0
  78. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/datasets.py +0 -0
  79. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/dev_environments.py +0 -0
  80. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/environments.py +0 -0
  81. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/exports.py +0 -0
  82. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/factories.py +0 -0
  83. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/factory_results.py +0 -0
  84. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/files.py +0 -0
  85. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/image_releases.py +0 -0
  86. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/integrations.py +0 -0
  87. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/logs.py +0 -0
  88. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/models.py +0 -0
  89. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/outputs.py +0 -0
  90. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/progress.py +0 -0
  91. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/project_data.py +0 -0
  92. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/projects.py +0 -0
  93. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/prs.py +0 -0
  94. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/readiness.py +0 -0
  95. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/repos.py +0 -0
  96. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/resources.py +0 -0
  97. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/runs.py +0 -0
  98. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/smr_policy_schemas.py +0 -0
  99. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/tag.py +0 -0
  100. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/trained_models.py +0 -0
  101. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/usage.py +0 -0
  102. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/visuals.py +0 -0
  103. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
  104. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/py.typed +0 -0
  105. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/pagination.py +0 -0
  106. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/__init__.py +0 -0
  107. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/_internal/__init__.py +0 -0
  108. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/_internal/crypto.py +0 -0
  109. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/_internal/env.py +0 -0
  110. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/_internal/urls.py +0 -0
  111. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/account.py +0 -0
  112. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/advanced.py +0 -0
  113. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/advanced_factories.py +0 -0
  114. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/advanced_swarms.py +0 -0
  115. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/artifacts.py +0 -0
  116. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/auth.py +0 -0
  117. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/client.py +0 -0
  118. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/__init__.py +0 -0
  119. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
  120. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
  121. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
  122. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/_wire.py +0 -0
  123. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/activity.py +0 -0
  124. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
  125. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
  126. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/billing.py +0 -0
  127. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
  128. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
  129. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
  130. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
  131. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/common.py +0 -0
  132. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
  133. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
  134. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
  135. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/economics.py +0 -0
  136. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
  137. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/environments.py +0 -0
  138. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/evidence.py +0 -0
  139. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factories.py +0 -0
  140. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
  141. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
  142. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
  143. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
  144. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
  145. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
  146. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
  147. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project.py +0 -0
  148. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project_data.py +0 -0
  149. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
  150. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
  151. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
  152. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/projects.py +0 -0
  153. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/promotions.py +0 -0
  154. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/research_intern.py +0 -0
  155. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
  156. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_control.py +0 -0
  157. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
  158. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_events.py +0 -0
  159. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
  160. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
  161. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
  162. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_state.py +0 -0
  163. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
  164. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
  165. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
  166. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
  167. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
  168. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
  169. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
  170. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
  171. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
  172. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
  173. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
  174. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
  175. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
  176. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
  177. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
  178. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
  179. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
  180. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
  181. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
  182. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
  183. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
  184. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
  185. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
  186. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
  187. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
  188. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
  189. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
  190. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
  191. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
  192. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/status.py +0 -0
  193. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/swarms.py +0 -0
  194. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/tag.py +0 -0
  195. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/traces.py +0 -0
  196. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/transcript.py +0 -0
  197. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/types.py +0 -0
  198. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/usage.py +0 -0
  199. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/visuals.py +0 -0
  200. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
  201. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/work_products.py +0 -0
  202. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
  203. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/economics.py +0 -0
  204. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/efforts.py +0 -0
  205. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/enums.py +0 -0
  206. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/environments.py +0 -0
  207. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/errors.py +0 -0
  208. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/events.py +0 -0
  209. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/experiments.py +0 -0
  210. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/facade.py +0 -0
  211. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/factories.py +0 -0
  212. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/factory_plans/__init__.py +0 -0
  213. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/factory_storage.py +0 -0
  214. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/image_releases.py +0 -0
  215. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/knowledge.py +0 -0
  216. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/models.py +0 -0
  217. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/operations.py +0 -0
  218. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/project_data.py +0 -0
  219. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/project_deliveries.py +0 -0
  220. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/project_workspaces.py +0 -0
  221. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/projects.py +0 -0
  222. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/public.py +0 -0
  223. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/readouts.py +0 -0
  224. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/research_intern.py +0 -0
  225. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/schemas/smr_openapi.yaml +0 -0
  226. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/secrets.py +0 -0
  227. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/__init__.py +0 -0
  228. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/_base.py +0 -0
  229. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
  230. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
  231. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/approvals.py +0 -0
  232. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/billing.py +0 -0
  233. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
  234. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/cost.py +0 -0
  235. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/credentials.py +0 -0
  236. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/datasets.py +0 -0
  237. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/dev_environments.py +0 -0
  238. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/environments.py +0 -0
  239. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/exports.py +0 -0
  240. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/factories.py +0 -0
  241. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
  242. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/files.py +0 -0
  243. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/github.py +0 -0
  244. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/image_releases.py +0 -0
  245. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/images.py +0 -0
  246. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/integrations.py +0 -0
  247. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/logs.py +0 -0
  248. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/models.py +0 -0
  249. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/outputs.py +0 -0
  250. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/progress.py +0 -0
  251. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/project.py +0 -0
  252. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/projects.py +0 -0
  253. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/prs.py +0 -0
  254. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/py.typed +0 -0
  255. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/readiness.py +0 -0
  256. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/repos.py +0 -0
  257. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/repositories.py +0 -0
  258. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/runs.py +0 -0
  259. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/secrets.py +0 -0
  260. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/setup.py +0 -0
  261. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/tag.py +0 -0
  262. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/trained_models.py +0 -0
  263. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/transport.py +0 -0
  264. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/usage.py +0 -0
  265. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/work_products.py +0 -0
  266. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
  267. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/swarms.py +0 -0
  268. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/traces.py +0 -0
  269. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/__init__.py +0 -0
  270. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/http.py +0 -0
  271. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/pagination.py +0 -0
  272. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/retries.py +0 -0
  273. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/transport/streaming.py +0 -0
  274. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/version.py +0 -0
  275. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/visuals.py +0 -0
  276. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai/sdk/research/wiki.py +0 -0
  277. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/dependency_links.txt +0 -0
  278. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/entry_points.txt +0 -0
  279. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/requires.txt +0 -0
  280. {synth_ai-0.17.5.dev587 → synth_ai-0.17.5.dev589}/synth_ai.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synth-ai
3
- Version: 0.17.5.dev587
3
+ Version: 0.17.5.dev589
4
4
  Summary: Python-only SDK for Synth containers, tunnels, pools, and Research
5
5
  Author-email: Synth AI <josh@usesynth.ai>
6
6
  License-Expression: MIT
@@ -42,8 +42,7 @@ Dynamic: license-file
42
42
  [![License](https://img.shields.io/pypi/l/synth-ai.svg)](https://pypi.org/project/synth-ai/)
43
43
  [![Python versions](https://img.shields.io/pypi/pyversions/synth-ai.svg)](https://pypi.org/project/synth-ai/)
44
44
 
45
- Python SDK and CLI for Managed Research, Research Factory, and the infrastructure
46
- surfaces that support them.
45
+ Python SDK and CLI for Managed Research and Research Factory.
47
46
 
48
47
  **Documentation:** https://docs.usesynth.ai/sdk/overview
49
48
 
@@ -183,9 +182,7 @@ synth-ai research --help
183
182
 
184
183
  ```bash
185
184
  synth-ai --help
186
- synth-ai containers list
187
- synth-ai tunnels health
188
- synth-ai pools list
185
+ synth-ai research --help
189
186
  ```
190
187
 
191
188
  ## Public Surface
@@ -195,10 +192,10 @@ Use `SynthClient` as the front door:
195
192
  | Surface | Client namespace | Use it for |
196
193
  | --- | --- | --- |
197
194
  | **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
198
- | Containers | `client.containers` | Hosted container records and lifecycle operations. |
199
- | Tunnels | `client.tunnels` | Managed tunnel records, leases, health, and rotation. |
200
- | Pools | `client.pools` | Container pools, tasks, rollouts, artifacts, usage, and events. |
201
- | CLI | `synth-ai` | Terminal access to containers, tunnels, and pools. |
195
+ | CLI | `synth-ai` | Terminal access to Research commands. |
196
+
197
+ Infrastructure clients (containers, tunnels, pools) are parked under `old/` for
198
+ later restoration and are not composed on `SynthClient` right now.
202
199
 
203
200
  Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
204
201
  want hosted research workers, repo runs, evidence, checkpoints, MCP, or final
@@ -225,9 +222,6 @@ recompute discounts in the client.
225
222
 
226
223
  - [Install and authenticate](https://docs.usesynth.ai/sdk/install-and-auth)
227
224
  - [SynthClient guide](https://docs.usesynth.ai/sdk/synth-client)
228
- - [Tunnels](https://docs.usesynth.ai/sdk/tunnels)
229
- - [Pools](https://docs.usesynth.ai/sdk/pools)
230
- - [Containers](https://docs.usesynth.ai/sdk/containers)
231
225
  - [SDK reference](https://docs.usesynth.ai/reference/sdk)
232
226
  - [OpenAPI contracts](https://docs.usesynth.ai/reference/openapi)
233
227
 
@@ -6,8 +6,7 @@
6
6
  [![License](https://img.shields.io/pypi/l/synth-ai.svg)](https://pypi.org/project/synth-ai/)
7
7
  [![Python versions](https://img.shields.io/pypi/pyversions/synth-ai.svg)](https://pypi.org/project/synth-ai/)
8
8
 
9
- Python SDK and CLI for Managed Research, Research Factory, and the infrastructure
10
- surfaces that support them.
9
+ Python SDK and CLI for Managed Research and Research Factory.
11
10
 
12
11
  **Documentation:** https://docs.usesynth.ai/sdk/overview
13
12
 
@@ -147,9 +146,7 @@ synth-ai research --help
147
146
 
148
147
  ```bash
149
148
  synth-ai --help
150
- synth-ai containers list
151
- synth-ai tunnels health
152
- synth-ai pools list
149
+ synth-ai research --help
153
150
  ```
154
151
 
155
152
  ## Public Surface
@@ -159,10 +156,10 @@ Use `SynthClient` as the front door:
159
156
  | Surface | Client namespace | Use it for |
160
157
  | --- | --- | --- |
161
158
  | **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
162
- | Containers | `client.containers` | Hosted container records and lifecycle operations. |
163
- | Tunnels | `client.tunnels` | Managed tunnel records, leases, health, and rotation. |
164
- | Pools | `client.pools` | Container pools, tasks, rollouts, artifacts, usage, and events. |
165
- | CLI | `synth-ai` | Terminal access to containers, tunnels, and pools. |
159
+ | CLI | `synth-ai` | Terminal access to Research commands. |
160
+
161
+ Infrastructure clients (containers, tunnels, pools) are parked under `old/` for
162
+ later restoration and are not composed on `SynthClient` right now.
166
163
 
167
164
  Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
168
165
  want hosted research workers, repo runs, evidence, checkpoints, MCP, or final
@@ -189,9 +186,6 @@ recompute discounts in the client.
189
186
 
190
187
  - [Install and authenticate](https://docs.usesynth.ai/sdk/install-and-auth)
191
188
  - [SynthClient guide](https://docs.usesynth.ai/sdk/synth-client)
192
- - [Tunnels](https://docs.usesynth.ai/sdk/tunnels)
193
- - [Pools](https://docs.usesynth.ai/sdk/pools)
194
- - [Containers](https://docs.usesynth.ai/sdk/containers)
195
189
  - [SDK reference](https://docs.usesynth.ai/reference/sdk)
196
190
  - [OpenAPI contracts](https://docs.usesynth.ai/reference/openapi)
197
191
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synth-ai"
3
- version = "0.17.5.dev587"
3
+ version = "0.17.5.dev589"
4
4
  description = "Python-only SDK for Synth containers, tunnels, pools, and Research"
5
5
  authors = [{name = "Synth AI", email = "josh@usesynth.ai"}]
6
6
  license = "MIT"
@@ -40,16 +40,7 @@ except _PackageNotFoundError:
40
40
 
41
41
 
42
42
  __all__ = [
43
- "AsyncContainerPoolsClient",
44
- "AsyncContainersClient",
45
- "AsyncHorizonsPrivateClient",
46
- "AsyncManagedAgentsAnthropicClient",
47
- "AsyncOpenAIAgentsSdkClient",
48
43
  "AsyncSynthClient",
49
- "AsyncSynthManagedAgents",
50
- "AsyncTunnelsClient",
51
- "ContainerPoolsClient",
52
- "ContainersClient",
53
44
  "DataBindingCreateRequest",
54
45
  "DatasetRevisionCreateRequest",
55
46
  "DatasetRevisionFinalizeRequest",
@@ -63,11 +54,7 @@ __all__ = [
63
54
  "FactoryRoleReceiptResponse",
64
55
  "FactoryRoleReceiptRuntimeEvidence",
65
56
  "FactoryStorageAuthorityResponse",
66
- "HorizonsPrivateClient",
67
57
  "ResearchApiError",
68
- "ManagedAgentsAnthropicClient",
69
- "ManagedAgentRun",
70
- "OpenAIAgentsSdkClient",
71
58
  "MagiDecisionRequest",
72
59
  "MagiMode",
73
60
  "ProjectComputerCleanupReceiptResponse",
@@ -97,10 +84,6 @@ __all__ = [
97
84
  "ResearchVisualPromotionRequest",
98
85
  "ResearchVisualVersions",
99
86
  "SynthClient",
100
- "SynthManagedAgents",
101
- "TunnelsClient",
102
- "function_tool",
103
- "mcp_tool",
104
87
  ]
105
88
 
106
89
  _EXPORTS: dict[str, tuple[str, str]] = {
@@ -266,47 +249,6 @@ _EXPORTS: dict[str, tuple[str, str]] = {
266
249
  ),
267
250
  "SynthClient": ("synth_ai.client", "SynthClient"),
268
251
  "AsyncSynthClient": ("synth_ai.client", "AsyncSynthClient"),
269
- "ContainersClient": ("synth_ai.sdk.containers", "ContainersClient"),
270
- "AsyncContainersClient": ("synth_ai.sdk.containers", "AsyncContainersClient"),
271
- "ContainerPoolsClient": ("synth_ai.sdk.pools", "ContainerPoolsClient"),
272
- "AsyncContainerPoolsClient": ("synth_ai.sdk.pools", "AsyncContainerPoolsClient"),
273
- "HorizonsPrivateClient": ("synth_ai.sdk.horizons_private", "HorizonsPrivateClient"),
274
- "AsyncHorizonsPrivateClient": (
275
- "synth_ai.sdk.horizons_private",
276
- "AsyncHorizonsPrivateClient",
277
- ),
278
- "ManagedAgentsAnthropicClient": (
279
- "synth_ai.sdk.managed_agents_anthropic",
280
- "ManagedAgentsAnthropicClient",
281
- ),
282
- "ManagedAgentRun": (
283
- "synth_ai.sdk.managed_agents_anthropic",
284
- "ManagedAgentRun",
285
- ),
286
- "AsyncManagedAgentsAnthropicClient": (
287
- "synth_ai.sdk.managed_agents_anthropic",
288
- "AsyncManagedAgentsAnthropicClient",
289
- ),
290
- "SynthManagedAgents": (
291
- "synth_ai.sdk.managed_agents",
292
- "SynthManagedAgents",
293
- ),
294
- "AsyncSynthManagedAgents": (
295
- "synth_ai.sdk.managed_agents",
296
- "AsyncSynthManagedAgents",
297
- ),
298
- "OpenAIAgentsSdkClient": (
299
- "synth_ai.sdk.openai_agents_sdk",
300
- "OpenAIAgentsSdkClient",
301
- ),
302
- "AsyncOpenAIAgentsSdkClient": (
303
- "synth_ai.sdk.openai_agents_sdk",
304
- "AsyncOpenAIAgentsSdkClient",
305
- ),
306
- "TunnelsClient": ("synth_ai.sdk.tunnels", "TunnelsClient"),
307
- "AsyncTunnelsClient": ("synth_ai.sdk.tunnels", "AsyncTunnelsClient"),
308
- "function_tool": ("synth_ai.sdk.openai_tools", "function_tool"),
309
- "mcp_tool": ("synth_ai.sdk.openai_tools", "mcp_tool"),
310
252
  }
311
253
 
312
254
 
@@ -1,12 +1,9 @@
1
- """Root CLI group with Python-only containers platform commands."""
1
+ """Root CLI group for Research and remaining local helpers."""
2
2
 
3
3
  import click
4
4
 
5
- from synth_ai.cli.containers import containers
6
5
  from synth_ai.cli.dev_envs import dev_envs
7
- from synth_ai.cli.pools import pools
8
6
  from synth_ai.cli.research import research
9
- from synth_ai.cli.tunnels import tunnels
10
7
 
11
8
 
12
9
  def _get_version():
@@ -22,13 +19,10 @@ def _get_version():
22
19
  @click.version_option(version=_get_version(), prog_name="synth-ai")
23
20
  @click.pass_context
24
21
  def cli(ctx):
25
- """Synth AI Python-only containers platform."""
22
+ """Synth AI CLI."""
26
23
  if ctx.invoked_subcommand is None:
27
24
  click.echo(ctx.get_help())
28
25
 
29
26
 
30
- cli.add_command(containers)
31
27
  cli.add_command(dev_envs)
32
- cli.add_command(pools)
33
28
  cli.add_command(research)
34
- cli.add_command(tunnels)
@@ -0,0 +1,127 @@
1
+ """Python-only front-door SDK clients."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import warnings
6
+ from typing import TYPE_CHECKING
7
+
8
+ from synth_ai.core.auth.credentials import resolve_api_credential
9
+ from synth_ai.core.utils.urls import BACKEND_URL_BASE, normalize_backend_base
10
+
11
+ if TYPE_CHECKING:
12
+ from synth_ai.sdk.research import AsyncResearchClient
13
+ from synth_ai.sdk.research.facade import ResearchClient
14
+
15
+
16
+ def _resolve_api_key(api_key: str | None) -> str:
17
+ return resolve_api_credential(api_key).value
18
+
19
+
20
+ def _resolve_base_url(base_url: str | None) -> str:
21
+ return normalize_backend_base(base_url or BACKEND_URL_BASE)
22
+
23
+
24
+ class SynthClient:
25
+ """Sync client for Managed Research.
26
+
27
+ Use ``research`` for hosted projects, swarms, and Factory lifecycles.
28
+ Infrastructure clients (containers, tunnels, pools) are archived under
29
+ ``old/sdk/`` and are not composed here.
30
+ """
31
+
32
+ def __init__(
33
+ self,
34
+ *,
35
+ api_key: str | None = None,
36
+ base_url: str | None = None,
37
+ timeout: float = 30.0,
38
+ ) -> None:
39
+ self.api_key = _resolve_api_key(api_key)
40
+ self.base_url = _resolve_base_url(base_url)
41
+ self.timeout = timeout
42
+ self._research_client: ResearchClient | None = None
43
+
44
+ @property
45
+ def research(self) -> ResearchClient:
46
+ """Research hero namespace (projects, swarms, and factories)."""
47
+ if self._research_client is None:
48
+ from synth_ai.sdk.research.facade import ResearchClient
49
+
50
+ self._research_client = ResearchClient(
51
+ api_key=self.api_key,
52
+ base_url=self.base_url,
53
+ timeout_seconds=self.timeout,
54
+ )
55
+ return self._research_client
56
+
57
+ def close(self) -> None:
58
+ """Close all lazily opened SDK transports."""
59
+ if self._research_client is not None:
60
+ self._research_client.close()
61
+
62
+ def __enter__(self) -> SynthClient:
63
+ return self
64
+
65
+ def __exit__(self, exc_type: object, exc: object, traceback: object) -> None:
66
+ self.close()
67
+
68
+
69
+ class AsyncSynthClient:
70
+ """Async client for Managed Research."""
71
+
72
+ def __init__(
73
+ self,
74
+ *,
75
+ api_key: str | None = None,
76
+ base_url: str | None = None,
77
+ timeout: float = 30.0,
78
+ ) -> None:
79
+ self.api_key = _resolve_api_key(api_key)
80
+ self.base_url = _resolve_base_url(base_url)
81
+ self.timeout = timeout
82
+ self._async_research_client: AsyncResearchClient | None = None
83
+
84
+ @property
85
+ def research(self) -> AsyncResearchClient:
86
+ """Native asynchronous Research namespace."""
87
+ if self._async_research_client is None:
88
+ from synth_ai.sdk.research import AsyncResearchClient
89
+
90
+ self._async_research_client = AsyncResearchClient(
91
+ api_key=self.api_key,
92
+ base_url=self.base_url,
93
+ timeout_seconds=self.timeout,
94
+ )
95
+ return self._async_research_client
96
+
97
+ @property
98
+ def async_research(self) -> AsyncResearchClient:
99
+ """Deprecated alias for :attr:`research`."""
100
+ warnings.warn(
101
+ "AsyncSynthClient.async_research is deprecated; use .research.",
102
+ DeprecationWarning,
103
+ stacklevel=2,
104
+ )
105
+ return self.research
106
+
107
+ async def close(self) -> None:
108
+ """Close all asynchronous Research transports."""
109
+ if self._async_research_client is not None:
110
+ await self._async_research_client.close()
111
+
112
+ async def __aenter__(self) -> AsyncSynthClient:
113
+ return self
114
+
115
+ async def __aexit__(
116
+ self,
117
+ exc_type: object,
118
+ exc: object,
119
+ traceback: object,
120
+ ) -> None:
121
+ await self.close()
122
+
123
+
124
+ __all__ = [
125
+ "AsyncSynthClient",
126
+ "SynthClient",
127
+ ]
@@ -0,0 +1,13 @@
1
+ """Public SDK layer: Research plus shared client plumbing.
2
+
3
+ Infrastructure clients (containers, tunnels, pools, horizons_private,
4
+ openai_tools, base) are archived under ``old/sdk/`` for later restoration.
5
+ """
6
+
7
+ from synth_ai.sdk.pagination import AsyncPage, SyncPage, page_from_wire
8
+
9
+ __all__ = [
10
+ "AsyncPage",
11
+ "SyncPage",
12
+ "page_from_wire",
13
+ ]
@@ -6064,7 +6064,7 @@ class ResearchSession(ManagedResearchRunAuthorityMixin):
6064
6064
 
6065
6065
 
6066
6066
  class ResearchControlSession(ResearchControlSessionMixin, ResearchSession):
6067
- """Compatibility alias with retired managed-agents bridge surfaces.
6067
+ """Compatibility alias; retired managed-agents bridge attributes raise.
6068
6068
 
6069
6069
  `ResearchSession` is the canonical public name. `ResearchControlSession`
6070
6070
  remains as a one-release alias but requires callers to pass the selected
@@ -9,10 +9,8 @@ class ResearchControlSessionMixin:
9
9
  @staticmethod
10
10
  def _retired_bridge_error(surface: str) -> RuntimeError:
11
11
  return RuntimeError(
12
- f"{surface} was retired with the backend managed-agents proxy. "
13
- "Use the explicit synth-ai Horizons Private client only when you have a "
14
- "Horizons Private base URL and credential; a Synth API key is not a "
15
- "replacement service credential."
12
+ f"{surface} was retired with the backend managed-agents proxy and is "
13
+ "no longer available in synth-ai."
16
14
  )
17
15
 
18
16
  def close_openai_bridge(self) -> None:
@@ -88,8 +88,7 @@ def resolve_openai_transport_mode(value: str | None) -> str:
88
88
  }:
89
89
  raise ValueError(
90
90
  f"openai_transport_mode={normalized!r} was retired with the backend "
91
- "managed-agents proxy; direct_hp requires an explicit Horizons Private "
92
- "base URL and credential"
91
+ "managed-agents proxy and is no longer available"
93
92
  )
94
93
  if normalized not in OPENAI_VALID_TRANSPORT_MODES:
95
94
  raise ValueError(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synth-ai
3
- Version: 0.17.5.dev587
3
+ Version: 0.17.5.dev589
4
4
  Summary: Python-only SDK for Synth containers, tunnels, pools, and Research
5
5
  Author-email: Synth AI <josh@usesynth.ai>
6
6
  License-Expression: MIT
@@ -42,8 +42,7 @@ Dynamic: license-file
42
42
  [![License](https://img.shields.io/pypi/l/synth-ai.svg)](https://pypi.org/project/synth-ai/)
43
43
  [![Python versions](https://img.shields.io/pypi/pyversions/synth-ai.svg)](https://pypi.org/project/synth-ai/)
44
44
 
45
- Python SDK and CLI for Managed Research, Research Factory, and the infrastructure
46
- surfaces that support them.
45
+ Python SDK and CLI for Managed Research and Research Factory.
47
46
 
48
47
  **Documentation:** https://docs.usesynth.ai/sdk/overview
49
48
 
@@ -183,9 +182,7 @@ synth-ai research --help
183
182
 
184
183
  ```bash
185
184
  synth-ai --help
186
- synth-ai containers list
187
- synth-ai tunnels health
188
- synth-ai pools list
185
+ synth-ai research --help
189
186
  ```
190
187
 
191
188
  ## Public Surface
@@ -195,10 +192,10 @@ Use `SynthClient` as the front door:
195
192
  | Surface | Client namespace | Use it for |
196
193
  | --- | --- | --- |
197
194
  | **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
198
- | Containers | `client.containers` | Hosted container records and lifecycle operations. |
199
- | Tunnels | `client.tunnels` | Managed tunnel records, leases, health, and rotation. |
200
- | Pools | `client.pools` | Container pools, tasks, rollouts, artifacts, usage, and events. |
201
- | CLI | `synth-ai` | Terminal access to containers, tunnels, and pools. |
195
+ | CLI | `synth-ai` | Terminal access to Research commands. |
196
+
197
+ Infrastructure clients (containers, tunnels, pools) are parked under `old/` for
198
+ later restoration and are not composed on `SynthClient` right now.
202
199
 
203
200
  Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
204
201
  want hosted research workers, repo runs, evidence, checkpoints, MCP, or final
@@ -225,9 +222,6 @@ recompute discounts in the client.
225
222
 
226
223
  - [Install and authenticate](https://docs.usesynth.ai/sdk/install-and-auth)
227
224
  - [SynthClient guide](https://docs.usesynth.ai/sdk/synth-client)
228
- - [Tunnels](https://docs.usesynth.ai/sdk/tunnels)
229
- - [Pools](https://docs.usesynth.ai/sdk/pools)
230
- - [Containers](https://docs.usesynth.ai/sdk/containers)
231
225
  - [SDK reference](https://docs.usesynth.ai/reference/sdk)
232
226
  - [OpenAPI contracts](https://docs.usesynth.ai/reference/openapi)
233
227
 
@@ -15,16 +15,13 @@ synth_ai.egg-info/requires.txt
15
15
  synth_ai.egg-info/top_level.txt
16
16
  synth_ai/cli/__init__.py
17
17
  synth_ai/cli/__main__.py
18
- synth_ai/cli/containers.py
19
18
  synth_ai/cli/dev_envs.py
20
19
  synth_ai/cli/main.py
21
- synth_ai/cli/pools.py
22
20
  synth_ai/cli/research.py
23
21
  synth_ai/cli/research_environments.py
24
22
  synth_ai/cli/research_factory_standup.py
25
23
  synth_ai/cli/research_image_releases.py
26
24
  synth_ai/cli/research_projects.py
27
- synth_ai/cli/tunnels.py
28
25
  synth_ai/core/__init__.py
29
26
  synth_ai/core/errors.py
30
27
  synth_ai/core/auth/__init__.py
@@ -87,19 +84,7 @@ synth_ai/mcp/research/tools/usage.py
87
84
  synth_ai/mcp/research/tools/visuals.py
88
85
  synth_ai/mcp/research/tools/workspace_inputs.py
89
86
  synth_ai/sdk/__init__.py
90
- synth_ai/sdk/base.py
91
- synth_ai/sdk/containers.py
92
- synth_ai/sdk/horizons_private.py
93
- synth_ai/sdk/managed_agents_anthropic.py
94
- synth_ai/sdk/openai_agents_sdk.py
95
- synth_ai/sdk/openai_tools.py
96
87
  synth_ai/sdk/pagination.py
97
- synth_ai/sdk/pools.py
98
- synth_ai/sdk/tunnels.py
99
- synth_ai/sdk/container/__init__.py
100
- synth_ai/sdk/container/auth.py
101
- synth_ai/sdk/managed_agents/__init__.py
102
- synth_ai/sdk/managed_agents/client.py
103
88
  synth_ai/sdk/research/__init__.py
104
89
  synth_ai/sdk/research/account.py
105
90
  synth_ai/sdk/research/advanced.py
@@ -1,93 +0,0 @@
1
- """Containers CLI commands."""
2
-
3
- from __future__ import annotations
4
-
5
- import json
6
- import os
7
- from pathlib import Path
8
- from typing import Any
9
-
10
- import click
11
-
12
-
13
- def _load_json_argument(raw: str | None) -> dict[str, Any]:
14
- if not raw:
15
- return {}
16
- value = raw.strip()
17
- if value.startswith("@"):
18
- value = Path(value[1:]).read_text()
19
- parsed = json.loads(value)
20
- if not isinstance(parsed, dict):
21
- raise click.ClickException("Expected a JSON object.")
22
- return parsed
23
-
24
-
25
- def _client(api_key: str | None, backend_url: str | None):
26
- from synth_ai.sdk.containers import ContainersClient
27
-
28
- return ContainersClient(api_key=api_key, backend_base=backend_url)
29
-
30
-
31
- def _echo(data: Any) -> None:
32
- click.echo(json.dumps(data, indent=2, default=str))
33
-
34
-
35
- @click.group()
36
- def containers() -> None:
37
- """Manage hosted containers."""
38
-
39
-
40
- @containers.command("list")
41
- @click.option("--api-key", envvar="SYNTH_API_KEY")
42
- @click.option("--backend-url", envvar="SYNTH_BACKEND_URL", default=os.getenv("SYNTH_BACKEND_URL"))
43
- def list_containers(api_key: str | None, backend_url: str | None) -> None:
44
- items = _client(api_key, backend_url).list()
45
- _echo([item.model_dump() for item in items])
46
-
47
-
48
- @containers.command("get")
49
- @click.argument("container_id")
50
- @click.option("--api-key", envvar="SYNTH_API_KEY")
51
- @click.option("--backend-url", envvar="SYNTH_BACKEND_URL", default=os.getenv("SYNTH_BACKEND_URL"))
52
- def get_container(container_id: str, api_key: str | None, backend_url: str | None) -> None:
53
- item = _client(api_key, backend_url).get(container_id)
54
- _echo(item.model_dump())
55
-
56
-
57
- @containers.command("create")
58
- @click.option("--name", required=True)
59
- @click.option("--task-type", required=True)
60
- @click.option("--definition", default="{}")
61
- @click.option("--environment-config", default=None)
62
- @click.option("--internal-url", default=None)
63
- @click.option("--api-key", envvar="SYNTH_API_KEY")
64
- @click.option("--backend-url", envvar="SYNTH_BACKEND_URL", default=os.getenv("SYNTH_BACKEND_URL"))
65
- def create_container(
66
- name: str,
67
- task_type: str,
68
- definition: str,
69
- environment_config: str | None,
70
- internal_url: str | None,
71
- api_key: str | None,
72
- backend_url: str | None,
73
- ) -> None:
74
- from synth_ai.sdk.containers import ContainerSpec
75
-
76
- spec = ContainerSpec(
77
- name=name,
78
- task_type=task_type,
79
- definition=_load_json_argument(definition),
80
- environment_config=_load_json_argument(environment_config) if environment_config else None,
81
- internal_url=internal_url,
82
- )
83
- item = _client(api_key, backend_url).create(spec)
84
- _echo(item.model_dump())
85
-
86
-
87
- @containers.command("delete")
88
- @click.argument("container_id")
89
- @click.option("--api-key", envvar="SYNTH_API_KEY")
90
- @click.option("--backend-url", envvar="SYNTH_BACKEND_URL", default=os.getenv("SYNTH_BACKEND_URL"))
91
- def delete_container(container_id: str, api_key: str | None, backend_url: str | None) -> None:
92
- _client(api_key, backend_url).delete(container_id)
93
- _echo({"status": "deleted", "container_id": container_id})