runloop-api-client 1.11.0__tar.gz → 1.12.1__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 (425) hide show
  1. runloop_api_client-1.12.1/.release-please-manifest.json +3 -0
  2. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/CHANGELOG.md +28 -0
  3. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/EXAMPLES.md +32 -0
  4. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/PKG-INFO +2 -2
  5. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/README-SDK.md +1 -0
  6. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/api.md +0 -2
  7. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/mcp_github_tools.py +2 -2
  8. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/registry.py +8 -0
  9. runloop_api_client-1.12.1/examples/secrets_with_devbox.py +112 -0
  10. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/pyproject.toml +2 -2
  11. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_compat.py +9 -2
  12. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_version.py +1 -1
  13. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/benchmark_runs.py +10 -4
  14. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -122
  15. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/secrets.py +78 -0
  16. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/__init__.py +9 -0
  17. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/_types.py +0 -5
  18. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_.py +128 -0
  19. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_devbox.py +0 -30
  20. runloop_api_client-1.12.1/src/runloop_api_client/sdk/async_secret.py +130 -0
  21. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/devbox.py +0 -30
  22. runloop_api_client-1.12.1/src/runloop_api_client/sdk/secret.py +130 -0
  23. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/sync.py +128 -0
  24. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/__init__.py +0 -2
  25. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_job_view.py +1 -1
  26. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_run_view.py +1 -1
  27. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_devboxes.py +0 -95
  28. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/test_interfaces.py +0 -20
  29. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/test_interfaces.py +0 -27
  30. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_devbox.py +0 -29
  31. runloop_api_client-1.12.1/tests/smoketests/sdk/test_async_secret.py +128 -0
  32. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_devbox.py +0 -29
  33. runloop_api_client-1.12.1/tests/smoketests/sdk/test_secret.py +145 -0
  34. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/uv.lock +204 -151
  35. runloop_api_client-1.11.0/.release-please-manifest.json +0 -3
  36. runloop_api_client-1.11.0/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -12
  37. runloop_api_client-1.11.0/src/runloop_api_client/types/devbox_tunnel_view.py +0 -16
  38. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/.gitignore +0 -0
  39. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/CONTRIBUTING.md +0 -0
  40. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/LICENSE +0 -0
  41. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/README.md +0 -0
  42. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/SECURITY.md +0 -0
  43. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/bin/check-release-environment +0 -0
  44. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/bin/publish-pypi +0 -0
  45. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/__init__.py +0 -0
  46. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/_harness.py +0 -0
  47. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/blueprint_with_build_context.py +0 -0
  48. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/devbox_from_blueprint_lifecycle.py +0 -0
  49. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/devbox_snapshot_resume.py +0 -0
  50. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/example_types.py +0 -0
  51. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/release-please-config.json +0 -0
  52. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/requirements-dev.lock +0 -0
  53. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop/lib/.keep +0 -0
  54. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/__init__.py +0 -0
  55. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_base_client.py +0 -0
  56. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_client.py +0 -0
  57. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_constants.py +0 -0
  58. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_exceptions.py +0 -0
  59. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_files.py +0 -0
  60. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_models.py +0 -0
  61. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_qs.py +0 -0
  62. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_resource.py +0 -0
  63. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_response.py +0 -0
  64. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_streaming.py +0 -0
  65. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_types.py +0 -0
  66. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/__init__.py +0 -0
  67. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_compat.py +0 -0
  68. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
  69. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_json.py +0 -0
  70. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_logs.py +0 -0
  71. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_proxy.py +0 -0
  72. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_reflection.py +0 -0
  73. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  74. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_streams.py +0 -0
  75. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_sync.py +0 -0
  76. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_transform.py +0 -0
  77. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_typing.py +0 -0
  78. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_utils.py +0 -0
  79. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_validation.py +0 -0
  80. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/.keep +0 -0
  81. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/__init__.py +0 -0
  82. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/_ignore.py +0 -0
  83. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/context_loader.py +0 -0
  84. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/polling.py +0 -0
  85. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/polling_async.py +0 -0
  86. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/pagination.py +0 -0
  87. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/py.typed +0 -0
  88. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/__init__.py +0 -0
  89. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/agents.py +0 -0
  90. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/benchmark_jobs.py +0 -0
  91. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/benchmarks.py +0 -0
  92. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/blueprints.py +0 -0
  93. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  94. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  95. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  96. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  97. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  98. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  99. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/gateway_configs.py +0 -0
  100. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/mcp_configs.py +0 -0
  101. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/network_policies.py +0 -0
  102. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/objects.py +0 -0
  103. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/repositories.py +0 -0
  104. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  105. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  106. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -0
  107. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  108. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/_helpers.py +0 -0
  109. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/agent.py +0 -0
  110. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_agent.py +0 -0
  111. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_benchmark.py +0 -0
  112. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_benchmark_run.py +0 -0
  113. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_blueprint.py +0 -0
  114. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_execution.py +0 -0
  115. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_execution_result.py +0 -0
  116. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_gateway_config.py +0 -0
  117. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_mcp_config.py +0 -0
  118. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_network_policy.py +0 -0
  119. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_scenario.py +0 -0
  120. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_scenario_builder.py +0 -0
  121. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_scenario_run.py +0 -0
  122. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_scorer.py +0 -0
  123. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_snapshot.py +0 -0
  124. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_storage_object.py +0 -0
  125. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/benchmark.py +0 -0
  126. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/benchmark_run.py +0 -0
  127. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/blueprint.py +0 -0
  128. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/execution.py +0 -0
  129. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/execution_result.py +0 -0
  130. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/gateway_config.py +0 -0
  131. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/mcp_config.py +0 -0
  132. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/network_policy.py +0 -0
  133. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/scenario.py +0 -0
  134. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/scenario_builder.py +0 -0
  135. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/scenario_run.py +0 -0
  136. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/scorer.py +0 -0
  137. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/snapshot.py +0 -0
  138. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/storage_object.py +0 -0
  139. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/agent_create_params.py +0 -0
  140. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/agent_list_params.py +0 -0
  141. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/agent_list_view.py +0 -0
  142. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/agent_view.py +0 -0
  143. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  144. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  145. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_job_create_params.py +0 -0
  146. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_job_list_params.py +0 -0
  147. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_job_list_view.py +0 -0
  148. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  149. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  150. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_run_list_params.py +0 -0
  151. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_run_list_scenario_runs_params.py +0 -0
  152. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  153. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  154. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  155. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_update_scenarios_params.py +0 -0
  156. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_view.py +0 -0
  157. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  158. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  159. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  160. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +0 -0
  161. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  162. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  163. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_list_public_params.py +0 -0
  164. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  165. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  166. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  167. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_view.py +0 -0
  168. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  169. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  170. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  171. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  172. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_enable_tunnel_params.py +0 -0
  173. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  174. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_execute_params.py +0 -0
  175. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  176. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  177. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  178. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  179. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  180. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  181. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  182. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  183. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_resource_usage_view.py +0 -0
  184. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_send_std_in_result.py +0 -0
  185. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_shutdown_params.py +0 -0
  186. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  187. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  188. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  189. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  190. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  191. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  192. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_view.py +0 -0
  193. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_wait_for_command_params.py +0 -0
  194. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  195. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  196. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  197. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  198. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  199. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  200. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  201. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  202. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  203. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  204. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  205. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  206. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  207. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  208. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  209. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  210. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  211. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  212. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
  213. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  214. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_send_std_in_params.py +0 -0
  215. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
  216. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
  217. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
  218. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  219. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_create_params.py +0 -0
  220. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_list_params.py +0 -0
  221. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_list_view.py +0 -0
  222. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_update_params.py +0 -0
  223. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_view.py +0 -0
  224. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/input_context.py +0 -0
  225. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/input_context_param.py +0 -0
  226. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/input_context_update_param.py +0 -0
  227. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/inspection_source_param.py +0 -0
  228. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_create_params.py +0 -0
  229. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_list_params.py +0 -0
  230. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_list_view.py +0 -0
  231. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_update_params.py +0 -0
  232. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_view.py +0 -0
  233. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_create_params.py +0 -0
  234. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_list_params.py +0 -0
  235. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_list_view.py +0 -0
  236. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_update_params.py +0 -0
  237. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_view.py +0 -0
  238. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_create_params.py +0 -0
  239. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_download_params.py +0 -0
  240. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_download_url_view.py +0 -0
  241. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_list_params.py +0 -0
  242. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_list_public_params.py +0 -0
  243. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_list_view.py +0 -0
  244. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_view.py +0 -0
  245. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  246. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  247. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_create_params.py +0 -0
  248. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_inspect_params.py +0 -0
  249. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
  250. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  251. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_list_params.py +0 -0
  252. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
  253. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  254. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  255. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  256. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_environment.py +0 -0
  257. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  258. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  259. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  260. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  261. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  262. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  263. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_update_params.py +0 -0
  264. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_view.py +0 -0
  265. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  266. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  267. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  268. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  269. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  270. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  271. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  272. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  273. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  274. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_contract.py +0 -0
  275. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  276. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  277. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
  278. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_function.py +0 -0
  279. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  280. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  281. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_create_params.py +0 -0
  282. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_list_params.py +0 -0
  283. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_list_view.py +0 -0
  284. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_update_params.py +0 -0
  285. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_view.py +0 -0
  286. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/__init__.py +0 -0
  287. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  288. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/agent_mount.py +0 -0
  289. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/agent_source.py +0 -0
  290. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  291. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  292. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/mount.py +0 -0
  293. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/object_mount.py +0 -0
  294. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/run_profile.py +0 -0
  295. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  296. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  297. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/agent_mount.py +0 -0
  298. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/agent_source.py +0 -0
  299. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  300. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  301. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/mount.py +0 -0
  302. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/object_mount.py +0 -0
  303. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
  304. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/tunnel_view.py +0 -0
  305. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/__init__.py +0 -0
  306. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/__init__.py +0 -0
  307. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/__init__.py +0 -0
  308. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_browsers.py +0 -0
  309. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_computers.py +0 -0
  310. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  311. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_executions.py +0 -0
  312. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_logs.py +0 -0
  313. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/scenarios/__init__.py +0 -0
  314. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/scenarios/test_runs.py +0 -0
  315. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/scenarios/test_scorers.py +0 -0
  316. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_agents.py +0 -0
  317. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_benchmark_jobs.py +0 -0
  318. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_benchmark_runs.py +0 -0
  319. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_benchmarks.py +0 -0
  320. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_blueprints.py +0 -0
  321. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_gateway_configs.py +0 -0
  322. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_mcp_configs.py +0 -0
  323. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_network_policies.py +0 -0
  324. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_objects.py +0 -0
  325. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_repositories.py +0 -0
  326. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_scenarios.py +0 -0
  327. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_secrets.py +0 -0
  328. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/conftest.py +0 -0
  329. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sample_file.txt +0 -0
  330. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/__init__.py +0 -0
  331. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/__init__.py +0 -0
  332. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/conftest.py +0 -0
  333. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/test_core.py +0 -0
  334. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/test_edge_cases.py +0 -0
  335. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/test_streaming.py +0 -0
  336. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/conftest.py +0 -0
  337. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/__init__.py +0 -0
  338. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/conftest.py +0 -0
  339. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/test_core.py +0 -0
  340. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/test_edge_cases.py +0 -0
  341. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/test_streaming.py +0 -0
  342. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_agent.py +0 -0
  343. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_agent.py +0 -0
  344. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_benchmark.py +0 -0
  345. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_benchmark_run.py +0 -0
  346. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_blueprint.py +0 -0
  347. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_execution.py +0 -0
  348. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_execution_result.py +0 -0
  349. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_gateway_config.py +0 -0
  350. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_network_policy.py +0 -0
  351. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_ops.py +0 -0
  352. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_scenario.py +0 -0
  353. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_scenario_builder.py +0 -0
  354. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_scenario_run.py +0 -0
  355. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_scorer.py +0 -0
  356. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_snapshot.py +0 -0
  357. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_storage_object.py +0 -0
  358. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_benchmark.py +0 -0
  359. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_benchmark_run.py +0 -0
  360. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_blueprint.py +0 -0
  361. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_execution.py +0 -0
  362. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_execution_result.py +0 -0
  363. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_gateway_config.py +0 -0
  364. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_helpers.py +0 -0
  365. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_network_policy.py +0 -0
  366. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_ops.py +0 -0
  367. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_scenario.py +0 -0
  368. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_scenario_builder.py +0 -0
  369. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_scenario_run.py +0 -0
  370. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_scorer.py +0 -0
  371. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_snapshot.py +0 -0
  372. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_storage_object.py +0 -0
  373. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/README.md +0 -0
  374. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/__init__.py +0 -0
  375. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/conftest.py +0 -0
  376. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/examples/__init__.py +0 -0
  377. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/examples/test_examples.py +0 -0
  378. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/README.md +0 -0
  379. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/__init__.py +0 -0
  380. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/conftest.py +0 -0
  381. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_agent.py +0 -0
  382. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_agent.py +0 -0
  383. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_benchmark.py +0 -0
  384. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_blueprint.py +0 -0
  385. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_gateway_config.py +0 -0
  386. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_network_policy.py +0 -0
  387. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_scenario.py +0 -0
  388. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_scorer.py +0 -0
  389. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_sdk.py +0 -0
  390. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
  391. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_storage_object.py +0 -0
  392. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_benchmark.py +0 -0
  393. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_blueprint.py +0 -0
  394. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_gateway_config.py +0 -0
  395. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_mcp_config.py +0 -0
  396. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_network_policy.py +0 -0
  397. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_scenario.py +0 -0
  398. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_scorer.py +0 -0
  399. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_sdk.py +0 -0
  400. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_snapshot.py +0 -0
  401. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_storage_object.py +0 -0
  402. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_blueprints.py +0 -0
  403. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_devboxes.py +0 -0
  404. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_executions.py +0 -0
  405. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
  406. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_snapshots.py +0 -0
  407. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/utils.py +0 -0
  408. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_client.py +0 -0
  409. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_command_id.py +0 -0
  410. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_deepcopy.py +0 -0
  411. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_extract_files.py +0 -0
  412. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_files.py +0 -0
  413. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_models.py +0 -0
  414. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_polling.py +0 -0
  415. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_qs.py +0 -0
  416. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_required_args.py +0 -0
  417. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_response.py +0 -0
  418. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_streaming.py +0 -0
  419. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_transform.py +0 -0
  420. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_context_loader.py +0 -0
  421. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_datetime_parse.py +0 -0
  422. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_json.py +0 -0
  423. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_proxy.py +0 -0
  424. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_typing.py +0 -0
  425. {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.12.1"
3
+ }
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.12.1 (2026-03-19)
4
+
5
+ Full Changelog: [v1.12.0...v1.12.1](https://github.com/runloopai/api-client-python/compare/v1.12.0...v1.12.1)
6
+
7
+ ### Chores
8
+
9
+ * remove create_tunnel endpoint ([627c994](https://github.com/runloopai/api-client-python/commit/627c9945cdaf3b2d0ca46a2832092dd4fa011863))
10
+
11
+ ## 1.12.0 (2026-03-18)
12
+
13
+ Full Changelog: [v1.11.0...v1.12.0](https://github.com/runloopai/api-client-python/compare/v1.11.0...v1.12.0)
14
+
15
+ ### Features
16
+
17
+ * add secrets to oo-sdk ([#756](https://github.com/runloopai/api-client-python/issues/756)) ([09c4997](https://github.com/runloopai/api-client-python/commit/09c4997908ca7ec2ab9a45173d4d0bcf33ad2ca2))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **deps:** bump minimum typing-extensions version ([a873aad](https://github.com/runloopai/api-client-python/commit/a873aada5cbf8d29600374039f4d65bd321fa6bb))
23
+ * **pydantic:** do not pass `by_alias` unless set ([baf3a9a](https://github.com/runloopai/api-client-python/commit/baf3a9a8fe64e14f92f31387781f95dc6c7753de))
24
+
25
+
26
+ ### Chores
27
+
28
+ * configure new SDK language ([13d3ada](https://github.com/runloopai/api-client-python/commit/13d3adaa20a78b6d02db41369505f28aed92e1f5))
29
+ * **internal:** tweak CI branches ([b374486](https://github.com/runloopai/api-client-python/commit/b374486156c36b01c55135e4a0c1871b78360176))
30
+
3
31
  ## 1.11.0 (2026-03-10)
4
32
 
5
33
  Full Changelog: [v1.10.3...v1.11.0](https://github.com/runloopai/api-client-python/compare/v1.10.3...v1.11.0)
@@ -11,6 +11,7 @@ Runnable examples live in [`examples/`](./examples).
11
11
  - [Devbox From Blueprint (Run Command, Shutdown)](#devbox-from-blueprint-lifecycle)
12
12
  - [Devbox Snapshot and Resume](#devbox-snapshot-resume)
13
13
  - [MCP Hub + Claude Code + GitHub](#mcp-github-tools)
14
+ - [Secrets with Devbox (Create, Inject, Verify, Delete)](#secrets-with-devbox)
14
15
 
15
16
  <a id="blueprint-with-build-context"></a>
16
17
  ## Blueprint with Build Context
@@ -135,3 +136,34 @@ uv run pytest -m smoketest tests/smoketests/examples/
135
136
  ```
136
137
 
137
138
  **Source:** [`examples/mcp_github_tools.py`](./examples/mcp_github_tools.py)
139
+
140
+ <a id="secrets-with-devbox"></a>
141
+ ## Secrets with Devbox (Create, Inject, Verify, Delete)
142
+
143
+ **Use case:** Create a secret, inject it into a devbox as an environment variable, verify access, and clean up.
144
+
145
+ **Tags:** `secrets`, `devbox`, `environment-variables`, `cleanup`
146
+
147
+ ### Workflow
148
+ - Create a secret with a test value
149
+ - Create a devbox with the secret mapped to an env var
150
+ - Execute a command that reads the secret from the environment
151
+ - Verify the value matches
152
+ - Update the secret and verify
153
+ - List secrets and verify the secret appears
154
+ - Shutdown devbox and delete secret
155
+
156
+ ### Prerequisites
157
+ - `RUNLOOP_API_KEY`
158
+
159
+ ### Run
160
+ ```sh
161
+ uv run python -m examples.secrets_with_devbox
162
+ ```
163
+
164
+ ### Test
165
+ ```sh
166
+ uv run pytest -m smoketest tests/smoketests/examples/
167
+ ```
168
+
169
+ **Source:** [`examples/secrets_with_devbox.py`](./examples/secrets_with_devbox.py)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 1.11.0
3
+ Version: 1.12.1
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
@@ -28,7 +28,7 @@ Requires-Dist: distro<2,>=1.7.0
28
28
  Requires-Dist: httpx<1,>=0.23.0
29
29
  Requires-Dist: pydantic<3,>=2.0
30
30
  Requires-Dist: sniffio
31
- Requires-Dist: typing-extensions<5,>=4.10
31
+ Requires-Dist: typing-extensions<5,>=4.14
32
32
  Requires-Dist: uuid-utils>=0.11.0
33
33
  Provides-Extra: aiohttp
34
34
  Requires-Dist: aiohttp; extra == 'aiohttp'
@@ -116,6 +116,7 @@ The SDK provides object-oriented interfaces for all major Runloop resources:
116
116
  - **`runloop.blueprint`** - Blueprint management (create, list, build blueprints)
117
117
  - **`runloop.snapshot`** - Snapshot management (list disk snapshots)
118
118
  - **`runloop.storage_object`** - Storage object management (upload, download, list objects)
119
+ - **`runloop.secret`** - Secret management (create, update, list, delete encrypted key-value pairs)
119
120
  - **`runloop.api`** - Direct access to the underlying REST API client
120
121
 
121
122
  ### Devbox
@@ -131,7 +131,6 @@ from runloop_api_client.types import (
131
131
  DevboxSendStdInResult,
132
132
  DevboxSnapshotListView,
133
133
  DevboxSnapshotView,
134
- DevboxTunnelView,
135
134
  DevboxView,
136
135
  TunnelView,
137
136
  DevboxCreateSSHKeyResponse,
@@ -147,7 +146,6 @@ Methods:
147
146
  - <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>
148
147
  - <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>
149
148
  - <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>
150
- - <code title="post /v1/devboxes/{id}/create_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_create_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_tunnel_view.py">DevboxTunnelView</a></code>
151
149
  - <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>
152
150
  - <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>
153
151
  - <code title="post /v1/devboxes/{id}/enable_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">enable_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_enable_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/tunnel_view.py">TunnelView</a></code>
@@ -80,9 +80,9 @@ def recipe(ctx: RecipeContext, options: McpExampleOptions) -> RecipeOutput: # n
80
80
 
81
81
  # Store the GitHub PAT as a Runloop secret
82
82
  secret_name = unique_name("example-github-mcp")
83
- sdk.api.secrets.create(name=secret_name, value=github_token)
83
+ secret = sdk.secret.create(name=secret_name, value=github_token)
84
84
  resources_created.append(f"secret:{secret_name}")
85
- cleanup.add(f"secret:{secret_name}", lambda: sdk.api.secrets.delete(secret_name))
85
+ cleanup.add(f"secret:{secret_name}", secret.delete)
86
86
 
87
87
  # Launch a devbox with MCP Hub wiring
88
88
  devbox = sdk.devbox.create(
@@ -9,6 +9,7 @@ from typing import Any, Callable, cast
9
9
 
10
10
  from .example_types import ExampleResult
11
11
  from .mcp_github_tools import run_mcp_github_tools_example
12
+ from .secrets_with_devbox import run_secrets_with_devbox_example
12
13
  from .devbox_snapshot_resume import run_devbox_snapshot_resume_example
13
14
  from .blueprint_with_build_context import run_blueprint_with_build_context_example
14
15
  from .devbox_from_blueprint_lifecycle import run_devbox_from_blueprint_lifecycle_example
@@ -44,6 +45,13 @@ example_registry: list[ExampleRegistryEntry] = [
44
45
  "required_env": ["RUNLOOP_API_KEY", "GITHUB_TOKEN", "ANTHROPIC_API_KEY"],
45
46
  "run": run_mcp_github_tools_example,
46
47
  },
48
+ {
49
+ "slug": "secrets-with-devbox",
50
+ "title": "Secrets with Devbox (Create, Inject, Verify, Delete)",
51
+ "file_name": "secrets_with_devbox.py",
52
+ "required_env": ["RUNLOOP_API_KEY"],
53
+ "run": run_secrets_with_devbox_example,
54
+ },
47
55
  ]
48
56
 
49
57
 
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env -S uv run python
2
+ """
3
+ ---
4
+ title: Secrets with Devbox (Create, Inject, Verify, Delete)
5
+ slug: secrets-with-devbox
6
+ use_case: Create a secret, inject it into a devbox as an environment variable, verify access, and clean up.
7
+ workflow:
8
+ - Create a secret with a test value
9
+ - Create a devbox with the secret mapped to an env var
10
+ - Execute a command that reads the secret from the environment
11
+ - Verify the value matches
12
+ - Update the secret and verify
13
+ - List secrets and verify the secret appears
14
+ - Shutdown devbox and delete secret
15
+ tags:
16
+ - secrets
17
+ - devbox
18
+ - environment-variables
19
+ - cleanup
20
+ prerequisites:
21
+ - RUNLOOP_API_KEY
22
+ run: uv run python -m examples.secrets_with_devbox
23
+ test: uv run pytest -m smoketest tests/smoketests/examples/
24
+ ---
25
+ """
26
+
27
+ from __future__ import annotations
28
+
29
+ from runloop_api_client import RunloopSDK
30
+
31
+ from ._harness import run_as_cli, unique_name, wrap_recipe
32
+ from .example_types import ExampleCheck, RecipeOutput, RecipeContext
33
+
34
+ # Note: do NOT hardcode secret values in your code!
35
+ # This is example code only; use environment variables instead!
36
+ _EXAMPLE_SECRET_VALUE = "my-secret-value"
37
+ _UPDATED_SECRET_VALUE = "updated-secret-value"
38
+
39
+
40
+ def recipe(ctx: RecipeContext) -> RecipeOutput:
41
+ """Create a secret, inject it into a devbox, and verify it is accessible."""
42
+ cleanup = ctx.cleanup
43
+
44
+ sdk = RunloopSDK()
45
+ resources_created: list[str] = []
46
+ checks: list[ExampleCheck] = []
47
+
48
+ secret_name = unique_name("RUNLOOP_SDK_EXAMPLE").upper().replace("-", "_")
49
+
50
+ secret = sdk.secret.create(name=secret_name, value=_EXAMPLE_SECRET_VALUE)
51
+ resources_created.append(f"secret:{secret_name}")
52
+ cleanup.add(f"secret:{secret_name}", lambda: secret.delete())
53
+
54
+ secret_info = secret.get_info()
55
+ checks.append(
56
+ ExampleCheck(
57
+ name="secret created successfully",
58
+ passed=secret.name == secret_name and secret_info.id.startswith("sec_"),
59
+ details=f"name={secret.name}, id={secret_info.id}",
60
+ )
61
+ )
62
+
63
+ devbox = sdk.devbox.create(
64
+ name=unique_name("secrets-example-devbox"),
65
+ secrets={
66
+ "MY_SECRET_ENV": secret.name,
67
+ },
68
+ launch_parameters={
69
+ "resource_size_request": "X_SMALL",
70
+ "keep_alive_time_seconds": 60 * 5,
71
+ },
72
+ )
73
+ resources_created.append(f"devbox:{devbox.id}")
74
+ cleanup.add(f"devbox:{devbox.id}", devbox.shutdown)
75
+
76
+ result = devbox.cmd.exec("echo $MY_SECRET_ENV")
77
+ stdout = result.stdout().strip()
78
+ checks.append(
79
+ ExampleCheck(
80
+ name="devbox can read secret as env var",
81
+ passed=result.exit_code == 0 and stdout == _EXAMPLE_SECRET_VALUE,
82
+ details=f'exit_code={result.exit_code}, stdout="{stdout}"',
83
+ )
84
+ )
85
+
86
+ updated_info = sdk.secret.update(secret, _UPDATED_SECRET_VALUE).get_info()
87
+ checks.append(
88
+ ExampleCheck(
89
+ name="secret updated successfully",
90
+ passed=updated_info.name == secret_name,
91
+ details=f"update_time_ms={updated_info.update_time_ms}",
92
+ )
93
+ )
94
+
95
+ secrets = sdk.secret.list()
96
+ found = next((s for s in secrets if s.name == secret_name), None)
97
+ checks.append(
98
+ ExampleCheck(
99
+ name="secret appears in list",
100
+ passed=found is not None,
101
+ details=f"found name={found.name}" if found else "not found",
102
+ )
103
+ )
104
+
105
+ return RecipeOutput(resources_created=resources_created, checks=checks)
106
+
107
+
108
+ run_secrets_with_devbox_example = wrap_recipe(recipe)
109
+
110
+
111
+ if __name__ == "__main__":
112
+ run_as_cli(run_secrets_with_devbox_example)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "1.11.0"
3
+ version = "1.12.1"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -11,7 +11,7 @@ authors = [
11
11
  dependencies = [
12
12
  "httpx>=0.23.0, <1",
13
13
  "pydantic>=2.0, <3",
14
- "typing-extensions>=4.10, <5",
14
+ "typing-extensions>=4.14, <5",
15
15
  "anyio>=3.5.0, <5",
16
16
  "distro>=1.7.0, <2",
17
17
  "sniffio",
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Any, Union, Generic, TypeVar, Callable, cast, overload
4
4
  from datetime import date, datetime
5
- from typing_extensions import Self, Literal
5
+ from typing_extensions import Self, Literal, TypedDict
6
6
 
7
7
  import pydantic
8
8
  from pydantic.fields import FieldInfo
@@ -131,6 +131,10 @@ def model_json(model: pydantic.BaseModel, *, indent: int | None = None) -> str:
131
131
  return model.model_dump_json(indent=indent)
132
132
 
133
133
 
134
+ class _ModelDumpKwargs(TypedDict, total=False):
135
+ by_alias: bool
136
+
137
+
134
138
  def model_dump(
135
139
  model: pydantic.BaseModel,
136
140
  *,
@@ -142,6 +146,9 @@ def model_dump(
142
146
  by_alias: bool | None = None,
143
147
  ) -> dict[str, Any]:
144
148
  if (not PYDANTIC_V1) or hasattr(model, "model_dump"):
149
+ kwargs: _ModelDumpKwargs = {}
150
+ if by_alias is not None:
151
+ kwargs["by_alias"] = by_alias
145
152
  return model.model_dump(
146
153
  mode=mode,
147
154
  exclude=exclude,
@@ -149,7 +156,7 @@ def model_dump(
149
156
  exclude_defaults=exclude_defaults,
150
157
  # warnings are not supported in Pydantic v1
151
158
  warnings=True if PYDANTIC_V1 else warnings,
152
- by_alias=by_alias,
159
+ **kwargs,
153
160
  )
154
161
  return cast(
155
162
  "dict[str, Any]",
@@ -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.11.0" # x-release-please-version
4
+ __version__ = "1.12.1" # x-release-please-version
@@ -145,8 +145,11 @@ class BenchmarkRunsResource(SyncAPIResource):
145
145
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
146
146
  idempotency_key: str | None = None,
147
147
  ) -> BenchmarkRunView:
148
- """
149
- Cancel a currently running Benchmark run.
148
+ """Cancel a Benchmark run.
149
+
150
+ This will do the following: 1. Cancel all running
151
+ scenarios and shutdown the underlying Devbox resources 2. Update the benchmark
152
+ state to CANCELED 3. Calculate final score from completed scenarios
150
153
 
151
154
  Args:
152
155
  extra_headers: Send extra headers
@@ -388,8 +391,11 @@ class AsyncBenchmarkRunsResource(AsyncAPIResource):
388
391
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
389
392
  idempotency_key: str | None = None,
390
393
  ) -> BenchmarkRunView:
391
- """
392
- Cancel a currently running Benchmark run.
394
+ """Cancel a Benchmark run.
395
+
396
+ This will do the following: 1. Cancel all running
397
+ scenarios and shutdown the underlying Devbox resources 2. Update the benchmark
398
+ state to CANCELED 3. Calculate final score from completed scenarios
393
399
 
394
400
  Args:
395
401
  extra_headers: Send extra headers
@@ -27,7 +27,6 @@ from ...types import (
27
27
  devbox_shutdown_params,
28
28
  devbox_upload_file_params,
29
29
  devbox_execute_sync_params,
30
- devbox_create_tunnel_params,
31
30
  devbox_download_file_params,
32
31
  devbox_enable_tunnel_params,
33
32
  devbox_execute_async_params,
@@ -102,7 +101,6 @@ from .disk_snapshots import (
102
101
  from ...lib.polling_async import async_poll_until
103
102
  from ...types.devbox_view import DevboxView
104
103
  from ...types.tunnel_view import TunnelView
105
- from ...types.devbox_tunnel_view import DevboxTunnelView
106
104
  from ...types.shared_params.mount import Mount
107
105
  from ...types.devbox_snapshot_view import DevboxSnapshotView
108
106
  from ...types.shared.launch_parameters import LaunchParameters as SharedLaunchParameters
@@ -664,56 +662,6 @@ class DevboxesResource(SyncAPIResource):
664
662
  cast_to=DevboxCreateSSHKeyResponse,
665
663
  )
666
664
 
667
- @typing_extensions.deprecated(
668
- "create_tunnel is deprecated; use enable_tunnel or configure a tunnel at devbox creation."
669
- )
670
- def create_tunnel(
671
- self,
672
- id: str,
673
- *,
674
- port: int,
675
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
676
- # The extra values given here take precedence over values defined on the client or passed to this method.
677
- extra_headers: Headers | None = None,
678
- extra_query: Query | None = None,
679
- extra_body: Body | None = None,
680
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
681
- idempotency_key: str | None = None,
682
- ) -> DevboxTunnelView:
683
- """[Deprecated] Use enable_tunnel or configure a tunnel at devbox creation instead.
684
-
685
- This endpoint
686
- creates a legacy tunnel. The new enable_tunnel endpoint provides improved tunnel
687
- functionality with authentication options.
688
-
689
- Args:
690
- port: Devbox port that tunnel will expose.
691
-
692
- extra_headers: Send extra headers
693
-
694
- extra_query: Add additional query parameters to the request
695
-
696
- extra_body: Add additional JSON properties to the request
697
-
698
- timeout: Override the client-level default timeout for this request, in seconds
699
-
700
- idempotency_key: Specify a custom idempotency key for this request
701
- """
702
- if not id:
703
- raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
704
- return self._post(
705
- f"/v1/devboxes/{id}/create_tunnel",
706
- body=maybe_transform({"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams),
707
- options=make_request_options(
708
- extra_headers=extra_headers,
709
- extra_query=extra_query,
710
- extra_body=extra_body,
711
- timeout=timeout,
712
- idempotency_key=idempotency_key,
713
- ),
714
- cast_to=DevboxTunnelView,
715
- )
716
-
717
665
  def delete_disk_snapshot(
718
666
  self,
719
667
  id: str,
@@ -2345,56 +2293,6 @@ class AsyncDevboxesResource(AsyncAPIResource):
2345
2293
  cast_to=DevboxCreateSSHKeyResponse,
2346
2294
  )
2347
2295
 
2348
- @typing_extensions.deprecated(
2349
- "create_tunnel is deprecated; use enable_tunnel or configure a tunnel at devbox creation."
2350
- )
2351
- async def create_tunnel(
2352
- self,
2353
- id: str,
2354
- *,
2355
- port: int,
2356
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2357
- # The extra values given here take precedence over values defined on the client or passed to this method.
2358
- extra_headers: Headers | None = None,
2359
- extra_query: Query | None = None,
2360
- extra_body: Body | None = None,
2361
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
2362
- idempotency_key: str | None = None,
2363
- ) -> DevboxTunnelView:
2364
- """[Deprecated] Use enable_tunnel or configure a tunnel at devbox creation instead.
2365
-
2366
- This endpoint
2367
- creates a legacy tunnel. The new enable_tunnel endpoint provides improved tunnel
2368
- functionality with authentication options.
2369
-
2370
- Args:
2371
- port: Devbox port that tunnel will expose.
2372
-
2373
- extra_headers: Send extra headers
2374
-
2375
- extra_query: Add additional query parameters to the request
2376
-
2377
- extra_body: Add additional JSON properties to the request
2378
-
2379
- timeout: Override the client-level default timeout for this request, in seconds
2380
-
2381
- idempotency_key: Specify a custom idempotency key for this request
2382
- """
2383
- if not id:
2384
- raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
2385
- return await self._post(
2386
- f"/v1/devboxes/{id}/create_tunnel",
2387
- body=await async_maybe_transform({"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams),
2388
- options=make_request_options(
2389
- extra_headers=extra_headers,
2390
- extra_query=extra_query,
2391
- extra_body=extra_body,
2392
- timeout=timeout,
2393
- idempotency_key=idempotency_key,
2394
- ),
2395
- cast_to=DevboxTunnelView,
2396
- )
2397
-
2398
2296
  async def delete_disk_snapshot(
2399
2297
  self,
2400
2298
  id: str,
@@ -3525,11 +3423,6 @@ class DevboxesResourceWithRawResponse:
3525
3423
  self.create_ssh_key = to_raw_response_wrapper(
3526
3424
  devboxes.create_ssh_key,
3527
3425
  )
3528
- self.create_tunnel = ( # pyright: ignore[reportDeprecated]
3529
- to_raw_response_wrapper(
3530
- devboxes.create_tunnel, # pyright: ignore[reportDeprecated],
3531
- )
3532
- )
3533
3426
  self.delete_disk_snapshot = to_raw_response_wrapper(
3534
3427
  devboxes.delete_disk_snapshot,
3535
3428
  )
@@ -3633,11 +3526,6 @@ class AsyncDevboxesResourceWithRawResponse:
3633
3526
  self.create_ssh_key = async_to_raw_response_wrapper(
3634
3527
  devboxes.create_ssh_key,
3635
3528
  )
3636
- self.create_tunnel = ( # pyright: ignore[reportDeprecated]
3637
- async_to_raw_response_wrapper(
3638
- devboxes.create_tunnel, # pyright: ignore[reportDeprecated],
3639
- )
3640
- )
3641
3529
  self.delete_disk_snapshot = async_to_raw_response_wrapper(
3642
3530
  devboxes.delete_disk_snapshot,
3643
3531
  )
@@ -3741,11 +3629,6 @@ class DevboxesResourceWithStreamingResponse:
3741
3629
  self.create_ssh_key = to_streamed_response_wrapper(
3742
3630
  devboxes.create_ssh_key,
3743
3631
  )
3744
- self.create_tunnel = ( # pyright: ignore[reportDeprecated]
3745
- to_streamed_response_wrapper(
3746
- devboxes.create_tunnel, # pyright: ignore[reportDeprecated],
3747
- )
3748
- )
3749
3632
  self.delete_disk_snapshot = to_streamed_response_wrapper(
3750
3633
  devboxes.delete_disk_snapshot,
3751
3634
  )
@@ -3849,11 +3732,6 @@ class AsyncDevboxesResourceWithStreamingResponse:
3849
3732
  self.create_ssh_key = async_to_streamed_response_wrapper(
3850
3733
  devboxes.create_ssh_key,
3851
3734
  )
3852
- self.create_tunnel = ( # pyright: ignore[reportDeprecated]
3853
- async_to_streamed_response_wrapper(
3854
- devboxes.create_tunnel, # pyright: ignore[reportDeprecated],
3855
- )
3856
- )
3857
3735
  self.delete_disk_snapshot = async_to_streamed_response_wrapper(
3858
3736
  devboxes.delete_disk_snapshot,
3859
3737
  )
@@ -96,6 +96,39 @@ class SecretsResource(SyncAPIResource):
96
96
  cast_to=SecretView,
97
97
  )
98
98
 
99
+ def retrieve(
100
+ self,
101
+ name: str,
102
+ *,
103
+ extra_headers: Headers | None = None,
104
+ extra_query: Query | None = None,
105
+ extra_body: Body | None = None,
106
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
107
+ ) -> SecretView:
108
+ """Retrieve a Secret by name.
109
+
110
+ Args:
111
+ extra_headers: Send extra headers
112
+
113
+ extra_query: Add additional query parameters to the request
114
+
115
+ extra_body: Add additional JSON properties to the request
116
+
117
+ timeout: Override the client-level default timeout for this request, in seconds
118
+ """
119
+ if not name:
120
+ raise ValueError(f"Expected a non-empty value for `name` but received {name!r}")
121
+ return self._get(
122
+ f"/v1/secrets/{name}",
123
+ options=make_request_options(
124
+ extra_headers=extra_headers,
125
+ extra_query=extra_query,
126
+ extra_body=extra_body,
127
+ timeout=timeout,
128
+ ),
129
+ cast_to=SecretView,
130
+ )
131
+
99
132
  def update(
100
133
  self,
101
134
  name: str,
@@ -299,6 +332,39 @@ class AsyncSecretsResource(AsyncAPIResource):
299
332
  cast_to=SecretView,
300
333
  )
301
334
 
335
+ async def retrieve(
336
+ self,
337
+ name: str,
338
+ *,
339
+ extra_headers: Headers | None = None,
340
+ extra_query: Query | None = None,
341
+ extra_body: Body | None = None,
342
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
343
+ ) -> SecretView:
344
+ """Retrieve a Secret by name.
345
+
346
+ Args:
347
+ extra_headers: Send extra headers
348
+
349
+ extra_query: Add additional query parameters to the request
350
+
351
+ extra_body: Add additional JSON properties to the request
352
+
353
+ timeout: Override the client-level default timeout for this request, in seconds
354
+ """
355
+ if not name:
356
+ raise ValueError(f"Expected a non-empty value for `name` but received {name!r}")
357
+ return await self._get(
358
+ f"/v1/secrets/{name}",
359
+ options=make_request_options(
360
+ extra_headers=extra_headers,
361
+ extra_query=extra_query,
362
+ extra_body=extra_body,
363
+ timeout=timeout,
364
+ ),
365
+ cast_to=SecretView,
366
+ )
367
+
302
368
  async def update(
303
369
  self,
304
370
  name: str,
@@ -435,6 +501,9 @@ class SecretsResourceWithRawResponse:
435
501
  self.create = to_raw_response_wrapper(
436
502
  secrets.create,
437
503
  )
504
+ self.retrieve = to_raw_response_wrapper(
505
+ secrets.retrieve,
506
+ )
438
507
  self.update = to_raw_response_wrapper(
439
508
  secrets.update,
440
509
  )
@@ -453,6 +522,9 @@ class AsyncSecretsResourceWithRawResponse:
453
522
  self.create = async_to_raw_response_wrapper(
454
523
  secrets.create,
455
524
  )
525
+ self.retrieve = async_to_raw_response_wrapper(
526
+ secrets.retrieve,
527
+ )
456
528
  self.update = async_to_raw_response_wrapper(
457
529
  secrets.update,
458
530
  )
@@ -471,6 +543,9 @@ class SecretsResourceWithStreamingResponse:
471
543
  self.create = to_streamed_response_wrapper(
472
544
  secrets.create,
473
545
  )
546
+ self.retrieve = to_streamed_response_wrapper(
547
+ secrets.retrieve,
548
+ )
474
549
  self.update = to_streamed_response_wrapper(
475
550
  secrets.update,
476
551
  )
@@ -489,6 +564,9 @@ class AsyncSecretsResourceWithStreamingResponse:
489
564
  self.create = async_to_streamed_response_wrapper(
490
565
  secrets.create,
491
566
  )
567
+ self.retrieve = async_to_streamed_response_wrapper(
568
+ secrets.retrieve,
569
+ )
492
570
  self.update = async_to_streamed_response_wrapper(
493
571
  secrets.update,
494
572
  )