runloop_api_client 1.20.3__tar.gz → 1.21.0__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 (457) hide show
  1. runloop_api_client-1.21.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/CHANGELOG.md +16 -0
  3. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/PKG-INFO +1 -1
  4. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/api.md +15 -0
  5. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/pyproject.toml +1 -1
  6. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_client.py +38 -0
  7. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_files.py +1 -1
  8. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_models.py +80 -0
  9. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_version.py +1 -1
  10. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/__init__.py +14 -0
  11. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/devboxes/devboxes.py +101 -0
  12. runloop_api_client-1.21.0/src/runloop_api_client/resources/pty.py +418 -0
  13. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/__init__.py +5 -0
  14. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/object_view.py +4 -1
  15. runloop_api_client-1.21.0/src/runloop_api_client/types/pty_connect_params.py +23 -0
  16. runloop_api_client-1.21.0/src/runloop_api_client/types/pty_connect_view.py +27 -0
  17. runloop_api_client-1.21.0/src/runloop_api_client/types/pty_control_params.py +17 -0
  18. runloop_api_client-1.21.0/src/runloop_api_client/types/pty_control_result_view.py +13 -0
  19. runloop_api_client-1.21.0/src/runloop_api_client/types/pty_tunnel_view.py +21 -0
  20. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_devboxes.py +77 -0
  21. runloop_api_client-1.21.0/tests/api_resources/test_pty.py +216 -0
  22. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/conftest.py +10 -1
  23. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_models.py +57 -3
  24. runloop_api_client-1.20.3/.release-please-manifest.json +0 -3
  25. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/.gitignore +0 -0
  26. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/CONTRIBUTING.md +0 -0
  27. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/EXAMPLES.md +0 -0
  28. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/LICENSE +0 -0
  29. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/README-SDK.md +0 -0
  30. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/README.md +0 -0
  31. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/SECURITY.md +0 -0
  32. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/bin/check-release-environment +0 -0
  33. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/bin/publish-pypi +0 -0
  34. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/__init__.py +0 -0
  35. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/_harness.py +0 -0
  36. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/blueprint_with_build_context.py +0 -0
  37. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/devbox_from_blueprint_lifecycle.py +0 -0
  38. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/devbox_snapshot_resume.py +0 -0
  39. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/devbox_snapshots.py +0 -0
  40. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/devbox_tunnel.py +0 -0
  41. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/example_types.py +0 -0
  42. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/mcp_github_tools.py +0 -0
  43. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/registry.py +0 -0
  44. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/examples/secrets_with_devbox.py +0 -0
  45. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/release-please-config.json +0 -0
  46. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/requirements-dev.lock +0 -0
  47. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop/lib/.keep +0 -0
  48. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/__init__.py +0 -0
  49. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_base_client.py +0 -0
  50. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_compat.py +0 -0
  51. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_constants.py +0 -0
  52. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_exceptions.py +0 -0
  53. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_qs.py +0 -0
  54. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_resource.py +0 -0
  55. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_response.py +0 -0
  56. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_streaming.py +0 -0
  57. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_types.py +0 -0
  58. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  59. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_compat.py +0 -0
  60. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
  61. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_json.py +0 -0
  62. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  63. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_path.py +0 -0
  64. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  65. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  66. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  67. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  68. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  69. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  70. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  71. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  72. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/_utils/_validation.py +0 -0
  73. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/lib/.keep +0 -0
  74. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/lib/__init__.py +0 -0
  75. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/lib/_ignore.py +0 -0
  76. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/lib/context_loader.py +0 -0
  77. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/lib/polling.py +0 -0
  78. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  79. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/lib/wait_for_status.py +0 -0
  80. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/pagination.py +0 -0
  81. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/py.typed +0 -0
  82. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/agents.py +0 -0
  83. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/apikeys.py +0 -0
  84. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/axons/__init__.py +0 -0
  85. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/axons/axons.py +0 -0
  86. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/axons/events.py +0 -0
  87. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/axons/sql.py +0 -0
  88. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/benchmark_jobs.py +0 -0
  89. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/benchmark_runs.py +0 -0
  90. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/benchmarks.py +0 -0
  91. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  92. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  93. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  94. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  95. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  96. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/gateway_configs.py +0 -0
  97. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/mcp_configs.py +0 -0
  98. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/network_policies.py +0 -0
  99. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/objects.py +0 -0
  100. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/restricted_keys.py +0 -0
  101. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  102. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  103. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -0
  104. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  105. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/resources/secrets.py +0 -0
  106. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/__init__.py +0 -0
  107. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/_helpers.py +0 -0
  108. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/_types.py +0 -0
  109. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/agent.py +0 -0
  110. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_.py +0 -0
  111. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_agent.py +0 -0
  112. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_axon.py +0 -0
  113. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_benchmark.py +0 -0
  114. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_benchmark_run.py +0 -0
  115. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_blueprint.py +0 -0
  116. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_devbox.py +0 -0
  117. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_execution.py +0 -0
  118. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_execution_result.py +0 -0
  119. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_gateway_config.py +0 -0
  120. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_mcp_config.py +0 -0
  121. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_network_policy.py +0 -0
  122. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_scenario.py +0 -0
  123. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_scenario_builder.py +0 -0
  124. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_scenario_run.py +0 -0
  125. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_scorer.py +0 -0
  126. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_secret.py +0 -0
  127. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_snapshot.py +0 -0
  128. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/async_storage_object.py +0 -0
  129. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/axon.py +0 -0
  130. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/benchmark.py +0 -0
  131. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/benchmark_run.py +0 -0
  132. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/blueprint.py +0 -0
  133. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/devbox.py +0 -0
  134. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/execution.py +0 -0
  135. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/execution_result.py +0 -0
  136. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/gateway_config.py +0 -0
  137. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/mcp_config.py +0 -0
  138. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/network_policy.py +0 -0
  139. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/scenario.py +0 -0
  140. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/scenario_builder.py +0 -0
  141. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/scenario_run.py +0 -0
  142. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/scorer.py +0 -0
  143. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/secret.py +0 -0
  144. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/snapshot.py +0 -0
  145. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/storage_object.py +0 -0
  146. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/sdk/sync.py +0 -0
  147. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/agent_create_params.py +0 -0
  148. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/agent_devbox_counts_view.py +0 -0
  149. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/agent_list_params.py +0 -0
  150. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/agent_list_public_params.py +0 -0
  151. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/agent_list_view.py +0 -0
  152. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/agent_view.py +0 -0
  153. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/api_key_created_view.py +0 -0
  154. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/apikey_create_params.py +0 -0
  155. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axon_create_params.py +0 -0
  156. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axon_event_view.py +0 -0
  157. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axon_list_params.py +0 -0
  158. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axon_list_view.py +0 -0
  159. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axon_publish_params.py +0 -0
  160. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axon_subscribe_sse_params.py +0 -0
  161. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axon_view.py +0 -0
  162. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/__init__.py +0 -0
  163. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/axon_event_list_view.py +0 -0
  164. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/event_list_params.py +0 -0
  165. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_batch_params.py +0 -0
  166. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_batch_result_view.py +0 -0
  167. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_column_meta_view.py +0 -0
  168. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_query_params.py +0 -0
  169. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_query_result_view.py +0 -0
  170. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_result_meta_view.py +0 -0
  171. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_statement_params.py +0 -0
  172. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_step_error_view.py +0 -0
  173. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/axons/sql_step_result_view.py +0 -0
  174. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  175. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  176. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_job_create_params.py +0 -0
  177. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_job_list_params.py +0 -0
  178. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_job_list_view.py +0 -0
  179. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_job_view.py +0 -0
  180. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  181. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  182. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_run_list_params.py +0 -0
  183. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_run_list_scenario_runs_params.py +0 -0
  184. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  185. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  186. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  187. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  188. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_update_scenarios_params.py +0 -0
  189. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  190. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  191. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  192. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  193. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +0 -0
  194. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  195. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  196. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_list_public_params.py +0 -0
  197. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  198. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  199. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  200. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  201. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  202. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  203. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  204. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  205. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_enable_tunnel_params.py +0 -0
  206. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  207. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_execute_params.py +0 -0
  208. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  209. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  210. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  211. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  212. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  213. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  214. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  215. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_resource_usage_view.py +0 -0
  216. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_send_std_in_result.py +0 -0
  217. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_shutdown_params.py +0 -0
  218. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  219. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  220. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  221. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  222. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  223. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  224. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  225. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_wait_for_command_params.py +0 -0
  226. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  227. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  228. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  229. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  230. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  231. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  232. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  233. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  234. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
  235. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  236. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/execution_send_std_in_params.py +0 -0
  237. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
  238. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
  239. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
  240. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  241. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/gateway_config_create_params.py +0 -0
  242. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/gateway_config_list_params.py +0 -0
  243. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/gateway_config_list_view.py +0 -0
  244. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/gateway_config_update_params.py +0 -0
  245. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/gateway_config_view.py +0 -0
  246. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/input_context.py +0 -0
  247. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  248. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
  249. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/inspection_source_param.py +0 -0
  250. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/mcp_config_create_params.py +0 -0
  251. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/mcp_config_list_params.py +0 -0
  252. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/mcp_config_list_view.py +0 -0
  253. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/mcp_config_update_params.py +0 -0
  254. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/mcp_config_view.py +0 -0
  255. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/network_policy_create_params.py +0 -0
  256. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/network_policy_list_params.py +0 -0
  257. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/network_policy_list_view.py +0 -0
  258. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/network_policy_update_params.py +0 -0
  259. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/network_policy_view.py +0 -0
  260. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/object_create_params.py +0 -0
  261. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/object_download_params.py +0 -0
  262. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/object_download_url_view.py +0 -0
  263. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/object_list_params.py +0 -0
  264. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/object_list_public_params.py +0 -0
  265. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/object_list_view.py +0 -0
  266. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/publish_result_view.py +0 -0
  267. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/restricted_key_create_params.py +0 -0
  268. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/restricted_key_created_view.py +0 -0
  269. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  270. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  271. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  272. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  273. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  274. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  275. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  276. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  277. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  278. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
  279. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  280. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  281. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  282. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  283. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  284. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  285. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  286. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  287. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  288. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  289. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scope_entry_view.py +0 -0
  290. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scope_entry_view_param.py +0 -0
  291. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  292. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  293. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  294. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
  295. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  296. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  297. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  298. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  299. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/secret_list_params.py +0 -0
  300. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
  301. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  302. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/secret_view.py +0 -0
  303. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  304. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  305. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/agent_mount.py +0 -0
  306. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/agent_source.py +0 -0
  307. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/broker_mount.py +0 -0
  308. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  309. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  310. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/mount.py +0 -0
  311. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/object_mount.py +0 -0
  312. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared/run_profile.py +0 -0
  313. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  314. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  315. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/agent_mount.py +0 -0
  316. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/agent_source.py +0 -0
  317. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/broker_mount.py +0 -0
  318. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  319. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  320. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/mount.py +0 -0
  321. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/object_mount.py +0 -0
  322. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
  323. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/src/runloop_api_client/types/tunnel_view.py +0 -0
  324. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/__init__.py +0 -0
  325. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/__init__.py +0 -0
  326. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/axons/__init__.py +0 -0
  327. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/axons/test_events.py +0 -0
  328. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/axons/test_sql.py +0 -0
  329. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/devboxes/__init__.py +0 -0
  330. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  331. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  332. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  333. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/scenarios/__init__.py +0 -0
  334. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  335. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/scenarios/test_scorers.py +0 -0
  336. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_agents.py +0 -0
  337. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_apikeys.py +0 -0
  338. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_axons.py +0 -0
  339. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_benchmark_jobs.py +0 -0
  340. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_benchmark_runs.py +0 -0
  341. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_benchmarks.py +0 -0
  342. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_blueprints.py +0 -0
  343. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_gateway_configs.py +0 -0
  344. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_mcp_configs.py +0 -0
  345. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_network_policies.py +0 -0
  346. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_objects.py +0 -0
  347. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_restricted_keys.py +0 -0
  348. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_scenarios.py +0 -0
  349. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/api_resources/test_secrets.py +0 -0
  350. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sample_file.txt +0 -0
  351. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/__init__.py +0 -0
  352. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/async_devbox/__init__.py +0 -0
  353. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/async_devbox/conftest.py +0 -0
  354. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/async_devbox/test_core.py +0 -0
  355. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/async_devbox/test_edge_cases.py +0 -0
  356. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/async_devbox/test_interfaces.py +0 -0
  357. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/async_devbox/test_streaming.py +0 -0
  358. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/conftest.py +0 -0
  359. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/devbox/__init__.py +0 -0
  360. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/devbox/conftest.py +0 -0
  361. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/devbox/test_core.py +0 -0
  362. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/devbox/test_edge_cases.py +0 -0
  363. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/devbox/test_interfaces.py +0 -0
  364. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/devbox/test_streaming.py +0 -0
  365. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_agent.py +0 -0
  366. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_agent.py +0 -0
  367. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_axon.py +0 -0
  368. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_benchmark.py +0 -0
  369. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_benchmark_run.py +0 -0
  370. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_blueprint.py +0 -0
  371. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_execution.py +0 -0
  372. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_execution_result.py +0 -0
  373. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_gateway_config.py +0 -0
  374. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_network_policy.py +0 -0
  375. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_ops.py +0 -0
  376. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_scenario.py +0 -0
  377. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_scenario_builder.py +0 -0
  378. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_scenario_run.py +0 -0
  379. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_scorer.py +0 -0
  380. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_snapshot.py +0 -0
  381. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_async_storage_object.py +0 -0
  382. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_axon.py +0 -0
  383. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_benchmark.py +0 -0
  384. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_benchmark_run.py +0 -0
  385. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_blueprint.py +0 -0
  386. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_execution.py +0 -0
  387. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_execution_result.py +0 -0
  388. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_gateway_config.py +0 -0
  389. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_helpers.py +0 -0
  390. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_network_policy.py +0 -0
  391. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_ops.py +0 -0
  392. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_scenario.py +0 -0
  393. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_scenario_builder.py +0 -0
  394. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_scenario_run.py +0 -0
  395. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_scorer.py +0 -0
  396. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_snapshot.py +0 -0
  397. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/sdk/test_storage_object.py +0 -0
  398. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/README.md +0 -0
  399. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/__init__.py +0 -0
  400. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/conftest.py +0 -0
  401. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/examples/__init__.py +0 -0
  402. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/examples/test_examples.py +0 -0
  403. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/README.md +0 -0
  404. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/__init__.py +0 -0
  405. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/conftest.py +0 -0
  406. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_agent.py +0 -0
  407. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_agent.py +0 -0
  408. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_axon.py +0 -0
  409. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_benchmark.py +0 -0
  410. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_blueprint.py +0 -0
  411. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_devbox.py +0 -0
  412. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_gateway_config.py +0 -0
  413. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_network_policy.py +0 -0
  414. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_scenario.py +0 -0
  415. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_scorer.py +0 -0
  416. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_sdk.py +0 -0
  417. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_secret.py +0 -0
  418. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
  419. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_async_storage_object.py +0 -0
  420. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_axon.py +0 -0
  421. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_benchmark.py +0 -0
  422. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_blueprint.py +0 -0
  423. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_devbox.py +0 -0
  424. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_gateway_config.py +0 -0
  425. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_mcp_config.py +0 -0
  426. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_network_policy.py +0 -0
  427. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_scenario.py +0 -0
  428. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_scorer.py +0 -0
  429. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_sdk.py +0 -0
  430. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_secret.py +0 -0
  431. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_snapshot.py +0 -0
  432. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/sdk/test_storage_object.py +0 -0
  433. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/test_blueprints.py +0 -0
  434. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/test_devboxes.py +0 -0
  435. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/test_executions.py +0 -0
  436. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
  437. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/test_snapshots.py +0 -0
  438. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/smoketests/utils.py +0 -0
  439. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_client.py +0 -0
  440. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_command_id.py +0 -0
  441. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_extract_files.py +0 -0
  442. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_files.py +0 -0
  443. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_polling.py +0 -0
  444. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_qs.py +0 -0
  445. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_required_args.py +0 -0
  446. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_response.py +0 -0
  447. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_shared_pool.py +0 -0
  448. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_streaming.py +0 -0
  449. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_transform.py +0 -0
  450. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_utils/test_context_loader.py +0 -0
  451. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_utils/test_datetime_parse.py +0 -0
  452. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_utils/test_json.py +0 -0
  453. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_utils/test_path.py +0 -0
  454. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_utils/test_proxy.py +0 -0
  455. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/test_utils/test_typing.py +0 -0
  456. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/tests/utils.py +0 -0
  457. {runloop_api_client-1.20.3 → runloop_api_client-1.21.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.21.0"
3
+ }
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.21.0 (2026-05-13)
4
+
5
+ Full Changelog: [v1.20.3...v1.21.0](https://github.com/runloopai/api-client-python/compare/v1.20.3...v1.21.0)
6
+
7
+ ### Features
8
+
9
+ * **internal/types:** support eagerly validating pydantic iterators ([f089d05](https://github.com/runloopai/api-client-python/commit/f089d05c5e00c2ba980d0afdea79ed026242a174))
10
+ * **metadata:** add object metadata viewing, discovery, and validation ([#9124](https://github.com/runloopai/api-client-python/issues/9124)) ([ba0b5dc](https://github.com/runloopai/api-client-python/commit/ba0b5dc873a47073c453b168fe4d966754cccc0e))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **client:** add missing f-string prefix in file type error message ([930b1e2](https://github.com/runloopai/api-client-python/commit/930b1e2d169a291415007f2897fec5a410ecf993))
16
+ * update openapi.stainless.yaml for PTY server methods ([#9218](https://github.com/runloopai/api-client-python/issues/9218)) ([ac1cb22](https://github.com/runloopai/api-client-python/commit/ac1cb2264b8e39da8aa65d8fdcd4595bce55def6))
17
+ * update types for pty control, use int instead of str ([#9235](https://github.com/runloopai/api-client-python/issues/9235)) ([7ceb2bf](https://github.com/runloopai/api-client-python/commit/7ceb2bf09c3241a27892fbab2272d63ef76b1a8a))
18
+
3
19
  ## 1.20.3 (2026-05-08)
4
20
 
5
21
  Full Changelog: [v1.20.2...v1.20.3](https://github.com/runloopai/api-client-python/compare/v1.20.2...v1.20.3)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 1.20.3
3
+ Version: 1.21.0
4
4
  Summary: The official Python library for the runloop API
5
5
  Project-URL: Homepage, https://github.com/runloopai/api-client-python
6
6
  Project-URL: Repository, https://github.com/runloopai/api-client-python
@@ -198,6 +198,7 @@ from runloop_api_client.types import (
198
198
  DevboxSnapshotListView,
199
199
  DevboxSnapshotView,
200
200
  DevboxView,
201
+ PtyTunnelView,
201
202
  TunnelView,
202
203
  DevboxCreateSSHKeyResponse,
203
204
  DevboxReadFileContentsResponse,
@@ -211,6 +212,7 @@ Methods:
211
212
  - <code title="get /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
212
213
  - <code title="post /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
213
214
  - <code title="get /v1/devboxes">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">SyncDevboxesCursorIDPage[DevboxView]</a></code>
215
+ - <code title="post /v1/devboxes/{id}/create_pty_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_pty_tunnel</a>(id) -> <a href="./src/runloop_api_client/types/pty_tunnel_view.py">PtyTunnelView</a></code>
214
216
  - <code title="post /v1/devboxes/{id}/create_ssh_key">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_ssh_key</a>(id) -> <a href="./src/runloop_api_client/types/devbox_create_ssh_key_response.py">DevboxCreateSSHKeyResponse</a></code>
215
217
  - <code title="post /v1/devboxes/disk_snapshots/{id}/delete">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">delete_disk_snapshot</a>(id) -> object</code>
216
218
  - <code title="post /v1/devboxes/{id}/download_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">download_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_download_file_params.py">params</a>) -> BinaryAPIResponse</code>
@@ -278,6 +280,19 @@ Methods:
278
280
  - <code title="get /v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stderr_updates">client.devboxes.executions.<a href="./src/runloop_api_client/resources/devboxes/executions.py">stream_stderr_updates</a>(execution_id, \*, devbox_id, \*\*<a href="src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/execution_update_chunk.py">ExecutionUpdateChunk</a></code>
279
281
  - <code title="get /v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stdout_updates">client.devboxes.executions.<a href="./src/runloop_api_client/resources/devboxes/executions.py">stream_stdout_updates</a>(execution_id, \*, devbox_id, \*\*<a href="src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/execution_update_chunk.py">ExecutionUpdateChunk</a></code>
280
282
 
283
+ # Pty
284
+
285
+ Types:
286
+
287
+ ```python
288
+ from runloop_api_client.types import PtyConnectView, PtyControlParams, PtyControlResultView
289
+ ```
290
+
291
+ Methods:
292
+
293
+ - <code title="get /pty/{session_name}">client.pty.<a href="./src/runloop_api_client/resources/pty.py">connect</a>(session_name, \*\*<a href="src/runloop_api_client/types/pty_connect_params.py">params</a>) -> <a href="./src/runloop_api_client/types/pty_connect_view.py">PtyConnectView</a></code>
294
+ - <code title="post /pty/{session_name}/control">client.pty.<a href="./src/runloop_api_client/resources/pty.py">control</a>(session_name, \*\*<a href="src/runloop_api_client/types/pty_control_params.py">params</a>) -> <a href="./src/runloop_api_client/types/pty_control_result_view.py">PtyControlResultView</a></code>
295
+
281
296
  # Scenarios
282
297
 
283
298
  Types:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "1.20.3"
3
+ version = "1.21.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -36,6 +36,7 @@ from ._base_client import (
36
36
 
37
37
  if TYPE_CHECKING:
38
38
  from .resources import (
39
+ pty,
39
40
  axons,
40
41
  agents,
41
42
  apikeys,
@@ -52,6 +53,7 @@ if TYPE_CHECKING:
52
53
  restricted_keys,
53
54
  network_policies,
54
55
  )
56
+ from .resources.pty import PtyResource, AsyncPtyResource
55
57
  from .resources.agents import AgentsResource, AsyncAgentsResource
56
58
  from .resources.apikeys import ApikeysResource, AsyncApikeysResource
57
59
  from .resources.objects import ObjectsResource, AsyncObjectsResource
@@ -184,6 +186,12 @@ class Runloop(SyncAPIClient):
184
186
 
185
187
  return DevboxesResource(self)
186
188
 
189
+ @cached_property
190
+ def pty(self) -> PtyResource:
191
+ from .resources.pty import PtyResource
192
+
193
+ return PtyResource(self)
194
+
187
195
  @cached_property
188
196
  def scenarios(self) -> ScenariosResource:
189
197
  from .resources.scenarios import ScenariosResource
@@ -466,6 +474,12 @@ class AsyncRunloop(AsyncAPIClient):
466
474
 
467
475
  return AsyncDevboxesResource(self)
468
476
 
477
+ @cached_property
478
+ def pty(self) -> AsyncPtyResource:
479
+ from .resources.pty import AsyncPtyResource
480
+
481
+ return AsyncPtyResource(self)
482
+
469
483
  @cached_property
470
484
  def scenarios(self) -> AsyncScenariosResource:
471
485
  from .resources.scenarios import AsyncScenariosResource
@@ -683,6 +697,12 @@ class RunloopWithRawResponse:
683
697
 
684
698
  return DevboxesResourceWithRawResponse(self._client.devboxes)
685
699
 
700
+ @cached_property
701
+ def pty(self) -> pty.PtyResourceWithRawResponse:
702
+ from .resources.pty import PtyResourceWithRawResponse
703
+
704
+ return PtyResourceWithRawResponse(self._client.pty)
705
+
686
706
  @cached_property
687
707
  def scenarios(self) -> scenarios.ScenariosResourceWithRawResponse:
688
708
  from .resources.scenarios import ScenariosResourceWithRawResponse
@@ -780,6 +800,12 @@ class AsyncRunloopWithRawResponse:
780
800
 
781
801
  return AsyncDevboxesResourceWithRawResponse(self._client.devboxes)
782
802
 
803
+ @cached_property
804
+ def pty(self) -> pty.AsyncPtyResourceWithRawResponse:
805
+ from .resources.pty import AsyncPtyResourceWithRawResponse
806
+
807
+ return AsyncPtyResourceWithRawResponse(self._client.pty)
808
+
783
809
  @cached_property
784
810
  def scenarios(self) -> scenarios.AsyncScenariosResourceWithRawResponse:
785
811
  from .resources.scenarios import AsyncScenariosResourceWithRawResponse
@@ -877,6 +903,12 @@ class RunloopWithStreamedResponse:
877
903
 
878
904
  return DevboxesResourceWithStreamingResponse(self._client.devboxes)
879
905
 
906
+ @cached_property
907
+ def pty(self) -> pty.PtyResourceWithStreamingResponse:
908
+ from .resources.pty import PtyResourceWithStreamingResponse
909
+
910
+ return PtyResourceWithStreamingResponse(self._client.pty)
911
+
880
912
  @cached_property
881
913
  def scenarios(self) -> scenarios.ScenariosResourceWithStreamingResponse:
882
914
  from .resources.scenarios import ScenariosResourceWithStreamingResponse
@@ -974,6 +1006,12 @@ class AsyncRunloopWithStreamedResponse:
974
1006
 
975
1007
  return AsyncDevboxesResourceWithStreamingResponse(self._client.devboxes)
976
1008
 
1009
+ @cached_property
1010
+ def pty(self) -> pty.AsyncPtyResourceWithStreamingResponse:
1011
+ from .resources.pty import AsyncPtyResourceWithStreamingResponse
1012
+
1013
+ return AsyncPtyResourceWithStreamingResponse(self._client.pty)
1014
+
977
1015
  @cached_property
978
1016
  def scenarios(self) -> scenarios.AsyncScenariosResourceWithStreamingResponse:
979
1017
  from .resources.scenarios import AsyncScenariosResourceWithStreamingResponse
@@ -99,7 +99,7 @@ async def async_to_httpx_files(files: RequestFiles | None) -> HttpxRequestFiles
99
99
  elif is_sequence_t(files):
100
100
  files = [(key, await _async_transform_file(file)) for key, file in files]
101
101
  else:
102
- raise TypeError("Unexpected file type input {type(files)}, expected mapping or sequence")
102
+ raise TypeError(f"Unexpected file type input {type(files)}, expected mapping or sequence")
103
103
 
104
104
  return files
105
105
 
@@ -25,7 +25,9 @@ from typing_extensions import (
25
25
  ClassVar,
26
26
  Protocol,
27
27
  Required,
28
+ Annotated,
28
29
  ParamSpec,
30
+ TypeAlias,
29
31
  TypedDict,
30
32
  TypeGuard,
31
33
  final,
@@ -79,7 +81,15 @@ from ._compat import (
79
81
  from ._constants import RAW_RESPONSE_HEADER
80
82
 
81
83
  if TYPE_CHECKING:
84
+ from pydantic import GetCoreSchemaHandler, ValidatorFunctionWrapHandler
85
+ from pydantic_core import CoreSchema, core_schema
82
86
  from pydantic_core.core_schema import ModelField, ModelSchema, LiteralSchema, ModelFieldsSchema
87
+ else:
88
+ try:
89
+ from pydantic_core import CoreSchema, core_schema
90
+ except ImportError:
91
+ CoreSchema = None
92
+ core_schema = None
83
93
 
84
94
  __all__ = ["BaseModel", "GenericModel"]
85
95
 
@@ -396,6 +406,76 @@ class BaseModel(pydantic.BaseModel):
396
406
  )
397
407
 
398
408
 
409
+ class _EagerIterable(list[_T], Generic[_T]):
410
+ """
411
+ Accepts any Iterable[T] input (including generators), consumes it
412
+ eagerly, and validates all items upfront.
413
+
414
+ Validation preserves the original container type where possible
415
+ (e.g. a set[T] stays a set[T]). Serialization (model_dump / JSON)
416
+ always emits a list — round-tripping through model_dump() will not
417
+ restore the original container type.
418
+ """
419
+
420
+ @classmethod
421
+ def __get_pydantic_core_schema__(
422
+ cls,
423
+ source_type: Any,
424
+ handler: GetCoreSchemaHandler,
425
+ ) -> CoreSchema:
426
+ (item_type,) = get_args(source_type) or (Any,)
427
+ item_schema: CoreSchema = handler.generate_schema(item_type)
428
+ list_of_items_schema: CoreSchema = core_schema.list_schema(item_schema)
429
+
430
+ return core_schema.no_info_wrap_validator_function(
431
+ cls._validate,
432
+ list_of_items_schema,
433
+ serialization=core_schema.plain_serializer_function_ser_schema(
434
+ cls._serialize,
435
+ info_arg=False,
436
+ ),
437
+ )
438
+
439
+ @staticmethod
440
+ def _validate(v: Iterable[_T], handler: "ValidatorFunctionWrapHandler") -> Any:
441
+ original_type: type[Any] = type(v)
442
+
443
+ # Normalize to list so list_schema can validate each item
444
+ if isinstance(v, list):
445
+ items: list[_T] = v
446
+ else:
447
+ try:
448
+ items = list(v)
449
+ except TypeError as e:
450
+ raise TypeError("Value is not iterable") from e
451
+
452
+ # Validate items against the inner schema
453
+ validated: list[_T] = handler(items)
454
+
455
+ # Reconstruct original container type
456
+ if original_type is list:
457
+ return validated
458
+ # str(list) produces the list's repr, not a string built from items,
459
+ # so skip reconstruction for str and its subclasses.
460
+ if issubclass(original_type, str):
461
+ return validated
462
+ try:
463
+ return original_type(validated)
464
+ except (TypeError, ValueError):
465
+ # If the type cannot be reconstructed, just return the validated list
466
+ return validated
467
+
468
+ @staticmethod
469
+ def _serialize(v: Iterable[_T]) -> list[_T]:
470
+ """Always serialize as a list so Pydantic's JSON encoder is happy."""
471
+ if isinstance(v, list):
472
+ return v
473
+ return list(v)
474
+
475
+
476
+ EagerIterable: TypeAlias = Annotated[Iterable[_T], _EagerIterable]
477
+
478
+
399
479
  def _construct_field(value: object, field: FieldInfo, key: str) -> object:
400
480
  if value is None:
401
481
  return field_get_default(field)
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "runloop_api_client"
4
- __version__ = "1.20.3" # x-release-please-version
4
+ __version__ = "1.21.0" # x-release-please-version
@@ -1,5 +1,13 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
+ from .pty import (
4
+ PtyResource,
5
+ AsyncPtyResource,
6
+ PtyResourceWithRawResponse,
7
+ AsyncPtyResourceWithRawResponse,
8
+ PtyResourceWithStreamingResponse,
9
+ AsyncPtyResourceWithStreamingResponse,
10
+ )
3
11
  from .axons import (
4
12
  AxonsResource,
5
13
  AsyncAxonsResource,
@@ -164,6 +172,12 @@ __all__ = [
164
172
  "AsyncDevboxesResourceWithRawResponse",
165
173
  "DevboxesResourceWithStreamingResponse",
166
174
  "AsyncDevboxesResourceWithStreamingResponse",
175
+ "PtyResource",
176
+ "AsyncPtyResource",
177
+ "PtyResourceWithRawResponse",
178
+ "AsyncPtyResourceWithRawResponse",
179
+ "PtyResourceWithStreamingResponse",
180
+ "AsyncPtyResourceWithStreamingResponse",
167
181
  "ScenariosResource",
168
182
  "AsyncScenariosResource",
169
183
  "ScenariosResourceWithRawResponse",
@@ -86,6 +86,7 @@ from ...lib.polling_async import async_poll_until
86
86
  from ...types.devbox_view import DevboxView
87
87
  from ...types.tunnel_view import TunnelView
88
88
  from ...lib.wait_for_status import wait_for_status, async_wait_for_status
89
+ from ...types.pty_tunnel_view import PtyTunnelView
89
90
  from ...types.shared_params.mount import Mount
90
91
  from ...types.devbox_snapshot_view import DevboxSnapshotView
91
92
  from ...types.shared.launch_parameters import LaunchParameters as SharedLaunchParameters
@@ -582,6 +583,50 @@ class DevboxesResource(SyncAPIResource):
582
583
  model=DevboxView,
583
584
  )
584
585
 
586
+ def create_pty_tunnel(
587
+ self,
588
+ id: str,
589
+ *,
590
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
591
+ # The extra values given here take precedence over values defined on the client or passed to this method.
592
+ extra_headers: Headers | None = None,
593
+ extra_query: Query | None = None,
594
+ extra_body: Body | None = None,
595
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
596
+ idempotency_key: str | None = None,
597
+ ) -> PtyTunnelView:
598
+ """Create an ephemeral authenticated tunnel for terminal access to a running
599
+ Devbox.
600
+
601
+ This tunnel is not persisted on the Devbox and is generated fresh on
602
+ each request. The returned auth_token must be passed as a Bearer token in the
603
+ Authorization header.
604
+
605
+ Args:
606
+ extra_headers: Send extra headers
607
+
608
+ extra_query: Add additional query parameters to the request
609
+
610
+ extra_body: Add additional JSON properties to the request
611
+
612
+ timeout: Override the client-level default timeout for this request, in seconds
613
+
614
+ idempotency_key: Specify a custom idempotency key for this request
615
+ """
616
+ if not id:
617
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
618
+ return self._post(
619
+ path_template("/v1/devboxes/{id}/create_pty_tunnel", id=id),
620
+ options=make_request_options(
621
+ extra_headers=extra_headers,
622
+ extra_query=extra_query,
623
+ extra_body=extra_body,
624
+ timeout=timeout,
625
+ idempotency_key=idempotency_key,
626
+ ),
627
+ cast_to=PtyTunnelView,
628
+ )
629
+
585
630
  def create_ssh_key(
586
631
  self,
587
632
  id: str,
@@ -2200,6 +2245,50 @@ class AsyncDevboxesResource(AsyncAPIResource):
2200
2245
  model=DevboxView,
2201
2246
  )
2202
2247
 
2248
+ async def create_pty_tunnel(
2249
+ self,
2250
+ id: str,
2251
+ *,
2252
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2253
+ # The extra values given here take precedence over values defined on the client or passed to this method.
2254
+ extra_headers: Headers | None = None,
2255
+ extra_query: Query | None = None,
2256
+ extra_body: Body | None = None,
2257
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
2258
+ idempotency_key: str | None = None,
2259
+ ) -> PtyTunnelView:
2260
+ """Create an ephemeral authenticated tunnel for terminal access to a running
2261
+ Devbox.
2262
+
2263
+ This tunnel is not persisted on the Devbox and is generated fresh on
2264
+ each request. The returned auth_token must be passed as a Bearer token in the
2265
+ Authorization header.
2266
+
2267
+ Args:
2268
+ extra_headers: Send extra headers
2269
+
2270
+ extra_query: Add additional query parameters to the request
2271
+
2272
+ extra_body: Add additional JSON properties to the request
2273
+
2274
+ timeout: Override the client-level default timeout for this request, in seconds
2275
+
2276
+ idempotency_key: Specify a custom idempotency key for this request
2277
+ """
2278
+ if not id:
2279
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
2280
+ return await self._post(
2281
+ path_template("/v1/devboxes/{id}/create_pty_tunnel", id=id),
2282
+ options=make_request_options(
2283
+ extra_headers=extra_headers,
2284
+ extra_query=extra_query,
2285
+ extra_body=extra_body,
2286
+ timeout=timeout,
2287
+ idempotency_key=idempotency_key,
2288
+ ),
2289
+ cast_to=PtyTunnelView,
2290
+ )
2291
+
2203
2292
  async def create_ssh_key(
2204
2293
  self,
2205
2294
  id: str,
@@ -3375,6 +3464,9 @@ class DevboxesResourceWithRawResponse:
3375
3464
  self.list = to_raw_response_wrapper(
3376
3465
  devboxes.list,
3377
3466
  )
3467
+ self.create_pty_tunnel = to_raw_response_wrapper(
3468
+ devboxes.create_pty_tunnel,
3469
+ )
3378
3470
  self.create_ssh_key = to_raw_response_wrapper(
3379
3471
  devboxes.create_ssh_key,
3380
3472
  )
@@ -3468,6 +3560,9 @@ class AsyncDevboxesResourceWithRawResponse:
3468
3560
  self.list = async_to_raw_response_wrapper(
3469
3561
  devboxes.list,
3470
3562
  )
3563
+ self.create_pty_tunnel = async_to_raw_response_wrapper(
3564
+ devboxes.create_pty_tunnel,
3565
+ )
3471
3566
  self.create_ssh_key = async_to_raw_response_wrapper(
3472
3567
  devboxes.create_ssh_key,
3473
3568
  )
@@ -3561,6 +3656,9 @@ class DevboxesResourceWithStreamingResponse:
3561
3656
  self.list = to_streamed_response_wrapper(
3562
3657
  devboxes.list,
3563
3658
  )
3659
+ self.create_pty_tunnel = to_streamed_response_wrapper(
3660
+ devboxes.create_pty_tunnel,
3661
+ )
3564
3662
  self.create_ssh_key = to_streamed_response_wrapper(
3565
3663
  devboxes.create_ssh_key,
3566
3664
  )
@@ -3654,6 +3752,9 @@ class AsyncDevboxesResourceWithStreamingResponse:
3654
3752
  self.list = async_to_streamed_response_wrapper(
3655
3753
  devboxes.list,
3656
3754
  )
3755
+ self.create_pty_tunnel = async_to_streamed_response_wrapper(
3756
+ devboxes.create_pty_tunnel,
3757
+ )
3657
3758
  self.create_ssh_key = async_to_streamed_response_wrapper(
3658
3759
  devboxes.create_ssh_key,
3659
3760
  )