synth-ai 0.18.2.dev613__tar.gz → 0.18.2.dev614__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 (256) hide show
  1. {synth_ai-0.18.2.dev613/synth_ai.egg-info → synth_ai-0.18.2.dev614}/PKG-INFO +1 -1
  2. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/pyproject.toml +1 -1
  3. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/README.md +40 -3
  4. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/server.py +2 -0
  5. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/__init__.py +2 -0
  6. synth_ai-0.18.2.dev614/synth_ai/mcp/research/tools/intern_program.py +793 -0
  7. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/research_intern.py +45 -5
  8. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/__init__.py +337 -227
  9. synth_ai-0.18.2.dev614/synth_ai/sdk/research/contracts/intern_grants.py +346 -0
  10. synth_ai-0.18.2.dev614/synth_ai/sdk/research/contracts/intern_program.py +768 -0
  11. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/research_intern.py +200 -13
  12. synth_ai-0.18.2.dev614/synth_ai/sdk/research/intern_program.py +854 -0
  13. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/operations.py +156 -0
  14. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/public.py +278 -152
  15. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/research_intern.py +245 -4
  16. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614/synth_ai.egg-info}/PKG-INFO +1 -1
  17. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai.egg-info/SOURCES.txt +4 -0
  18. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/LICENSE +0 -0
  19. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/MANIFEST.in +0 -0
  20. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/README.md +0 -0
  21. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/setup.cfg +0 -0
  22. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/README.md +0 -0
  23. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/__init__.py +0 -0
  24. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/__main__.py +0 -0
  25. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/AGENTS.md +0 -0
  26. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/README.md +0 -0
  27. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/__init__.py +0 -0
  28. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/__main__.py +0 -0
  29. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/main.py +0 -0
  30. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/research.py +0 -0
  31. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/research_environments.py +0 -0
  32. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/research_image_releases.py +0 -0
  33. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/cli/research_projects.py +0 -0
  34. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/client.py +0 -0
  35. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/README.md +0 -0
  36. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/__init__.py +0 -0
  37. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/auth/__init__.py +0 -0
  38. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/auth/credentials.py +0 -0
  39. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/contracts/__init__.py +0 -0
  40. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/contracts/json_value.py +0 -0
  41. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/contracts/pagination.py +0 -0
  42. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/errors.py +0 -0
  43. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/http/__init__.py +0 -0
  44. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/http/async_transport.py +0 -0
  45. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/http/request.py +0 -0
  46. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/http/retry.py +0 -0
  47. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/http/streaming.py +0 -0
  48. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/http/transport.py +0 -0
  49. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/research/__init__.py +0 -0
  50. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/utils/__init__.py +0 -0
  51. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/utils/env.py +0 -0
  52. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/utils/log_filter.py +0 -0
  53. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/utils/paths.py +0 -0
  54. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/core/utils/urls.py +0 -0
  55. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/__init__.py +0 -0
  56. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/__main__.py +0 -0
  57. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/objective_tools.py +0 -0
  58. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/registry.py +0 -0
  59. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/request_models.py +0 -0
  60. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/approvals.py +0 -0
  61. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/artifacts.py +0 -0
  62. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/datasets.py +0 -0
  63. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/environments.py +0 -0
  64. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/exports.py +0 -0
  65. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/factories.py +0 -0
  66. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/factory_results.py +0 -0
  67. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/files.py +0 -0
  68. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/image_releases.py +0 -0
  69. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/integrations.py +0 -0
  70. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/logs.py +0 -0
  71. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/models.py +0 -0
  72. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/outputs.py +0 -0
  73. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/policy_schemas.py +0 -0
  74. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/progress.py +0 -0
  75. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/project_data.py +0 -0
  76. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/projects.py +0 -0
  77. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/prs.py +0 -0
  78. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/readiness.py +0 -0
  79. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/repos.py +0 -0
  80. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/resources.py +0 -0
  81. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/runs.py +0 -0
  82. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/trained_models.py +0 -0
  83. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/usage.py +0 -0
  84. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/visuals.py +0 -0
  85. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
  86. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/py.typed +0 -0
  87. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/README.md +0 -0
  88. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/__init__.py +0 -0
  89. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/pagination.py +0 -0
  90. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/__init__.py +0 -0
  91. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/_internal/__init__.py +0 -0
  92. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/_internal/crypto.py +0 -0
  93. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/_internal/env.py +0 -0
  94. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/_internal/urls.py +0 -0
  95. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/account.py +0 -0
  96. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/advanced.py +0 -0
  97. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/advanced_factories.py +0 -0
  98. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/advanced_swarms.py +0 -0
  99. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/artifacts.py +0 -0
  100. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/auth.py +0 -0
  101. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/client.py +0 -0
  102. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
  103. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
  104. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
  105. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/_wire.py +0 -0
  106. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/activity.py +0 -0
  107. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
  108. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
  109. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/billing.py +0 -0
  110. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
  111. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
  112. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
  113. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
  114. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/common.py +0 -0
  115. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
  116. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
  117. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
  118. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/economics.py +0 -0
  119. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
  120. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/environments.py +0 -0
  121. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/evidence.py +0 -0
  122. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/factories.py +0 -0
  123. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
  124. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
  125. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
  126. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
  127. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/failure.py +0 -0
  128. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
  129. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/limit_evidence.py +0 -0
  130. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
  131. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
  132. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/project.py +0 -0
  133. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/project_data.py +0 -0
  134. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
  135. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
  136. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
  137. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/projects.py +0 -0
  138. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/promotions.py +0 -0
  139. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
  140. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_control.py +0 -0
  141. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
  142. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_events.py +0 -0
  143. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
  144. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
  145. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
  146. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_state.py +0 -0
  147. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
  148. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
  149. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
  150. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
  151. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
  152. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
  153. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
  154. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
  155. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
  156. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
  157. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
  158. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
  159. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
  160. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
  161. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
  162. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
  163. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
  164. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
  165. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
  166. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
  167. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
  168. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
  169. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
  170. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
  171. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
  172. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
  173. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
  174. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
  175. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
  176. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/status.py +0 -0
  177. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/swarms.py +0 -0
  178. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/tag.py +0 -0
  179. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/traces.py +0 -0
  180. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/transcript.py +0 -0
  181. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/types.py +0 -0
  182. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/usage.py +0 -0
  183. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/visuals.py +0 -0
  184. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
  185. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/wire_models_README.md +0 -0
  186. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/work_products.py +0 -0
  187. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
  188. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/economics.py +0 -0
  189. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/efforts.py +0 -0
  190. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/environments.py +0 -0
  191. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/errors.py +0 -0
  192. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/events.py +0 -0
  193. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/experiments.py +0 -0
  194. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/facade.py +0 -0
  195. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/factories.py +0 -0
  196. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/factory_storage.py +0 -0
  197. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/image_releases.py +0 -0
  198. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/knowledge.py +0 -0
  199. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/models.py +0 -0
  200. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/project_data.py +0 -0
  201. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/project_deliveries.py +0 -0
  202. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/project_workspaces.py +0 -0
  203. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/projects.py +0 -0
  204. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/readouts.py +0 -0
  205. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/secrets.py +0 -0
  206. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/README.md +0 -0
  207. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/__init__.py +0 -0
  208. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/_base.py +0 -0
  209. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
  210. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
  211. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/approvals.py +0 -0
  212. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/billing.py +0 -0
  213. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/client.py +0 -0
  214. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
  215. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/config.py +0 -0
  216. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/cost.py +0 -0
  217. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/datasets.py +0 -0
  218. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/dev_environments.py +0 -0
  219. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/environments.py +0 -0
  220. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/exports.py +0 -0
  221. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/factories.py +0 -0
  222. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
  223. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/files.py +0 -0
  224. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/github.py +0 -0
  225. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/image_releases.py +0 -0
  226. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/images.py +0 -0
  227. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/logs.py +0 -0
  228. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/models.py +0 -0
  229. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/outputs.py +0 -0
  230. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/progress.py +0 -0
  231. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/project.py +0 -0
  232. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/projects.py +0 -0
  233. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/prs.py +0 -0
  234. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/readiness.py +0 -0
  235. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/repositories.py +0 -0
  236. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/runs.py +0 -0
  237. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/secrets.py +0 -0
  238. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/setup.py +0 -0
  239. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/tag.py +0 -0
  240. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/trained_models.py +0 -0
  241. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/transport.py +0 -0
  242. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/usage.py +0 -0
  243. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/work_products.py +0 -0
  244. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
  245. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/swarms.py +0 -0
  246. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/traces.py +0 -0
  247. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/transport/__init__.py +0 -0
  248. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/transport/http.py +0 -0
  249. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/transport/pagination.py +0 -0
  250. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/version.py +0 -0
  251. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/visuals.py +0 -0
  252. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai/sdk/research/wiki.py +0 -0
  253. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai.egg-info/dependency_links.txt +0 -0
  254. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai.egg-info/entry_points.txt +0 -0
  255. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/synth_ai.egg-info/requires.txt +0 -0
  256. {synth_ai-0.18.2.dev613 → synth_ai-0.18.2.dev614}/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.2.dev613
3
+ Version: 0.18.2.dev614
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.2.dev613"
3
+ version = "0.18.2.dev614"
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"
@@ -95,16 +95,53 @@ sessions; they never address the singleton Async resource implicitly.
95
95
 
96
96
  Async Intern control plane:
97
97
  - `intern_async_ensure` and `intern_async_get` address the organization's one
98
- long-lived Async Intern runtime
99
- - `intern_async_command` preserves the exact durable command envelope
98
+ long-lived Async Intern runtime. Ensure accepts day/month spend ceilings via
99
+ `budget.maximum_daily_cost_cents` / `budget.maximum_monthly_cost_cents` or
100
+ top-level kwargs of the same names; omitted ceilings get server defaults.
101
+ - `intern_async_command` preserves the exact durable command envelope (including
102
+ `request_spine_handoff` / `advance_spine`)
100
103
  - `intern_async_send`, `intern_async_intervene`,
101
104
  `intern_async_redirect_objective`, and `intern_async_request_checkpoint`
102
105
  submit typed instructions to the same backend inbox
103
106
  - `intern_async_pause`, `intern_async_resume`, `intern_async_cancel`, and
104
- `intern_async_provide_input` expose explicit state-machine controls
107
+ `intern_async_provide_input` expose explicit state-machine controls. Pause
108
+ frees the sticky exe.dev host lease; resume reacquires it.
109
+ - `intern_async_get` projections include `open_judgment_items` and `effort_work`
110
+ (ask-and-continue asks and per-Effort work summaries), plus `spend` and
111
+ `host_lease`. The spend totals are the same ones the capability gate and the
112
+ spend sweeper read, host idle cost included, so what a caller sees is what
113
+ actually blocks work; `host_lease.reused` distinguishes a lease reacquired on
114
+ resume from a freshly provisioned host
105
115
  - `intern_async_events` replays a bounded event page and `intern_async_tail`
106
116
  waits for a bounded number of SSE events
107
117
 
118
+ Intern research program (Effort-first):
119
+ - `intern_effort_board` lists Efforts as board rows -- the Effort plus its open
120
+ objective/task/question counts -- and `intern_effort_detail` rolls one Effort
121
+ up into Progress / Results / Experiments / Knowledge. The runtime block on the
122
+ detail is secondary ops chrome (cycle, wake, cursor, spend, host lease), not
123
+ the product surface.
124
+ - `intern_objective_list` / `_create` / `_get` / `_update`,
125
+ `intern_milestone_list` / `_create` / `_transition`, and
126
+ `intern_task_list` / `_create` / `_update` address the Intern's own
127
+ Effort-bound planner store. The Effort is a required argument on every create:
128
+ a row cannot exist without its binding, and the binding is immutable.
129
+ - `intern_progress_claim_create` folds a finished run's result back into the
130
+ objective that motivated it; `intern_objective_link_create` records a
131
+ *reference* from an Intern objective to an SMR-owned run, report, work
132
+ product, or experiment. Neither writes the target.
133
+ - Effort lifecycle itself is not duplicated here. Use the existing
134
+ `research_list_factory_efforts`, `research_get_effort`, and
135
+ `research_patch_effort`; these are the Async program verbs.
136
+ - `intern_memory_search` / `intern_memory_get` read the Intern's own history.
137
+ They return the retrieval payload with no wrapper, field for field with the
138
+ Intern's own memory tools -- so an operator inspecting memory sees exactly
139
+ what the Intern saw, rather than a second description of the same records.
140
+ - The Intern is a client of the swarm plane, never its owner. Kickoff and poll
141
+ stay on `research_trigger_run` / `research_get_run` / `research_get_swarm_*`.
142
+ No tool here plans a swarm's task graph, and none should be added that does --
143
+ `synth_ai.sdk.research.intern_grants` refuses those names outright.
144
+
108
145
  These tools are thin adapters over `client.intern.async_`; they do not call
109
146
  HTTP directly and do not contain reducer logic. A command receipt proves
110
147
  durable admission, not completion. Callers retain command/idempotency identity
@@ -47,6 +47,7 @@ from synth_ai.mcp.research.tools.factory_results import (
47
47
  from synth_ai.mcp.research.tools.files import build_file_tools
48
48
  from synth_ai.mcp.research.tools.image_releases import build_image_release_tools
49
49
  from synth_ai.mcp.research.tools.integrations import build_integration_tools
50
+ from synth_ai.mcp.research.tools.intern_program import build_intern_program_tools
50
51
  from synth_ai.mcp.research.tools.logs import build_log_tools
51
52
  from synth_ai.mcp.research.tools.models import build_model_tools
52
53
  from synth_ai.mcp.research.tools.outputs import build_output_tools
@@ -480,6 +481,7 @@ class ResearchMcpServer:
480
481
  *build_output_tools(self),
481
482
  *build_readiness_tools(self),
482
483
  *build_research_intern_tools(self._core_client_from_args),
484
+ *build_intern_program_tools(self._core_client_from_args),
483
485
  *build_resource_tools(self),
484
486
  *build_run_tools(self),
485
487
  *build_progress_tools(self),
@@ -6,6 +6,7 @@ from synth_ai.mcp.research.tools.exports import build_export_tools
6
6
  from synth_ai.mcp.research.tools.factories import build_factory_tools
7
7
  from synth_ai.mcp.research.tools.files import build_file_tools
8
8
  from synth_ai.mcp.research.tools.image_releases import build_image_release_tools
9
+ from synth_ai.mcp.research.tools.intern_program import build_intern_program_tools
9
10
  from synth_ai.mcp.research.tools.models import build_model_tools
10
11
  from synth_ai.mcp.research.tools.outputs import build_output_tools
11
12
  from synth_ai.mcp.research.tools.progress import build_progress_tools
@@ -26,6 +27,7 @@ __all__ = [
26
27
  "build_factory_tools",
27
28
  "build_file_tools",
28
29
  "build_image_release_tools",
30
+ "build_intern_program_tools",
29
31
  "build_model_tools",
30
32
  "build_output_tools",
31
33
  "build_progress_tools",