runloop_api_client 1.5.0__tar.gz → 1.7.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 (407) hide show
  1. runloop_api_client-1.7.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/CHANGELOG.md +29 -0
  3. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/PKG-INFO +1 -1
  4. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/api.md +23 -2
  5. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/pyproject.toml +1 -1
  6. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_client.py +38 -0
  7. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_version.py +1 -1
  8. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/pagination.py +75 -0
  9. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/__init__.py +14 -0
  10. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/devboxes/devboxes.py +121 -8
  11. runloop_api_client-1.7.0/src/runloop_api_client/resources/mcp_configs.py +662 -0
  12. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/scenarios/scorers.py +1 -121
  13. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/__init__.py +8 -0
  14. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/_types.py +21 -5
  15. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_.py +95 -4
  16. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_devbox.py +84 -2
  17. runloop_api_client-1.7.0/src/runloop_api_client/sdk/async_gateway_config.py +108 -0
  18. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_scorer.py +1 -11
  19. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/devbox.py +84 -2
  20. runloop_api_client-1.7.0/src/runloop_api_client/sdk/gateway_config.py +108 -0
  21. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/scorer.py +1 -11
  22. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/sync.py +94 -3
  23. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/__init__.py +6 -0
  24. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_create_params.py +21 -1
  25. runloop_api_client-1.7.0/src/runloop_api_client/types/devbox_resource_usage_view.py +48 -0
  26. runloop_api_client-1.7.0/src/runloop_api_client/types/mcp_config_create_params.py +33 -0
  27. runloop_api_client-1.7.0/src/runloop_api_client/types/mcp_config_list_params.py +21 -0
  28. runloop_api_client-1.7.0/src/runloop_api_client/types/mcp_config_list_view.py +21 -0
  29. runloop_api_client-1.7.0/src/runloop_api_client/types/mcp_config_update_params.py +27 -0
  30. runloop_api_client-1.7.0/src/runloop_api_client/types/mcp_config_view.py +34 -0
  31. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -2
  32. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/tunnel_view.py +1 -1
  33. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/scenarios/test_scorers.py +0 -151
  34. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_devboxes.py +89 -0
  35. runloop_api_client-1.7.0/tests/api_resources/test_mcp_configs.py +441 -0
  36. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/async_devbox/test_core.py +76 -0
  37. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/async_devbox/test_interfaces.py +18 -16
  38. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/conftest.py +27 -0
  39. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/devbox/test_core.py +72 -0
  40. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/devbox/test_interfaces.py +19 -16
  41. runloop_api_client-1.7.0/tests/sdk/test_async_gateway_config.py +89 -0
  42. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_ops.py +100 -52
  43. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_scorer.py +0 -18
  44. runloop_api_client-1.7.0/tests/sdk/test_gateway_config.py +104 -0
  45. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_ops.py +93 -12
  46. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_scorer.py +0 -20
  47. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_devbox.py +51 -2
  48. runloop_api_client-1.7.0/tests/smoketests/sdk/test_async_gateway_config.py +112 -0
  49. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_scorer.py +0 -19
  50. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_devbox.py +49 -2
  51. runloop_api_client-1.7.0/tests/smoketests/sdk/test_gateway_config.py +112 -0
  52. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_scorer.py +0 -19
  53. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/uv.lock +1 -1
  54. runloop_api_client-1.5.0/.release-please-manifest.json +0 -3
  55. runloop_api_client-1.5.0/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -17
  56. runloop_api_client-1.5.0/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -23
  57. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/.gitignore +0 -0
  58. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/CONTRIBUTING.md +0 -0
  59. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/LICENSE +0 -0
  60. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/README-SDK.md +0 -0
  61. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/README.md +0 -0
  62. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/SECURITY.md +0 -0
  63. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/bin/check-release-environment +0 -0
  64. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/bin/publish-pypi +0 -0
  65. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/examples/.keep +0 -0
  66. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/release-please-config.json +0 -0
  67. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/requirements-dev.lock +0 -0
  68. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop/lib/.keep +0 -0
  69. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/__init__.py +0 -0
  70. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_base_client.py +0 -0
  71. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_compat.py +0 -0
  72. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_constants.py +0 -0
  73. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_exceptions.py +0 -0
  74. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_files.py +0 -0
  75. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_models.py +0 -0
  76. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_qs.py +0 -0
  77. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_resource.py +0 -0
  78. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_response.py +0 -0
  79. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_streaming.py +0 -0
  80. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_types.py +0 -0
  81. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  82. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_compat.py +0 -0
  83. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
  84. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_json.py +0 -0
  85. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  86. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  87. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  88. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  89. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  90. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  91. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  92. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  93. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  94. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/_utils/_validation.py +0 -0
  95. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/lib/.keep +0 -0
  96. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/lib/__init__.py +0 -0
  97. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/lib/_ignore.py +0 -0
  98. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/lib/context_loader.py +0 -0
  99. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/lib/polling.py +0 -0
  100. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  101. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/py.typed +0 -0
  102. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/agents.py +0 -0
  103. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/benchmark_jobs.py +0 -0
  104. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/benchmark_runs.py +0 -0
  105. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/benchmarks.py +0 -0
  106. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  107. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  108. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  109. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  110. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  111. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  112. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  113. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/gateway_configs.py +0 -0
  114. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/network_policies.py +0 -0
  115. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/objects.py +0 -0
  116. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/repositories.py +0 -0
  117. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  118. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  119. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -0
  120. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/resources/secrets.py +0 -0
  121. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/_helpers.py +0 -0
  122. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/agent.py +0 -0
  123. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_agent.py +0 -0
  124. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_benchmark.py +0 -0
  125. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_benchmark_run.py +0 -0
  126. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_blueprint.py +0 -0
  127. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_execution.py +0 -0
  128. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_execution_result.py +0 -0
  129. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_network_policy.py +0 -0
  130. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_scenario.py +0 -0
  131. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_scenario_builder.py +0 -0
  132. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_scenario_run.py +0 -0
  133. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_snapshot.py +0 -0
  134. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/async_storage_object.py +0 -0
  135. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/benchmark.py +0 -0
  136. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/benchmark_run.py +0 -0
  137. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/blueprint.py +0 -0
  138. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/execution.py +0 -0
  139. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/execution_result.py +0 -0
  140. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/network_policy.py +0 -0
  141. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/scenario.py +0 -0
  142. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/scenario_builder.py +0 -0
  143. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/scenario_run.py +0 -0
  144. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/snapshot.py +0 -0
  145. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/sdk/storage_object.py +0 -0
  146. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/agent_create_params.py +0 -0
  147. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/agent_list_params.py +0 -0
  148. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/agent_list_view.py +0 -0
  149. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/agent_view.py +0 -0
  150. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  151. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  152. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_job_create_params.py +0 -0
  153. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_job_list_params.py +0 -0
  154. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_job_list_view.py +0 -0
  155. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_job_view.py +0 -0
  156. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  157. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  158. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_run_list_params.py +0 -0
  159. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_run_list_scenario_runs_params.py +0 -0
  160. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  161. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  162. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  163. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  164. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_update_scenarios_params.py +0 -0
  165. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  166. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  167. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  168. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  169. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +0 -0
  170. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  171. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  172. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_list_public_params.py +0 -0
  173. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  174. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  175. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  176. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  177. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  178. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  179. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  180. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  181. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_enable_tunnel_params.py +0 -0
  182. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  183. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_execute_params.py +0 -0
  184. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  185. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  186. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  187. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  188. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  189. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  190. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  191. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  192. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_send_std_in_result.py +0 -0
  193. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  194. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  195. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  196. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  197. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  198. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  199. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  200. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  201. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_wait_for_command_params.py +0 -0
  202. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  203. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  204. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  205. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  206. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  207. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  208. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  209. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  210. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  211. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  212. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  213. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  214. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  215. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  216. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  217. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  218. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  219. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  220. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
  221. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  222. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/execution_send_std_in_params.py +0 -0
  223. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
  224. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
  225. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
  226. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  227. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/gateway_config_create_params.py +0 -0
  228. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/gateway_config_list_params.py +0 -0
  229. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/gateway_config_list_view.py +0 -0
  230. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/gateway_config_update_params.py +0 -0
  231. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/gateway_config_view.py +0 -0
  232. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/input_context.py +0 -0
  233. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  234. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
  235. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/inspection_source_param.py +0 -0
  236. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/network_policy_create_params.py +0 -0
  237. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/network_policy_list_params.py +0 -0
  238. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/network_policy_list_view.py +0 -0
  239. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/network_policy_update_params.py +0 -0
  240. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/network_policy_view.py +0 -0
  241. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/object_create_params.py +0 -0
  242. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/object_download_params.py +0 -0
  243. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/object_download_url_view.py +0 -0
  244. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/object_list_params.py +0 -0
  245. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/object_list_public_params.py +0 -0
  246. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/object_list_view.py +0 -0
  247. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/object_view.py +0 -0
  248. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  249. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  250. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  251. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_inspect_params.py +0 -0
  252. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
  253. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  254. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  255. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
  256. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  257. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  258. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  259. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  260. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  261. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  262. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  263. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  264. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  265. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  266. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
  267. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  268. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  269. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  270. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  271. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  272. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  273. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  274. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  275. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  276. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  277. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  278. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  279. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
  280. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  281. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  282. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  283. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  284. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/secret_list_params.py +0 -0
  285. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
  286. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  287. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/secret_view.py +0 -0
  288. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  289. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  290. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/agent_mount.py +0 -0
  291. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/agent_source.py +0 -0
  292. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  293. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  294. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/mount.py +0 -0
  295. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/object_mount.py +0 -0
  296. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared/run_profile.py +0 -0
  297. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  298. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  299. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/agent_mount.py +0 -0
  300. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/agent_source.py +0 -0
  301. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  302. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  303. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/mount.py +0 -0
  304. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/object_mount.py +0 -0
  305. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
  306. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/__init__.py +0 -0
  307. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/__init__.py +0 -0
  308. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/devboxes/__init__.py +0 -0
  309. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  310. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  311. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  312. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  313. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  314. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/scenarios/__init__.py +0 -0
  315. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  316. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_agents.py +0 -0
  317. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_benchmark_jobs.py +0 -0
  318. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_benchmark_runs.py +0 -0
  319. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_benchmarks.py +0 -0
  320. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_blueprints.py +0 -0
  321. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_gateway_configs.py +0 -0
  322. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_network_policies.py +0 -0
  323. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_objects.py +0 -0
  324. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_repositories.py +0 -0
  325. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_scenarios.py +0 -0
  326. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/api_resources/test_secrets.py +0 -0
  327. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/conftest.py +0 -0
  328. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sample_file.txt +0 -0
  329. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/__init__.py +0 -0
  330. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/async_devbox/__init__.py +0 -0
  331. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/async_devbox/conftest.py +0 -0
  332. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/async_devbox/test_edge_cases.py +0 -0
  333. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/async_devbox/test_streaming.py +0 -0
  334. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/devbox/__init__.py +0 -0
  335. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/devbox/conftest.py +0 -0
  336. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/devbox/test_edge_cases.py +0 -0
  337. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/devbox/test_streaming.py +0 -0
  338. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_agent.py +0 -0
  339. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_agent.py +0 -0
  340. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_benchmark.py +0 -0
  341. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_benchmark_run.py +0 -0
  342. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_blueprint.py +0 -0
  343. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_execution.py +0 -0
  344. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_execution_result.py +0 -0
  345. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_network_policy.py +0 -0
  346. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_scenario.py +0 -0
  347. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_scenario_builder.py +0 -0
  348. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_scenario_run.py +0 -0
  349. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_snapshot.py +0 -0
  350. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_async_storage_object.py +0 -0
  351. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_benchmark.py +0 -0
  352. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_benchmark_run.py +0 -0
  353. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_blueprint.py +0 -0
  354. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_execution.py +0 -0
  355. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_execution_result.py +0 -0
  356. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_helpers.py +0 -0
  357. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_network_policy.py +0 -0
  358. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_scenario.py +0 -0
  359. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_scenario_builder.py +0 -0
  360. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_scenario_run.py +0 -0
  361. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_snapshot.py +0 -0
  362. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/sdk/test_storage_object.py +0 -0
  363. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/README.md +0 -0
  364. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/__init__.py +0 -0
  365. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/conftest.py +0 -0
  366. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/README.md +0 -0
  367. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/__init__.py +0 -0
  368. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/conftest.py +0 -0
  369. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_agent.py +0 -0
  370. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_agent.py +0 -0
  371. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_benchmark.py +0 -0
  372. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_blueprint.py +0 -0
  373. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_network_policy.py +0 -0
  374. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_scenario.py +0 -0
  375. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_sdk.py +0 -0
  376. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
  377. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_async_storage_object.py +0 -0
  378. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_benchmark.py +0 -0
  379. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_blueprint.py +0 -0
  380. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_network_policy.py +0 -0
  381. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_scenario.py +0 -0
  382. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_sdk.py +0 -0
  383. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_snapshot.py +0 -0
  384. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/sdk/test_storage_object.py +0 -0
  385. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/test_blueprints.py +0 -0
  386. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/test_devboxes.py +0 -0
  387. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/test_executions.py +0 -0
  388. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
  389. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/test_snapshots.py +0 -0
  390. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/smoketests/utils.py +0 -0
  391. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_client.py +0 -0
  392. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_deepcopy.py +0 -0
  393. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_extract_files.py +0 -0
  394. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_files.py +0 -0
  395. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_models.py +0 -0
  396. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_polling.py +0 -0
  397. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_qs.py +0 -0
  398. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_required_args.py +0 -0
  399. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_response.py +0 -0
  400. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_streaming.py +0 -0
  401. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_transform.py +0 -0
  402. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_utils/test_context_loader.py +0 -0
  403. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_utils/test_datetime_parse.py +0 -0
  404. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_utils/test_json.py +0 -0
  405. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_utils/test_proxy.py +0 -0
  406. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/test_utils/test_typing.py +0 -0
  407. {runloop_api_client-1.5.0 → runloop_api_client-1.7.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.7.0"
3
+ }
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.7.0 (2026-02-05)
4
+
5
+ Full Changelog: [v1.5.1...v1.7.0](https://github.com/runloopai/api-client-python/compare/v1.5.1...v1.7.0)
6
+
7
+ ### Features
8
+
9
+ * add api to query devbox usage ([#7296](https://github.com/runloopai/api-client-python/issues/7296)) ([ab903f5](https://github.com/runloopai/api-client-python/commit/ab903f557ecc8be15c8d150068a82dfaaac23f4e))
10
+ * adding MCP Config routes ([#7331](https://github.com/runloopai/api-client-python/issues/7331)) ([79d05c0](https://github.com/runloopai/api-client-python/commit/79d05c00f9bb85a458cc300c5b065b6249a16a88))
11
+ * **devbox:** add mcp configuration to devbox create ([#7341](https://github.com/runloopai/api-client-python/issues/7341)) ([0b81e31](https://github.com/runloopai/api-client-python/commit/0b81e3151e3df41f667923cac4e714ba6d7ca3bc))
12
+ * **devbox:** adding gateway config ([#736](https://github.com/runloopai/api-client-python/issues/736)) ([9f4b49d](https://github.com/runloopai/api-client-python/commit/9f4b49daa13dd3aac5a8ee26a262fd7b5b705ff1))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **sdk:** fixed pagination for scorer, scenario and network policy list methods ([#731](https://github.com/runloopai/api-client-python/issues/731)) ([d55fceb](https://github.com/runloopai/api-client-python/commit/d55fceb7d42877cd0ac69a934ef300815f371342))
18
+
19
+
20
+ ### Chores
21
+
22
+ * Mark legacy tunnel methods deprecated ([#737](https://github.com/runloopai/api-client-python/issues/737)) ([764b445](https://github.com/runloopai/api-client-python/commit/764b445018ec50db3105c0dd8ea58b02e4690e12))
23
+
24
+ ## 1.5.1 (2026-01-30)
25
+
26
+ Full Changelog: [v1.5.0...v1.5.1](https://github.com/runloopai/api-client-python/compare/v1.5.0...v1.5.1)
27
+
28
+ ### Chores
29
+
30
+ * **devbox:** rename tunnel auth enum ([#7239](https://github.com/runloopai/api-client-python/issues/7239)) ([7a9b7a4](https://github.com/runloopai/api-client-python/commit/7a9b7a449ce648ad4f220af83b35f800727ea28d))
31
+
3
32
  ## 1.5.0 (2026-01-30)
4
33
 
5
34
  Full Changelog: [v1.4.0...v1.5.0](https://github.com/runloopai/api-client-python/compare/v1.4.0...v1.5.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 1.5.0
3
+ Version: 1.7.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
@@ -126,6 +126,7 @@ from runloop_api_client.types import (
126
126
  DevboxExecutionDetailView,
127
127
  DevboxKillExecutionRequest,
128
128
  DevboxListView,
129
+ DevboxResourceUsageView,
129
130
  DevboxSendStdInRequest,
130
131
  DevboxSendStdInResult,
131
132
  DevboxSnapshotListView,
@@ -158,6 +159,7 @@ Methods:
158
159
  - <code title="post /v1/devboxes/{id}/read_file_contents">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file_contents</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_read_file_contents_params.py">params</a>) -> str</code>
159
160
  - <code title="post /v1/devboxes/{id}/remove_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">remove_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_remove_tunnel_params.py">params</a>) -> object</code>
160
161
  - <code title="post /v1/devboxes/{id}/resume">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">resume</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
162
+ - <code title="get /v1/devboxes/{id}/usage">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve_resource_usage</a>(id) -> <a href="./src/runloop_api_client/types/devbox_resource_usage_view.py">DevboxResourceUsageView</a></code>
161
163
  - <code title="post /v1/devboxes/{id}/shutdown">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">shutdown</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
162
164
  - <code title="post /v1/devboxes/{id}/snapshot_disk">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
163
165
  - <code title="post /v1/devboxes/{id}/snapshot_disk_async">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk_async</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_async_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
@@ -299,7 +301,6 @@ from runloop_api_client.types.scenarios import (
299
301
  ScorerRetrieveResponse,
300
302
  ScorerUpdateResponse,
301
303
  ScorerListResponse,
302
- ScorerValidateResponse,
303
304
  )
304
305
  ```
305
306
 
@@ -309,7 +310,6 @@ Methods:
309
310
  - <code title="get /v1/scenarios/scorers/{id}">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/scenarios/scorer_retrieve_response.py">ScorerRetrieveResponse</a></code>
310
311
  - <code title="post /v1/scenarios/scorers/{id}">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/scenarios/scorer_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenarios/scorer_update_response.py">ScorerUpdateResponse</a></code>
311
312
  - <code title="get /v1/scenarios/scorers">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenarios/scorer_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenarios/scorer_list_response.py">SyncScenarioScorersCursorIDPage[ScorerListResponse]</a></code>
312
- - <code title="post /v1/scenarios/scorers/{id}/validate">client.scenarios.scorers.<a href="./src/runloop_api_client/resources/scenarios/scorers.py">validate</a>(id, \*\*<a href="src/runloop_api_client/types/scenarios/scorer_validate_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenarios/scorer_validate_response.py">ScorerValidateResponse</a></code>
313
313
 
314
314
  # Objects
315
315
 
@@ -420,3 +420,24 @@ Methods:
420
420
  - <code title="post /v1/gateway-configs/{id}">client.gateway_configs.<a href="./src/runloop_api_client/resources/gateway_configs.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/gateway_config_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/gateway_config_view.py">GatewayConfigView</a></code>
421
421
  - <code title="get /v1/gateway-configs">client.gateway_configs.<a href="./src/runloop_api_client/resources/gateway_configs.py">list</a>(\*\*<a href="src/runloop_api_client/types/gateway_config_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/gateway_config_view.py">SyncGatewayConfigsCursorIDPage[GatewayConfigView]</a></code>
422
422
  - <code title="post /v1/gateway-configs/{id}/delete">client.gateway_configs.<a href="./src/runloop_api_client/resources/gateway_configs.py">delete</a>(id) -> <a href="./src/runloop_api_client/types/gateway_config_view.py">GatewayConfigView</a></code>
423
+
424
+ # McpConfigs
425
+
426
+ Types:
427
+
428
+ ```python
429
+ from runloop_api_client.types import (
430
+ McpConfigCreateParameters,
431
+ McpConfigListView,
432
+ McpConfigUpdateParameters,
433
+ McpConfigView,
434
+ )
435
+ ```
436
+
437
+ Methods:
438
+
439
+ - <code title="post /v1/mcp-configs">client.mcp_configs.<a href="./src/runloop_api_client/resources/mcp_configs.py">create</a>(\*\*<a href="src/runloop_api_client/types/mcp_config_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/mcp_config_view.py">McpConfigView</a></code>
440
+ - <code title="get /v1/mcp-configs/{id}">client.mcp_configs.<a href="./src/runloop_api_client/resources/mcp_configs.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/mcp_config_view.py">McpConfigView</a></code>
441
+ - <code title="post /v1/mcp-configs/{id}">client.mcp_configs.<a href="./src/runloop_api_client/resources/mcp_configs.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/mcp_config_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/mcp_config_view.py">McpConfigView</a></code>
442
+ - <code title="get /v1/mcp-configs">client.mcp_configs.<a href="./src/runloop_api_client/resources/mcp_configs.py">list</a>(\*\*<a href="src/runloop_api_client/types/mcp_config_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/mcp_config_view.py">SyncMcpConfigsCursorIDPage[McpConfigView]</a></code>
443
+ - <code title="post /v1/mcp-configs/{id}/delete">client.mcp_configs.<a href="./src/runloop_api_client/resources/mcp_configs.py">delete</a>(id) -> <a href="./src/runloop_api_client/types/mcp_config_view.py">McpConfigView</a></code>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "1.5.0"
3
+ version = "1.7.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -39,6 +39,7 @@ if TYPE_CHECKING:
39
39
  scenarios,
40
40
  benchmarks,
41
41
  blueprints,
42
+ mcp_configs,
42
43
  repositories,
43
44
  benchmark_jobs,
44
45
  benchmark_runs,
@@ -50,6 +51,7 @@ if TYPE_CHECKING:
50
51
  from .resources.secrets import SecretsResource, AsyncSecretsResource
51
52
  from .resources.benchmarks import BenchmarksResource, AsyncBenchmarksResource
52
53
  from .resources.blueprints import BlueprintsResource, AsyncBlueprintsResource
54
+ from .resources.mcp_configs import McpConfigsResource, AsyncMcpConfigsResource
53
55
  from .resources.repositories import RepositoriesResource, AsyncRepositoriesResource
54
56
  from .resources.benchmark_jobs import BenchmarkJobsResource, AsyncBenchmarkJobsResource
55
57
  from .resources.benchmark_runs import BenchmarkRunsResource, AsyncBenchmarkRunsResource
@@ -190,6 +192,12 @@ class Runloop(SyncAPIClient):
190
192
 
191
193
  return GatewayConfigsResource(self)
192
194
 
195
+ @cached_property
196
+ def mcp_configs(self) -> McpConfigsResource:
197
+ from .resources.mcp_configs import McpConfigsResource
198
+
199
+ return McpConfigsResource(self)
200
+
193
201
  @cached_property
194
202
  def with_raw_response(self) -> RunloopWithRawResponse:
195
203
  return RunloopWithRawResponse(self)
@@ -432,6 +440,12 @@ class AsyncRunloop(AsyncAPIClient):
432
440
 
433
441
  return AsyncGatewayConfigsResource(self)
434
442
 
443
+ @cached_property
444
+ def mcp_configs(self) -> AsyncMcpConfigsResource:
445
+ from .resources.mcp_configs import AsyncMcpConfigsResource
446
+
447
+ return AsyncMcpConfigsResource(self)
448
+
435
449
  @cached_property
436
450
  def with_raw_response(self) -> AsyncRunloopWithRawResponse:
437
451
  return AsyncRunloopWithRawResponse(self)
@@ -623,6 +637,12 @@ class RunloopWithRawResponse:
623
637
 
624
638
  return GatewayConfigsResourceWithRawResponse(self._client.gateway_configs)
625
639
 
640
+ @cached_property
641
+ def mcp_configs(self) -> mcp_configs.McpConfigsResourceWithRawResponse:
642
+ from .resources.mcp_configs import McpConfigsResourceWithRawResponse
643
+
644
+ return McpConfigsResourceWithRawResponse(self._client.mcp_configs)
645
+
626
646
 
627
647
  class AsyncRunloopWithRawResponse:
628
648
  _client: AsyncRunloop
@@ -702,6 +722,12 @@ class AsyncRunloopWithRawResponse:
702
722
 
703
723
  return AsyncGatewayConfigsResourceWithRawResponse(self._client.gateway_configs)
704
724
 
725
+ @cached_property
726
+ def mcp_configs(self) -> mcp_configs.AsyncMcpConfigsResourceWithRawResponse:
727
+ from .resources.mcp_configs import AsyncMcpConfigsResourceWithRawResponse
728
+
729
+ return AsyncMcpConfigsResourceWithRawResponse(self._client.mcp_configs)
730
+
705
731
 
706
732
  class RunloopWithStreamedResponse:
707
733
  _client: Runloop
@@ -781,6 +807,12 @@ class RunloopWithStreamedResponse:
781
807
 
782
808
  return GatewayConfigsResourceWithStreamingResponse(self._client.gateway_configs)
783
809
 
810
+ @cached_property
811
+ def mcp_configs(self) -> mcp_configs.McpConfigsResourceWithStreamingResponse:
812
+ from .resources.mcp_configs import McpConfigsResourceWithStreamingResponse
813
+
814
+ return McpConfigsResourceWithStreamingResponse(self._client.mcp_configs)
815
+
784
816
 
785
817
  class AsyncRunloopWithStreamedResponse:
786
818
  _client: AsyncRunloop
@@ -860,6 +892,12 @@ class AsyncRunloopWithStreamedResponse:
860
892
 
861
893
  return AsyncGatewayConfigsResourceWithStreamingResponse(self._client.gateway_configs)
862
894
 
895
+ @cached_property
896
+ def mcp_configs(self) -> mcp_configs.AsyncMcpConfigsResourceWithStreamingResponse:
897
+ from .resources.mcp_configs import AsyncMcpConfigsResourceWithStreamingResponse
898
+
899
+ return AsyncMcpConfigsResourceWithStreamingResponse(self._client.mcp_configs)
900
+
863
901
 
864
902
  Client = Runloop
865
903
 
@@ -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.5.0" # x-release-please-version
4
+ __version__ = "1.7.0" # x-release-please-version
@@ -32,6 +32,8 @@ __all__ = [
32
32
  "AsyncNetworkPoliciesCursorIDPage",
33
33
  "SyncGatewayConfigsCursorIDPage",
34
34
  "AsyncGatewayConfigsCursorIDPage",
35
+ "SyncMcpConfigsCursorIDPage",
36
+ "AsyncMcpConfigsCursorIDPage",
35
37
  ]
36
38
 
37
39
  _T = TypeVar("_T")
@@ -102,6 +104,11 @@ class GatewayConfigsCursorIDPageItem(Protocol):
102
104
  id: str
103
105
 
104
106
 
107
+ @runtime_checkable
108
+ class McpConfigsCursorIDPageItem(Protocol):
109
+ id: str
110
+
111
+
105
112
  class SyncBlueprintsCursorIDPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
106
113
  blueprints: List[_T]
107
114
  has_more: Optional[bool] = None
@@ -984,3 +991,71 @@ class AsyncGatewayConfigsCursorIDPage(BaseAsyncPage[_T], BasePage[_T], Generic[_
984
991
  return None
985
992
 
986
993
  return PageInfo(params={"starting_after": item.id})
994
+
995
+
996
+ class SyncMcpConfigsCursorIDPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
997
+ mcp_configs: List[_T]
998
+ has_more: Optional[bool] = None
999
+ total_count: Optional[int] = None
1000
+
1001
+ @override
1002
+ def _get_page_items(self) -> List[_T]:
1003
+ mcp_configs = self.mcp_configs
1004
+ if not mcp_configs:
1005
+ return []
1006
+ return mcp_configs
1007
+
1008
+ @override
1009
+ def has_next_page(self) -> bool:
1010
+ has_more = self.has_more
1011
+ if has_more is not None and has_more is False:
1012
+ return False
1013
+
1014
+ return super().has_next_page()
1015
+
1016
+ @override
1017
+ def next_page_info(self) -> Optional[PageInfo]:
1018
+ mcp_configs = self.mcp_configs
1019
+ if not mcp_configs:
1020
+ return None
1021
+
1022
+ item = cast(Any, mcp_configs[-1])
1023
+ if not isinstance(item, McpConfigsCursorIDPageItem) or item.id is None: # pyright: ignore[reportUnnecessaryComparison]
1024
+ # TODO emit warning log
1025
+ return None
1026
+
1027
+ return PageInfo(params={"starting_after": item.id})
1028
+
1029
+
1030
+ class AsyncMcpConfigsCursorIDPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
1031
+ mcp_configs: List[_T]
1032
+ has_more: Optional[bool] = None
1033
+ total_count: Optional[int] = None
1034
+
1035
+ @override
1036
+ def _get_page_items(self) -> List[_T]:
1037
+ mcp_configs = self.mcp_configs
1038
+ if not mcp_configs:
1039
+ return []
1040
+ return mcp_configs
1041
+
1042
+ @override
1043
+ def has_next_page(self) -> bool:
1044
+ has_more = self.has_more
1045
+ if has_more is not None and has_more is False:
1046
+ return False
1047
+
1048
+ return super().has_next_page()
1049
+
1050
+ @override
1051
+ def next_page_info(self) -> Optional[PageInfo]:
1052
+ mcp_configs = self.mcp_configs
1053
+ if not mcp_configs:
1054
+ return None
1055
+
1056
+ item = cast(Any, mcp_configs[-1])
1057
+ if not isinstance(item, McpConfigsCursorIDPageItem) or item.id is None: # pyright: ignore[reportUnnecessaryComparison]
1058
+ # TODO emit warning log
1059
+ return None
1060
+
1061
+ return PageInfo(params={"starting_after": item.id})
@@ -56,6 +56,14 @@ from .blueprints import (
56
56
  BlueprintsResourceWithStreamingResponse,
57
57
  AsyncBlueprintsResourceWithStreamingResponse,
58
58
  )
59
+ from .mcp_configs import (
60
+ McpConfigsResource,
61
+ AsyncMcpConfigsResource,
62
+ McpConfigsResourceWithRawResponse,
63
+ AsyncMcpConfigsResourceWithRawResponse,
64
+ McpConfigsResourceWithStreamingResponse,
65
+ AsyncMcpConfigsResourceWithStreamingResponse,
66
+ )
59
67
  from .repositories import (
60
68
  RepositoriesResource,
61
69
  AsyncRepositoriesResource,
@@ -170,4 +178,10 @@ __all__ = [
170
178
  "AsyncGatewayConfigsResourceWithRawResponse",
171
179
  "GatewayConfigsResourceWithStreamingResponse",
172
180
  "AsyncGatewayConfigsResourceWithStreamingResponse",
181
+ "McpConfigsResource",
182
+ "AsyncMcpConfigsResource",
183
+ "McpConfigsResourceWithRawResponse",
184
+ "AsyncMcpConfigsResourceWithRawResponse",
185
+ "McpConfigsResourceWithStreamingResponse",
186
+ "AsyncMcpConfigsResourceWithStreamingResponse",
173
187
  ]
@@ -105,6 +105,7 @@ from ...types.devbox_tunnel_view import DevboxTunnelView
105
105
  from ...types.shared_params.mount import Mount
106
106
  from ...types.devbox_snapshot_view import DevboxSnapshotView
107
107
  from ...types.shared.launch_parameters import LaunchParameters as SharedLaunchParameters
108
+ from ...types.devbox_resource_usage_view import DevboxResourceUsageView
108
109
  from ...types.devbox_execution_detail_view import DevboxExecutionDetailView
109
110
  from ...types.devbox_create_ssh_key_response import DevboxCreateSSHKeyResponse
110
111
  from ...types.shared_params.launch_parameters import LaunchParameters
@@ -189,6 +190,7 @@ class DevboxesResource(SyncAPIResource):
189
190
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
190
191
  gateways: Optional[Dict[str, devbox_create_params.Gateways]] | Omit = omit,
191
192
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
193
+ mcp: Optional[Iterable[devbox_create_params.Mcp]] | Omit = omit,
192
194
  metadata: Optional[Dict[str, str]] | Omit = omit,
193
195
  mounts: Optional[Iterable[Mount]] | Omit = omit,
194
196
  name: Optional[str] | Omit = omit,
@@ -239,6 +241,11 @@ class DevboxesResource(SyncAPIResource):
239
241
 
240
242
  launch_parameters: Parameters to configure the resources and launch time behavior of the Devbox.
241
243
 
244
+ mcp: [Beta] (Optional) MCP specifications for MCP server access. Each spec links an
245
+ MCP config to a secret. The devbox will receive environment variables
246
+ (RL_MCP_URL, RL_MCP_TOKEN) for accessing MCP servers through the MCP hub.
247
+ Example: [{'mcp_config': 'github-readonly', 'secret': 'MY_GITHUB_TOKEN'}]
248
+
242
249
  metadata: User defined metadata to attach to the devbox for organization.
243
250
 
244
251
  mounts: A list of mounts to be included in the Devbox.
@@ -281,6 +288,7 @@ class DevboxesResource(SyncAPIResource):
281
288
  "file_mounts": file_mounts,
282
289
  "gateways": gateways,
283
290
  "launch_parameters": launch_parameters,
291
+ "mcp": mcp,
284
292
  "metadata": metadata,
285
293
  "mounts": mounts,
286
294
  "name": name,
@@ -498,6 +506,7 @@ class DevboxesResource(SyncAPIResource):
498
506
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
499
507
  gateways: Optional[Dict[str, devbox_create_params.Gateways]] | Omit = omit,
500
508
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
509
+ mcp: Optional[Iterable[devbox_create_params.Mcp]] | Omit = omit,
501
510
  metadata: Optional[Dict[str, str]] | Omit = omit,
502
511
  mounts: Optional[Iterable[Mount]] | Omit = omit,
503
512
  name: Optional[str] | Omit = omit,
@@ -539,6 +548,7 @@ class DevboxesResource(SyncAPIResource):
539
548
  file_mounts=file_mounts,
540
549
  gateways=gateways,
541
550
  launch_parameters=launch_parameters,
551
+ mcp=mcp,
542
552
  metadata=metadata,
543
553
  mounts=mounts,
544
554
  name=name,
@@ -652,7 +662,9 @@ class DevboxesResource(SyncAPIResource):
652
662
  cast_to=DevboxCreateSSHKeyResponse,
653
663
  )
654
664
 
655
- @typing_extensions.deprecated("deprecated")
665
+ @typing_extensions.deprecated(
666
+ "create_tunnel is deprecated; use enable_tunnel or configure a tunnel at devbox creation."
667
+ )
656
668
  def create_tunnel(
657
669
  self,
658
670
  id: str,
@@ -666,7 +678,7 @@ class DevboxesResource(SyncAPIResource):
666
678
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
667
679
  idempotency_key: str | None = None,
668
680
  ) -> DevboxTunnelView:
669
- """[Deprecated] Use POST /v1/devboxes/{id}/enable_tunnel instead.
681
+ """[Deprecated] Use enable_tunnel or configure a tunnel at devbox creation instead.
670
682
 
671
683
  This endpoint
672
684
  creates a legacy tunnel. The new enable_tunnel endpoint provides improved tunnel
@@ -1270,7 +1282,9 @@ class DevboxesResource(SyncAPIResource):
1270
1282
  cast_to=str,
1271
1283
  )
1272
1284
 
1273
- @typing_extensions.deprecated("deprecated")
1285
+ @typing_extensions.deprecated(
1286
+ "remove_tunnel is deprecated; V2 tunnels cannot be removed and close on devbox shutdown."
1287
+ )
1274
1288
  def remove_tunnel(
1275
1289
  self,
1276
1290
  id: str,
@@ -1284,7 +1298,7 @@ class DevboxesResource(SyncAPIResource):
1284
1298
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
1285
1299
  idempotency_key: str | None = None,
1286
1300
  ) -> object:
1287
- """[Deprecated] Tunnels remain active until devbox is shutdown.
1301
+ """[Deprecated] V2 tunnels cannot be removed and close on devbox shutdown.
1288
1302
 
1289
1303
  This endpoint
1290
1304
  removes a legacy tunnel.
@@ -1360,6 +1374,43 @@ class DevboxesResource(SyncAPIResource):
1360
1374
  cast_to=DevboxView,
1361
1375
  )
1362
1376
 
1377
+ def retrieve_resource_usage(
1378
+ self,
1379
+ id: str,
1380
+ *,
1381
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1382
+ # The extra values given here take precedence over values defined on the client or passed to this method.
1383
+ extra_headers: Headers | None = None,
1384
+ extra_query: Query | None = None,
1385
+ extra_body: Body | None = None,
1386
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
1387
+ ) -> DevboxResourceUsageView:
1388
+ """Get resource usage metrics for a specific Devbox.
1389
+
1390
+ Returns CPU, memory, and disk
1391
+ consumption calculated from the Devbox's lifecycle, excluding any suspended
1392
+ periods for CPU and memory. Disk usage includes the full elapsed time since
1393
+ storage is consumed even when suspended.
1394
+
1395
+ Args:
1396
+ extra_headers: Send extra headers
1397
+
1398
+ extra_query: Add additional query parameters to the request
1399
+
1400
+ extra_body: Add additional JSON properties to the request
1401
+
1402
+ timeout: Override the client-level default timeout for this request, in seconds
1403
+ """
1404
+ if not id:
1405
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
1406
+ return self._get(
1407
+ f"/v1/devboxes/{id}/usage",
1408
+ options=make_request_options(
1409
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1410
+ ),
1411
+ cast_to=DevboxResourceUsageView,
1412
+ )
1413
+
1363
1414
  def shutdown(
1364
1415
  self,
1365
1416
  id: str,
@@ -1801,6 +1852,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
1801
1852
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
1802
1853
  gateways: Optional[Dict[str, devbox_create_params.Gateways]] | Omit = omit,
1803
1854
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
1855
+ mcp: Optional[Iterable[devbox_create_params.Mcp]] | Omit = omit,
1804
1856
  metadata: Optional[Dict[str, str]] | Omit = omit,
1805
1857
  mounts: Optional[Iterable[Mount]] | Omit = omit,
1806
1858
  name: Optional[str] | Omit = omit,
@@ -1851,6 +1903,11 @@ class AsyncDevboxesResource(AsyncAPIResource):
1851
1903
 
1852
1904
  launch_parameters: Parameters to configure the resources and launch time behavior of the Devbox.
1853
1905
 
1906
+ mcp: [Beta] (Optional) MCP specifications for MCP server access. Each spec links an
1907
+ MCP config to a secret. The devbox will receive environment variables
1908
+ (RL_MCP_URL, RL_MCP_TOKEN) for accessing MCP servers through the MCP hub.
1909
+ Example: [{'mcp_config': 'github-readonly', 'secret': 'MY_GITHUB_TOKEN'}]
1910
+
1854
1911
  metadata: User defined metadata to attach to the devbox for organization.
1855
1912
 
1856
1913
  mounts: A list of mounts to be included in the Devbox.
@@ -1893,6 +1950,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
1893
1950
  "file_mounts": file_mounts,
1894
1951
  "gateways": gateways,
1895
1952
  "launch_parameters": launch_parameters,
1953
+ "mcp": mcp,
1896
1954
  "metadata": metadata,
1897
1955
  "mounts": mounts,
1898
1956
  "name": name,
@@ -1957,6 +2015,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
1957
2015
  file_mounts: Optional[Dict[str, str]] | Omit = omit,
1958
2016
  gateways: Optional[Dict[str, devbox_create_params.Gateways]] | Omit = omit,
1959
2017
  launch_parameters: Optional[LaunchParameters] | Omit = omit,
2018
+ mcp: Optional[Iterable[devbox_create_params.Mcp]] | Omit = omit,
1960
2019
  metadata: Optional[Dict[str, str]] | Omit = omit,
1961
2020
  mounts: Optional[Iterable[Mount]] | Omit = omit,
1962
2021
  name: Optional[str] | Omit = omit,
@@ -1999,6 +2058,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
1999
2058
  file_mounts=file_mounts,
2000
2059
  gateways=gateways,
2001
2060
  launch_parameters=launch_parameters,
2061
+ mcp=mcp,
2002
2062
  metadata=metadata,
2003
2063
  mounts=mounts,
2004
2064
  name=name,
@@ -2261,7 +2321,9 @@ class AsyncDevboxesResource(AsyncAPIResource):
2261
2321
  cast_to=DevboxCreateSSHKeyResponse,
2262
2322
  )
2263
2323
 
2264
- @typing_extensions.deprecated("deprecated")
2324
+ @typing_extensions.deprecated(
2325
+ "create_tunnel is deprecated; use enable_tunnel or configure a tunnel at devbox creation."
2326
+ )
2265
2327
  async def create_tunnel(
2266
2328
  self,
2267
2329
  id: str,
@@ -2275,7 +2337,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
2275
2337
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
2276
2338
  idempotency_key: str | None = None,
2277
2339
  ) -> DevboxTunnelView:
2278
- """[Deprecated] Use POST /v1/devboxes/{id}/enable_tunnel instead.
2340
+ """[Deprecated] Use enable_tunnel or configure a tunnel at devbox creation instead.
2279
2341
 
2280
2342
  This endpoint
2281
2343
  creates a legacy tunnel. The new enable_tunnel endpoint provides improved tunnel
@@ -2882,7 +2944,9 @@ class AsyncDevboxesResource(AsyncAPIResource):
2882
2944
  cast_to=str,
2883
2945
  )
2884
2946
 
2885
- @typing_extensions.deprecated("deprecated")
2947
+ @typing_extensions.deprecated(
2948
+ "remove_tunnel is deprecated; V2 tunnels cannot be removed and close on devbox shutdown."
2949
+ )
2886
2950
  async def remove_tunnel(
2887
2951
  self,
2888
2952
  id: str,
@@ -2896,7 +2960,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
2896
2960
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
2897
2961
  idempotency_key: str | None = None,
2898
2962
  ) -> object:
2899
- """[Deprecated] Tunnels remain active until devbox is shutdown.
2963
+ """[Deprecated] V2 tunnels cannot be removed and close on devbox shutdown.
2900
2964
 
2901
2965
  This endpoint
2902
2966
  removes a legacy tunnel.
@@ -2972,6 +3036,43 @@ class AsyncDevboxesResource(AsyncAPIResource):
2972
3036
  cast_to=DevboxView,
2973
3037
  )
2974
3038
 
3039
+ async def retrieve_resource_usage(
3040
+ self,
3041
+ id: str,
3042
+ *,
3043
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
3044
+ # The extra values given here take precedence over values defined on the client or passed to this method.
3045
+ extra_headers: Headers | None = None,
3046
+ extra_query: Query | None = None,
3047
+ extra_body: Body | None = None,
3048
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
3049
+ ) -> DevboxResourceUsageView:
3050
+ """Get resource usage metrics for a specific Devbox.
3051
+
3052
+ Returns CPU, memory, and disk
3053
+ consumption calculated from the Devbox's lifecycle, excluding any suspended
3054
+ periods for CPU and memory. Disk usage includes the full elapsed time since
3055
+ storage is consumed even when suspended.
3056
+
3057
+ Args:
3058
+ extra_headers: Send extra headers
3059
+
3060
+ extra_query: Add additional query parameters to the request
3061
+
3062
+ extra_body: Add additional JSON properties to the request
3063
+
3064
+ timeout: Override the client-level default timeout for this request, in seconds
3065
+ """
3066
+ if not id:
3067
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
3068
+ return await self._get(
3069
+ f"/v1/devboxes/{id}/usage",
3070
+ options=make_request_options(
3071
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
3072
+ ),
3073
+ cast_to=DevboxResourceUsageView,
3074
+ )
3075
+
2975
3076
  async def shutdown(
2976
3077
  self,
2977
3078
  id: str,
@@ -3426,6 +3527,9 @@ class DevboxesResourceWithRawResponse:
3426
3527
  self.resume = to_raw_response_wrapper(
3427
3528
  devboxes.resume,
3428
3529
  )
3530
+ self.retrieve_resource_usage = to_raw_response_wrapper(
3531
+ devboxes.retrieve_resource_usage,
3532
+ )
3429
3533
  self.shutdown = to_raw_response_wrapper(
3430
3534
  devboxes.shutdown,
3431
3535
  )
@@ -3531,6 +3635,9 @@ class AsyncDevboxesResourceWithRawResponse:
3531
3635
  self.resume = async_to_raw_response_wrapper(
3532
3636
  devboxes.resume,
3533
3637
  )
3638
+ self.retrieve_resource_usage = async_to_raw_response_wrapper(
3639
+ devboxes.retrieve_resource_usage,
3640
+ )
3534
3641
  self.shutdown = async_to_raw_response_wrapper(
3535
3642
  devboxes.shutdown,
3536
3643
  )
@@ -3636,6 +3743,9 @@ class DevboxesResourceWithStreamingResponse:
3636
3743
  self.resume = to_streamed_response_wrapper(
3637
3744
  devboxes.resume,
3638
3745
  )
3746
+ self.retrieve_resource_usage = to_streamed_response_wrapper(
3747
+ devboxes.retrieve_resource_usage,
3748
+ )
3639
3749
  self.shutdown = to_streamed_response_wrapper(
3640
3750
  devboxes.shutdown,
3641
3751
  )
@@ -3741,6 +3851,9 @@ class AsyncDevboxesResourceWithStreamingResponse:
3741
3851
  self.resume = async_to_streamed_response_wrapper(
3742
3852
  devboxes.resume,
3743
3853
  )
3854
+ self.retrieve_resource_usage = async_to_streamed_response_wrapper(
3855
+ devboxes.retrieve_resource_usage,
3856
+ )
3744
3857
  self.shutdown = async_to_streamed_response_wrapper(
3745
3858
  devboxes.shutdown,
3746
3859
  )