synth-ai 0.18.1.dev595__tar.gz → 0.18.1.dev596__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 (250) hide show
  1. {synth_ai-0.18.1.dev595/synth_ai.egg-info → synth_ai-0.18.1.dev596}/PKG-INFO +1 -1
  2. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/pyproject.toml +1 -1
  3. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/__init__.py +4 -0
  4. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/image_releases.py +65 -4
  5. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/image_releases.py +48 -0
  6. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/operations.py +7 -0
  7. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/public.py +4 -0
  8. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596/synth_ai.egg-info}/PKG-INFO +1 -1
  9. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/LICENSE +0 -0
  10. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/MANIFEST.in +0 -0
  11. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/README.md +0 -0
  12. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/setup.cfg +0 -0
  13. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/README.md +0 -0
  14. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/__init__.py +0 -0
  15. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/__main__.py +0 -0
  16. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/AGENTS.md +0 -0
  17. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/README.md +0 -0
  18. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/__init__.py +0 -0
  19. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/__main__.py +0 -0
  20. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/main.py +0 -0
  21. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/research.py +0 -0
  22. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/research_environments.py +0 -0
  23. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/research_image_releases.py +0 -0
  24. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/cli/research_projects.py +0 -0
  25. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/client.py +0 -0
  26. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/README.md +0 -0
  27. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/__init__.py +0 -0
  28. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/auth/__init__.py +0 -0
  29. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/auth/credentials.py +0 -0
  30. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/contracts/__init__.py +0 -0
  31. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/contracts/json_value.py +0 -0
  32. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/contracts/pagination.py +0 -0
  33. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/errors.py +0 -0
  34. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/http/__init__.py +0 -0
  35. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/http/async_transport.py +0 -0
  36. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/http/request.py +0 -0
  37. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/http/retry.py +0 -0
  38. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/http/streaming.py +0 -0
  39. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/http/transport.py +0 -0
  40. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/research/__init__.py +0 -0
  41. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/utils/__init__.py +0 -0
  42. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/utils/env.py +0 -0
  43. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/utils/log_filter.py +0 -0
  44. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/utils/paths.py +0 -0
  45. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/core/utils/urls.py +0 -0
  46. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/README.md +0 -0
  47. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/__init__.py +0 -0
  48. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/__main__.py +0 -0
  49. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/objective_tools.py +0 -0
  50. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/registry.py +0 -0
  51. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/request_models.py +0 -0
  52. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/server.py +0 -0
  53. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/__init__.py +0 -0
  54. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/approvals.py +0 -0
  55. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/artifacts.py +0 -0
  56. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/datasets.py +0 -0
  57. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/environments.py +0 -0
  58. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/exports.py +0 -0
  59. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/factories.py +0 -0
  60. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/factory_results.py +0 -0
  61. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/files.py +0 -0
  62. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/image_releases.py +0 -0
  63. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/integrations.py +0 -0
  64. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/logs.py +0 -0
  65. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/models.py +0 -0
  66. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/outputs.py +0 -0
  67. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/policy_schemas.py +0 -0
  68. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/progress.py +0 -0
  69. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/project_data.py +0 -0
  70. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/projects.py +0 -0
  71. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/prs.py +0 -0
  72. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/readiness.py +0 -0
  73. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/repos.py +0 -0
  74. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/resources.py +0 -0
  75. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/runs.py +0 -0
  76. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/trained_models.py +0 -0
  77. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/usage.py +0 -0
  78. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/visuals.py +0 -0
  79. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
  80. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/py.typed +0 -0
  81. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/README.md +0 -0
  82. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/__init__.py +0 -0
  83. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/pagination.py +0 -0
  84. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/__init__.py +0 -0
  85. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/_internal/__init__.py +0 -0
  86. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/_internal/crypto.py +0 -0
  87. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/_internal/env.py +0 -0
  88. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/_internal/urls.py +0 -0
  89. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/account.py +0 -0
  90. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/advanced.py +0 -0
  91. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/advanced_factories.py +0 -0
  92. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/advanced_swarms.py +0 -0
  93. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/artifacts.py +0 -0
  94. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/auth.py +0 -0
  95. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/client.py +0 -0
  96. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
  97. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
  98. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
  99. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/_wire.py +0 -0
  100. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/activity.py +0 -0
  101. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
  102. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
  103. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/billing.py +0 -0
  104. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
  105. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
  106. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
  107. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
  108. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/common.py +0 -0
  109. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
  110. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
  111. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
  112. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/economics.py +0 -0
  113. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
  114. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/environments.py +0 -0
  115. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/evidence.py +0 -0
  116. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/factories.py +0 -0
  117. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
  118. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
  119. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
  120. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
  121. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/failure.py +0 -0
  122. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
  123. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
  124. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/project.py +0 -0
  125. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/project_data.py +0 -0
  126. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
  127. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
  128. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
  129. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/projects.py +0 -0
  130. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/promotions.py +0 -0
  131. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/research_intern.py +0 -0
  132. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
  133. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_control.py +0 -0
  134. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
  135. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_events.py +0 -0
  136. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
  137. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
  138. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
  139. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_state.py +0 -0
  140. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
  141. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
  142. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
  143. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
  144. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
  145. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
  146. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
  147. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
  148. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
  149. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
  150. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
  151. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
  152. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
  153. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
  154. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
  155. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
  156. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
  157. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
  158. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
  159. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
  160. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
  161. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
  162. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
  163. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
  164. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
  165. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
  166. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
  167. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
  168. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
  169. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/status.py +0 -0
  170. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/swarms.py +0 -0
  171. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/tag.py +0 -0
  172. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/traces.py +0 -0
  173. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/transcript.py +0 -0
  174. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/types.py +0 -0
  175. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/usage.py +0 -0
  176. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/visuals.py +0 -0
  177. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
  178. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/wire_models_README.md +0 -0
  179. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/work_products.py +0 -0
  180. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
  181. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/economics.py +0 -0
  182. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/efforts.py +0 -0
  183. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/environments.py +0 -0
  184. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/errors.py +0 -0
  185. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/events.py +0 -0
  186. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/experiments.py +0 -0
  187. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/facade.py +0 -0
  188. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/factories.py +0 -0
  189. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/factory_storage.py +0 -0
  190. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/knowledge.py +0 -0
  191. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/models.py +0 -0
  192. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/project_data.py +0 -0
  193. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/project_deliveries.py +0 -0
  194. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/project_workspaces.py +0 -0
  195. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/projects.py +0 -0
  196. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/readouts.py +0 -0
  197. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/research_intern.py +0 -0
  198. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/secrets.py +0 -0
  199. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/README.md +0 -0
  200. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/__init__.py +0 -0
  201. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/_base.py +0 -0
  202. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
  203. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
  204. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/approvals.py +0 -0
  205. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/billing.py +0 -0
  206. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/client.py +0 -0
  207. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
  208. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/config.py +0 -0
  209. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/cost.py +0 -0
  210. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/datasets.py +0 -0
  211. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/dev_environments.py +0 -0
  212. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/environments.py +0 -0
  213. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/exports.py +0 -0
  214. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/factories.py +0 -0
  215. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
  216. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/files.py +0 -0
  217. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/github.py +0 -0
  218. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/image_releases.py +0 -0
  219. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/images.py +0 -0
  220. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/logs.py +0 -0
  221. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/models.py +0 -0
  222. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/outputs.py +0 -0
  223. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/progress.py +0 -0
  224. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/project.py +0 -0
  225. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/projects.py +0 -0
  226. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/prs.py +0 -0
  227. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/readiness.py +0 -0
  228. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/repositories.py +0 -0
  229. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/runs.py +0 -0
  230. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/secrets.py +0 -0
  231. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/setup.py +0 -0
  232. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/tag.py +0 -0
  233. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/trained_models.py +0 -0
  234. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/transport.py +0 -0
  235. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/usage.py +0 -0
  236. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/work_products.py +0 -0
  237. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
  238. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/swarms.py +0 -0
  239. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/traces.py +0 -0
  240. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/transport/__init__.py +0 -0
  241. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/transport/http.py +0 -0
  242. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/transport/pagination.py +0 -0
  243. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/version.py +0 -0
  244. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/visuals.py +0 -0
  245. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai/sdk/research/wiki.py +0 -0
  246. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai.egg-info/SOURCES.txt +0 -0
  247. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai.egg-info/dependency_links.txt +0 -0
  248. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai.egg-info/entry_points.txt +0 -0
  249. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/synth_ai.egg-info/requires.txt +0 -0
  250. {synth_ai-0.18.1.dev595 → synth_ai-0.18.1.dev596}/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.18.1.dev595
3
+ Version: 0.18.1.dev596
4
4
  Summary: Python SDK and CLI for Synth Managed Research and Research Factory
5
5
  Author-email: Synth AI <josh@usesynth.ai>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synth-ai"
3
- version = "0.18.1.dev595"
3
+ version = "0.18.1.dev596"
4
4
  description = "Python SDK and CLI for Synth Managed Research and Research Factory"
5
5
  authors = [{name = "Synth AI", email = "josh@usesynth.ai"}]
6
6
  license = "MIT"
@@ -206,6 +206,8 @@ from synth_ai.sdk.research.contracts.image_releases import (
206
206
  ImageReleaseUploadRequest,
207
207
  ImageReleaseUploadResponse,
208
208
  ImageUploadId,
209
+ RegistryActorRuntimeImageRegistration,
210
+ RegistryActorRuntimeImageRegistrationRequest,
209
211
  RuntimeImageReleaseArchiveResponse,
210
212
  RuntimeImageReleaseId,
211
213
  RuntimeImageReleaseListResponse,
@@ -557,6 +559,8 @@ __all__ = [
557
559
  "ActorRuntimeImageReleaseArchive",
558
560
  "ActorRuntimeImageReleaseDeclaration",
559
561
  "ActorRuntimeImageReleaseList",
562
+ "RegistryActorRuntimeImageRegistration",
563
+ "RegistryActorRuntimeImageRegistrationRequest",
560
564
  "BranchMode",
561
565
  "BranchResult",
562
566
  "BranchSpec",
@@ -697,11 +697,13 @@ class ActorRuntimeImageMaterialization:
697
697
  object.__setattr__(
698
698
  self, "daytona_pullable", required_bool({"value": self.daytona_pullable}, "value")
699
699
  )
700
- expected = (
701
- ("org_registry", "wasabi_artifact") if self.daytona_pullable else ("wasabi_artifact",)
700
+ allowed = (
701
+ (("org_registry",), ("org_registry", "wasabi_artifact"))
702
+ if self.daytona_pullable
703
+ else (("wasabi_artifact",),)
702
704
  )
703
- if self.image_substrates != expected:
704
- raise ValueError("image_substrates must exactly describe the admitted execution path")
705
+ if self.image_substrates not in allowed:
706
+ raise ValueError("image_substrates must exactly describe the admitted execution paths")
705
707
 
706
708
  @classmethod
707
709
  def from_wire(cls, value: JsonValue) -> ActorRuntimeImageMaterialization:
@@ -1169,6 +1171,63 @@ class ImageReleaseFinalize:
1169
1171
  }
1170
1172
 
1171
1173
 
1174
+ @dataclass(frozen=True, slots=True)
1175
+ class RegistryActorRuntimeImageRegistrationRequest:
1176
+ declaration: ActorRuntimeImageReleaseDeclaration
1177
+ image_config_digest: str
1178
+ package_release_timestamps: TimestampMap = field(default_factory=dict)
1179
+
1180
+ def __post_init__(self) -> None:
1181
+ if not isinstance(self.declaration, ActorRuntimeImageReleaseDeclaration):
1182
+ raise ValueError("declaration must be ActorRuntimeImageReleaseDeclaration")
1183
+ object.__setattr__(
1184
+ self,
1185
+ "image_config_digest",
1186
+ digest(self.image_config_digest, field="image_config_digest"),
1187
+ )
1188
+ object.__setattr__(
1189
+ self,
1190
+ "package_release_timestamps",
1191
+ _timestamp_map(self.package_release_timestamps),
1192
+ )
1193
+ _check_packages(self.declaration, self.package_release_timestamps)
1194
+
1195
+ def to_wire(self) -> JsonObject:
1196
+ return {
1197
+ "declaration": self.declaration.to_wire(),
1198
+ "image_config_digest": self.image_config_digest,
1199
+ "package_release_timestamps": _timestamp_wire(self.package_release_timestamps),
1200
+ }
1201
+
1202
+
1203
+ @dataclass(frozen=True, slots=True)
1204
+ class RegistryActorRuntimeImageRegistration:
1205
+ schema_version: str
1206
+ runtime_image_release: ActorRuntimeImageMaterialization
1207
+
1208
+ @classmethod
1209
+ def from_wire(cls, value: JsonValue) -> RegistryActorRuntimeImageRegistration:
1210
+ payload = _obj(
1211
+ value,
1212
+ "registry actor runtime image registration",
1213
+ frozenset({"schema_version", "runtime_image_release"}),
1214
+ )
1215
+ return cls(
1216
+ _const(
1217
+ payload["schema_version"],
1218
+ "schema_version",
1219
+ "smr-actor-image-registry-registration-v1",
1220
+ ),
1221
+ ActorRuntimeImageMaterialization.from_wire(payload["runtime_image_release"]),
1222
+ )
1223
+
1224
+ def to_wire(self) -> JsonObject:
1225
+ return {
1226
+ "schema_version": self.schema_version,
1227
+ "runtime_image_release": self.runtime_image_release.to_wire(),
1228
+ }
1229
+
1230
+
1172
1231
  @dataclass(frozen=True, slots=True)
1173
1232
  class ActorRuntimeImageReleaseList:
1174
1233
  schema_version: str
@@ -1229,6 +1288,8 @@ __all__ = [
1229
1288
  "ActorRuntimeImageReleaseArchive",
1230
1289
  "ActorRuntimeImageReleaseDeclaration",
1231
1290
  "ActorRuntimeImageReleaseList",
1291
+ "RegistryActorRuntimeImageRegistration",
1292
+ "RegistryActorRuntimeImageRegistrationRequest",
1232
1293
  "ActorImageCapability",
1233
1294
  "CraftaxScorerImageRelease",
1234
1295
  "CraftaxScorerImageReleaseDeclaration",
@@ -24,6 +24,8 @@ from synth_ai.sdk.research.contracts.image_releases import (
24
24
  ImageReleaseId,
25
25
  ImageReleaseUpload,
26
26
  ImageReleaseUploadRequest,
27
+ RegistryActorRuntimeImageRegistration,
28
+ RegistryActorRuntimeImageRegistrationRequest,
27
29
  RuntimeImageReleaseId,
28
30
  image_release_from_wire,
29
31
  )
@@ -165,6 +167,29 @@ class ImageReleasesAPI:
165
167
  )
166
168
  return _finalize(value, request=request)
167
169
 
170
+ def register_registry_image(
171
+ self,
172
+ request: RegistryActorRuntimeImageRegistrationRequest,
173
+ ) -> RegistryActorRuntimeImageRegistration:
174
+ """Register an org-scoped digest already published to the Synth registry."""
175
+
176
+ if not isinstance(request, RegistryActorRuntimeImageRegistrationRequest):
177
+ raise ValueError("request must be RegistryActorRuntimeImageRegistrationRequest")
178
+ value = self._transport.execute(
179
+ _request(
180
+ "register_customer_actor_registry_image",
181
+ "/smr/v1/image-releases/register-registry",
182
+ body=request.to_wire(),
183
+ )
184
+ )
185
+ result = RegistryActorRuntimeImageRegistration.from_wire(cast(JsonValue, value))
186
+ if (
187
+ result.runtime_image_release.resolved_digest
188
+ != request.declaration.image_manifest_digest
189
+ ):
190
+ raise ValueError("registry image response changed its manifest digest")
191
+ return result
192
+
168
193
  def upload_archive(
169
194
  self,
170
195
  archive_path: str | Path,
@@ -284,6 +309,29 @@ class AsyncImageReleasesAPI:
284
309
  )
285
310
  return _finalize(value, request=request)
286
311
 
312
+ async def register_registry_image(
313
+ self,
314
+ request: RegistryActorRuntimeImageRegistrationRequest,
315
+ ) -> RegistryActorRuntimeImageRegistration:
316
+ """Register an org-scoped digest already published to the Synth registry."""
317
+
318
+ if not isinstance(request, RegistryActorRuntimeImageRegistrationRequest):
319
+ raise ValueError("request must be RegistryActorRuntimeImageRegistrationRequest")
320
+ value = await self._transport.execute(
321
+ _request(
322
+ "register_customer_actor_registry_image",
323
+ "/smr/v1/image-releases/register-registry",
324
+ body=request.to_wire(),
325
+ )
326
+ )
327
+ result = RegistryActorRuntimeImageRegistration.from_wire(cast(JsonValue, value))
328
+ if (
329
+ result.runtime_image_release.resolved_digest
330
+ != request.declaration.image_manifest_digest
331
+ ):
332
+ raise ValueError("registry image response changed its manifest digest")
333
+ return result
334
+
287
335
  async def upload_archive(
288
336
  self,
289
337
  archive_path: str | Path,
@@ -50,6 +50,13 @@ RESEARCH_OPERATIONS = {
50
50
  "/smr/v1/image-releases/upload-url",
51
51
  mutation=True,
52
52
  ),
53
+ _operation(
54
+ "register_customer_actor_registry_image",
55
+ HttpMethod.POST,
56
+ "/smr/v1/image-releases/register-registry",
57
+ mutation=True,
58
+ idempotent=True,
59
+ ),
53
60
  _operation("create_factory", HttpMethod.POST, "/smr/factories", mutation=True),
54
61
  _operation(
55
62
  "provision_research_intern",
@@ -202,6 +202,8 @@ from synth_ai.sdk.research.contracts import (
202
202
  ProjectWorkspaceInputs,
203
203
  ProviderBinding,
204
204
  ProviderPolicy,
205
+ RegistryActorRuntimeImageRegistration,
206
+ RegistryActorRuntimeImageRegistrationRequest,
205
207
  ResearchInternFactoryMembershipResponse,
206
208
  ResearchInternPatchRequest,
207
209
  ResearchInternPolicySet,
@@ -407,6 +409,8 @@ __all__ = [
407
409
  "ActorRuntimeImageReleaseArchive",
408
410
  "ActorRuntimeImageReleaseDeclaration",
409
411
  "ActorRuntimeImageReleaseList",
412
+ "RegistryActorRuntimeImageRegistration",
413
+ "RegistryActorRuntimeImageRegistrationRequest",
410
414
  "ArtifactId",
411
415
  "ActorHarness",
412
416
  "ActorModel",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synth-ai
3
- Version: 0.18.1.dev595
3
+ Version: 0.18.1.dev596
4
4
  Summary: Python SDK and CLI for Synth Managed Research and Research Factory
5
5
  Author-email: Synth AI <josh@usesynth.ai>
6
6
  License-Expression: MIT