runloop-api-client 0.59.0__tar.gz → 0.60.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 (318) hide show
  1. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/.gitignore +2 -0
  2. runloop_api_client-0.60.0/.release-please-manifest.json +3 -0
  3. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/CHANGELOG.md +10 -0
  4. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/PKG-INFO +1 -1
  5. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/api.md +2 -0
  6. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/pyproject.toml +6 -3
  7. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/requirements-dev.lock +2 -0
  8. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_version.py +1 -1
  9. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/devboxes/devboxes.py +279 -1
  10. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/devboxes/executions.py +33 -16
  11. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/__init__.py +2 -0
  12. runloop_api_client-0.60.0/src/runloop_api_client/types/devbox_execute_params.py +28 -0
  13. runloop_api_client-0.60.0/src/runloop_api_client/types/devbox_wait_for_command_params.py +25 -0
  14. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/test_devboxes.py +238 -0
  15. runloop_api_client-0.60.0/tests/smoketests/README.md +27 -0
  16. runloop_api_client-0.60.0/tests/smoketests/__init__.py +6 -0
  17. runloop_api_client-0.60.0/tests/smoketests/test_blueprints.py +61 -0
  18. runloop_api_client-0.60.0/tests/smoketests/test_devboxes.py +74 -0
  19. runloop_api_client-0.60.0/tests/smoketests/test_executions.py +63 -0
  20. runloop_api_client-0.60.0/tests/smoketests/test_scenarios_benchmarks.py +78 -0
  21. runloop_api_client-0.60.0/tests/smoketests/test_snapshots.py +43 -0
  22. runloop_api_client-0.60.0/tests/smoketests/utils.py +34 -0
  23. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/uv.lock +1 -1
  24. runloop_api_client-0.59.0/.release-please-manifest.json +0 -3
  25. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/CONTRIBUTING.md +0 -0
  26. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/LICENSE +0 -0
  27. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/README.md +0 -0
  28. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/SECURITY.md +0 -0
  29. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/bin/check-release-environment +0 -0
  30. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/bin/publish-pypi +0 -0
  31. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/examples/.keep +0 -0
  32. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/noxfile.py +0 -0
  33. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/release-please-config.json +0 -0
  34. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/requirements.lock +0 -0
  35. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop/lib/.keep +0 -0
  36. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/__init__.py +0 -0
  37. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_base_client.py +0 -0
  38. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_client.py +0 -0
  39. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_compat.py +0 -0
  40. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_constants.py +0 -0
  41. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_exceptions.py +0 -0
  42. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_files.py +0 -0
  43. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_models.py +0 -0
  44. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_qs.py +0 -0
  45. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_resource.py +0 -0
  46. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_response.py +0 -0
  47. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_streaming.py +0 -0
  48. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_types.py +0 -0
  49. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  50. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_compat.py +0 -0
  51. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
  52. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  53. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  54. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  55. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  56. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  57. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  58. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  59. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  60. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  61. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/lib/.keep +0 -0
  62. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/lib/polling.py +0 -0
  63. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  64. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/pagination.py +0 -0
  65. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/py.typed +0 -0
  66. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/__init__.py +0 -0
  67. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  68. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
  69. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  70. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  71. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  72. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  73. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  74. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  75. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  76. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  77. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/objects.py +0 -0
  78. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/repositories.py +0 -0
  79. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  80. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  81. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -0
  82. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  83. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/resources/secrets.py +0 -0
  84. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  85. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  86. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  87. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  88. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  89. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  90. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  91. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  92. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  93. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  94. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  95. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py +0 -0
  96. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  97. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  98. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  99. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  100. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  101. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_list_public_params.py +0 -0
  102. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  103. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  104. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  105. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  106. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  107. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  108. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  109. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  110. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  111. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  112. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  113. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  114. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  115. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  116. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  117. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  118. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  119. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  120. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  121. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  122. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  123. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  124. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  125. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  126. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  127. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  128. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
  129. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  130. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  131. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  132. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  133. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  134. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  135. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  136. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  137. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  138. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  139. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  140. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  141. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  142. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  143. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  144. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  145. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  146. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  147. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  148. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  149. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
  150. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  151. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -0
  152. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  153. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  154. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  155. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  156. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  157. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  158. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  159. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  160. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  161. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  162. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  163. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  164. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  165. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  166. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  167. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  168. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  169. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/document_symbol.py +0 -0
  170. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
  171. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  172. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  173. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  174. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
  175. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  176. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
  177. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
  178. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
  179. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  180. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
  181. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  182. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  183. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
  184. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  185. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  186. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  187. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  188. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  189. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  190. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  191. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  192. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  193. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  194. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  195. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  196. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  197. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  198. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  199. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  200. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  201. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  202. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  203. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  204. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/position.py +0 -0
  205. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  206. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/range.py +0 -0
  207. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  208. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  209. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  210. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
  211. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  212. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  213. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  214. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  215. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/text_edit.py +0 -0
  216. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  217. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  218. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  219. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  220. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/input_context.py +0 -0
  221. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  222. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
  223. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/object_create_params.py +0 -0
  224. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/object_download_params.py +0 -0
  225. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/object_download_url_view.py +0 -0
  226. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/object_list_params.py +0 -0
  227. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/object_list_public_params.py +0 -0
  228. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/object_list_view.py +0 -0
  229. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/object_view.py +0 -0
  230. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  231. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  232. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  233. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
  234. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  235. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  236. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
  237. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  238. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  239. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  240. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  241. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  242. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  243. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  244. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  245. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  246. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  247. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
  248. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  249. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  250. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  251. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  252. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  253. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  254. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  255. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  256. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  257. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  258. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  259. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  260. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  261. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  262. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  263. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
  264. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  265. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  266. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  267. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  268. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/secret_list_params.py +0 -0
  269. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
  270. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  271. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/secret_view.py +0 -0
  272. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  273. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  274. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  275. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  276. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared/run_profile.py +0 -0
  277. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  278. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  279. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  280. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  281. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
  282. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/__init__.py +0 -0
  283. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/__init__.py +0 -0
  284. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  285. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
  286. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/devboxes/__init__.py +0 -0
  287. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  288. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  289. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  290. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  291. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  292. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/devboxes/test_lsp.py +0 -0
  293. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/scenarios/__init__.py +0 -0
  294. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  295. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/scenarios/test_scorers.py +0 -0
  296. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/test_benchmarks.py +0 -0
  297. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/test_blueprints.py +0 -0
  298. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/test_objects.py +0 -0
  299. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/test_repositories.py +0 -0
  300. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/test_scenarios.py +0 -0
  301. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/api_resources/test_secrets.py +0 -0
  302. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/conftest.py +0 -0
  303. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/sample_file.txt +0 -0
  304. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_client.py +0 -0
  305. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_deepcopy.py +0 -0
  306. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_extract_files.py +0 -0
  307. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_files.py +0 -0
  308. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_models.py +0 -0
  309. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_polling.py +0 -0
  310. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_qs.py +0 -0
  311. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_required_args.py +0 -0
  312. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_response.py +0 -0
  313. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_streaming.py +0 -0
  314. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_transform.py +0 -0
  315. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_utils/test_datetime_parse.py +0 -0
  316. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_utils/test_proxy.py +0 -0
  317. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/test_utils/test_typing.py +0 -0
  318. {runloop_api_client-0.59.0 → runloop_api_client-0.60.0}/tests/utils.py +0 -0
@@ -13,3 +13,5 @@ dist
13
13
  .envrc
14
14
  codegen.log
15
15
  Brewfile.lock.json
16
+
17
+ .DS_Store
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.60.0"
3
+ }
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.60.0 (2025-09-10)
4
+
5
+ Full Changelog: [v0.59.0...v0.60.0](https://github.com/runloopai/api-client-python/compare/v0.59.0...v0.60.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([82b7001](https://github.com/runloopai/api-client-python/commit/82b700156bc034cb486225ef2889b7f3b7575c9e))
10
+ * **api:** api update ([5d1797b](https://github.com/runloopai/api-client-python/commit/5d1797b1e193ffd5b17c664fdf3894a568039c14))
11
+ * **api:** api update ([f9e63d9](https://github.com/runloopai/api-client-python/commit/f9e63d96beac3fcdfda3b1038683ebf514b421d7))
12
+
3
13
  ## 0.59.0 (2025-09-08)
4
14
 
5
15
  Full Changelog: [v0.58.0...v0.59.0](https://github.com/runloopai/api-client-python/compare/v0.58.0...v0.59.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.59.0
3
+ Version: 0.60.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
@@ -95,6 +95,7 @@ Methods:
95
95
  - <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>
96
96
  - <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>
97
97
  - <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>
98
+ - <code title="post /v1/devboxes/{id}/execute">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_async_execution_detail_view.py">DevboxAsyncExecutionDetailView</a></code>
98
99
  - <code title="post /v1/devboxes/{id}/execute_async">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute_async</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_async_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_async_execution_detail_view.py">DevboxAsyncExecutionDetailView</a></code>
99
100
  - <code title="post /v1/devboxes/{id}/execute_sync">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute_sync</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_sync_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
100
101
  - <code title="post /v1/devboxes/{id}/keep_alive">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">keep_alive</a>(id) -> object</code>
@@ -107,6 +108,7 @@ Methods:
107
108
  - <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>
108
109
  - <code title="post /v1/devboxes/{id}/suspend">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">suspend</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
109
110
  - <code title="post /v1/devboxes/{id}/upload_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">upload_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_upload_file_params.py">params</a>) -> object</code>
111
+ - <code title="post /v1/devboxes/{devbox_id}/executions/{execution_id}/wait_for_status">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">wait_for_command</a>(execution_id, \*, devbox_id, \*\*<a href="src/runloop_api_client/types/devbox_wait_for_command_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_async_execution_detail_view.py">DevboxAsyncExecutionDetailView</a></code>
110
112
  - <code title="post /v1/devboxes/{id}/write_file_contents">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">write_file_contents</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_write_file_contents_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
111
113
 
112
114
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.59.0"
3
+ version = "0.60.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -51,6 +51,7 @@ dev-dependencies = [
51
51
  "respx",
52
52
  "pytest",
53
53
  "pytest-asyncio",
54
+ "pytest-timeout",
54
55
  "ruff",
55
56
  "time-machine",
56
57
  "nox",
@@ -134,7 +135,7 @@ replacement = '[\1](https://github.com/runloopai/api-client-python/tree/main/\g<
134
135
 
135
136
  [tool.pytest.ini_options]
136
137
  testpaths = ["tests"]
137
- addopts = "--tb=short -n auto"
138
+ addopts = "--tb=short -n auto --dist=loadfile -m 'not smoketest'"
138
139
  xfail_strict = true
139
140
  asyncio_mode = "auto"
140
141
  asyncio_default_fixture_loop_scope = "session"
@@ -142,7 +143,9 @@ filterwarnings = [
142
143
  "error"
143
144
  ]
144
145
  markers = [
145
- "skip_if_strict: skip test if using strict validation (for prism mock server issues)"
146
+ "skip_if_strict: skip test if using strict validation (for prism mock server issues)",
147
+ "timeout: per-test timeout provided by pytest-timeout",
148
+ "smoketest: end-to-end smoke tests against real API",
146
149
  ]
147
150
 
148
151
  [tool.pyright]
@@ -98,6 +98,8 @@ pyright==1.1.399
98
98
  pytest==8.3.3
99
99
  # via pytest-asyncio
100
100
  # via pytest-xdist
101
+ pytest-timeout==2.3.1
102
+ # via runloop-api-client (dev)
101
103
  pytest-asyncio==0.24.0
102
104
  pytest-xdist==3.7.0
103
105
  python-dateutil==2.8.2
@@ -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__ = "0.59.0" # x-release-please-version
4
+ __version__ = "0.60.0" # x-release-please-version
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict, Mapping, Iterable, Optional, TypedDict, cast
5
+ from typing import Dict, List, Mapping, Iterable, Optional, TypedDict, cast
6
6
  from typing_extensions import Literal
7
7
 
8
8
  import httpx
@@ -27,6 +27,7 @@ from ...types import (
27
27
  devbox_list_params,
28
28
  devbox_create_params,
29
29
  devbox_update_params,
30
+ devbox_execute_params,
30
31
  devbox_upload_file_params,
31
32
  devbox_execute_sync_params,
32
33
  devbox_create_tunnel_params,
@@ -34,6 +35,7 @@ from ...types import (
34
35
  devbox_execute_async_params,
35
36
  devbox_remove_tunnel_params,
36
37
  devbox_snapshot_disk_params,
38
+ devbox_wait_for_command_params,
37
39
  devbox_read_file_contents_params,
38
40
  devbox_list_disk_snapshots_params,
39
41
  devbox_snapshot_disk_async_params,
@@ -719,6 +721,72 @@ class DevboxesResource(SyncAPIResource):
719
721
  cast_to=BinaryAPIResponse,
720
722
  )
721
723
 
724
+ def execute(
725
+ self,
726
+ id: str,
727
+ *,
728
+ command: str,
729
+ command_id: str,
730
+ shell_name: Optional[str] | NotGiven = NOT_GIVEN,
731
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
732
+ # The extra values given here take precedence over values defined on the client or passed to this method.
733
+ extra_headers: Headers | None = None,
734
+ extra_query: Query | None = None,
735
+ extra_body: Body | None = None,
736
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
737
+ idempotency_key: str | None = None,
738
+ ) -> DevboxAsyncExecutionDetailView:
739
+ """
740
+ Execute a command with a known command ID on a devbox, optimistically waiting
741
+ for it to complete within the specified timeout. If it completes in time, return
742
+ the result. If not, return a status indicating the command is still running.
743
+
744
+ Args:
745
+ command: The command to execute via the Devbox shell. By default, commands are run from
746
+ the user home directory unless shell_name is specified. If shell_name is
747
+ specified the command is run from the directory based on the recent state of the
748
+ persistent shell.
749
+
750
+ command_id: The command ID for idempotency and tracking
751
+
752
+ shell_name: The name of the persistent shell to create or use if already created. When using
753
+ a persistent shell, the command will run from the directory at the end of the
754
+ previous command and environment variables will be preserved.
755
+
756
+ extra_headers: Send extra headers
757
+
758
+ extra_query: Add additional query parameters to the request
759
+
760
+ extra_body: Add additional JSON properties to the request
761
+
762
+ timeout: Override the client-level default timeout for this request, in seconds
763
+
764
+ idempotency_key: Specify a custom idempotency key for this request
765
+ """
766
+ if not id:
767
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
768
+ if not is_given(timeout) and self._client.timeout == DEFAULT_TIMEOUT:
769
+ timeout = 600
770
+ return self._post(
771
+ f"/v1/devboxes/{id}/execute",
772
+ body=maybe_transform(
773
+ {
774
+ "command": command,
775
+ "command_id": command_id,
776
+ "shell_name": shell_name,
777
+ },
778
+ devbox_execute_params.DevboxExecuteParams,
779
+ ),
780
+ options=make_request_options(
781
+ extra_headers=extra_headers,
782
+ extra_query=extra_query,
783
+ extra_body=extra_body,
784
+ timeout=timeout,
785
+ idempotency_key=idempotency_key,
786
+ ),
787
+ cast_to=DevboxAsyncExecutionDetailView,
788
+ )
789
+
722
790
  def execute_async(
723
791
  self,
724
792
  id: str,
@@ -1340,6 +1408,66 @@ class DevboxesResource(SyncAPIResource):
1340
1408
  cast_to=object,
1341
1409
  )
1342
1410
 
1411
+ def wait_for_command(
1412
+ self,
1413
+ execution_id: str,
1414
+ *,
1415
+ devbox_id: str,
1416
+ statuses: List[Literal["queued", "running", "completed"]],
1417
+ timeout_seconds: Optional[int] | NotGiven = NOT_GIVEN,
1418
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1419
+ # The extra values given here take precedence over values defined on the client or passed to this method.
1420
+ extra_headers: Headers | None = None,
1421
+ extra_query: Query | None = None,
1422
+ extra_body: Body | None = None,
1423
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1424
+ idempotency_key: str | None = None,
1425
+ ) -> DevboxAsyncExecutionDetailView:
1426
+ """
1427
+ Polls the asynchronous execution's status until it reaches one of the desired
1428
+ statuses or times out. Defaults to 60 seconds.
1429
+
1430
+ Args:
1431
+ statuses: The command execution statuses to wait for. At least one status must be
1432
+ provided. The command will be returned as soon as it reaches any of the provided
1433
+ statuses.
1434
+
1435
+ timeout_seconds: (Optional) Timeout in seconds to wait for the status, up to 60 seconds. Defaults
1436
+ to 60 seconds.
1437
+
1438
+ extra_headers: Send extra headers
1439
+
1440
+ extra_query: Add additional query parameters to the request
1441
+
1442
+ extra_body: Add additional JSON properties to the request
1443
+
1444
+ timeout: Override the client-level default timeout for this request, in seconds
1445
+
1446
+ idempotency_key: Specify a custom idempotency key for this request
1447
+ """
1448
+ if not devbox_id:
1449
+ raise ValueError(f"Expected a non-empty value for `devbox_id` but received {devbox_id!r}")
1450
+ if not execution_id:
1451
+ raise ValueError(f"Expected a non-empty value for `execution_id` but received {execution_id!r}")
1452
+ return self._post(
1453
+ f"/v1/devboxes/{devbox_id}/executions/{execution_id}/wait_for_status",
1454
+ body=maybe_transform(
1455
+ {
1456
+ "statuses": statuses,
1457
+ "timeout_seconds": timeout_seconds,
1458
+ },
1459
+ devbox_wait_for_command_params.DevboxWaitForCommandParams,
1460
+ ),
1461
+ options=make_request_options(
1462
+ extra_headers=extra_headers,
1463
+ extra_query=extra_query,
1464
+ extra_body=extra_body,
1465
+ timeout=timeout,
1466
+ idempotency_key=idempotency_key,
1467
+ ),
1468
+ cast_to=DevboxAsyncExecutionDetailView,
1469
+ )
1470
+
1343
1471
  def write_file_contents(
1344
1472
  self,
1345
1473
  id: str,
@@ -1981,6 +2109,72 @@ class AsyncDevboxesResource(AsyncAPIResource):
1981
2109
  cast_to=AsyncBinaryAPIResponse,
1982
2110
  )
1983
2111
 
2112
+ async def execute(
2113
+ self,
2114
+ id: str,
2115
+ *,
2116
+ command: str,
2117
+ command_id: str,
2118
+ shell_name: Optional[str] | NotGiven = NOT_GIVEN,
2119
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2120
+ # The extra values given here take precedence over values defined on the client or passed to this method.
2121
+ extra_headers: Headers | None = None,
2122
+ extra_query: Query | None = None,
2123
+ extra_body: Body | None = None,
2124
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
2125
+ idempotency_key: str | None = None,
2126
+ ) -> DevboxAsyncExecutionDetailView:
2127
+ """
2128
+ Execute a command with a known command ID on a devbox, optimistically waiting
2129
+ for it to complete within the specified timeout. If it completes in time, return
2130
+ the result. If not, return a status indicating the command is still running.
2131
+
2132
+ Args:
2133
+ command: The command to execute via the Devbox shell. By default, commands are run from
2134
+ the user home directory unless shell_name is specified. If shell_name is
2135
+ specified the command is run from the directory based on the recent state of the
2136
+ persistent shell.
2137
+
2138
+ command_id: The command ID for idempotency and tracking
2139
+
2140
+ shell_name: The name of the persistent shell to create or use if already created. When using
2141
+ a persistent shell, the command will run from the directory at the end of the
2142
+ previous command and environment variables will be preserved.
2143
+
2144
+ extra_headers: Send extra headers
2145
+
2146
+ extra_query: Add additional query parameters to the request
2147
+
2148
+ extra_body: Add additional JSON properties to the request
2149
+
2150
+ timeout: Override the client-level default timeout for this request, in seconds
2151
+
2152
+ idempotency_key: Specify a custom idempotency key for this request
2153
+ """
2154
+ if not id:
2155
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
2156
+ if not is_given(timeout) and self._client.timeout == DEFAULT_TIMEOUT:
2157
+ timeout = 600
2158
+ return await self._post(
2159
+ f"/v1/devboxes/{id}/execute",
2160
+ body=await async_maybe_transform(
2161
+ {
2162
+ "command": command,
2163
+ "command_id": command_id,
2164
+ "shell_name": shell_name,
2165
+ },
2166
+ devbox_execute_params.DevboxExecuteParams,
2167
+ ),
2168
+ options=make_request_options(
2169
+ extra_headers=extra_headers,
2170
+ extra_query=extra_query,
2171
+ extra_body=extra_body,
2172
+ timeout=timeout,
2173
+ idempotency_key=idempotency_key,
2174
+ ),
2175
+ cast_to=DevboxAsyncExecutionDetailView,
2176
+ )
2177
+
1984
2178
  async def execute_async(
1985
2179
  self,
1986
2180
  id: str,
@@ -2602,6 +2796,66 @@ class AsyncDevboxesResource(AsyncAPIResource):
2602
2796
  cast_to=object,
2603
2797
  )
2604
2798
 
2799
+ async def wait_for_command(
2800
+ self,
2801
+ execution_id: str,
2802
+ *,
2803
+ devbox_id: str,
2804
+ statuses: List[Literal["queued", "running", "completed"]],
2805
+ timeout_seconds: Optional[int] | NotGiven = NOT_GIVEN,
2806
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2807
+ # The extra values given here take precedence over values defined on the client or passed to this method.
2808
+ extra_headers: Headers | None = None,
2809
+ extra_query: Query | None = None,
2810
+ extra_body: Body | None = None,
2811
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
2812
+ idempotency_key: str | None = None,
2813
+ ) -> DevboxAsyncExecutionDetailView:
2814
+ """
2815
+ Polls the asynchronous execution's status until it reaches one of the desired
2816
+ statuses or times out. Defaults to 60 seconds.
2817
+
2818
+ Args:
2819
+ statuses: The command execution statuses to wait for. At least one status must be
2820
+ provided. The command will be returned as soon as it reaches any of the provided
2821
+ statuses.
2822
+
2823
+ timeout_seconds: (Optional) Timeout in seconds to wait for the status, up to 60 seconds. Defaults
2824
+ to 60 seconds.
2825
+
2826
+ extra_headers: Send extra headers
2827
+
2828
+ extra_query: Add additional query parameters to the request
2829
+
2830
+ extra_body: Add additional JSON properties to the request
2831
+
2832
+ timeout: Override the client-level default timeout for this request, in seconds
2833
+
2834
+ idempotency_key: Specify a custom idempotency key for this request
2835
+ """
2836
+ if not devbox_id:
2837
+ raise ValueError(f"Expected a non-empty value for `devbox_id` but received {devbox_id!r}")
2838
+ if not execution_id:
2839
+ raise ValueError(f"Expected a non-empty value for `execution_id` but received {execution_id!r}")
2840
+ return await self._post(
2841
+ f"/v1/devboxes/{devbox_id}/executions/{execution_id}/wait_for_status",
2842
+ body=await async_maybe_transform(
2843
+ {
2844
+ "statuses": statuses,
2845
+ "timeout_seconds": timeout_seconds,
2846
+ },
2847
+ devbox_wait_for_command_params.DevboxWaitForCommandParams,
2848
+ ),
2849
+ options=make_request_options(
2850
+ extra_headers=extra_headers,
2851
+ extra_query=extra_query,
2852
+ extra_body=extra_body,
2853
+ timeout=timeout,
2854
+ idempotency_key=idempotency_key,
2855
+ ),
2856
+ cast_to=DevboxAsyncExecutionDetailView,
2857
+ )
2858
+
2605
2859
  async def write_file_contents(
2606
2860
  self,
2607
2861
  id: str,
@@ -2690,6 +2944,9 @@ class DevboxesResourceWithRawResponse:
2690
2944
  devboxes.download_file,
2691
2945
  BinaryAPIResponse,
2692
2946
  )
2947
+ self.execute = to_raw_response_wrapper(
2948
+ devboxes.execute,
2949
+ )
2693
2950
  self.execute_async = to_raw_response_wrapper(
2694
2951
  devboxes.execute_async,
2695
2952
  )
@@ -2726,6 +2983,9 @@ class DevboxesResourceWithRawResponse:
2726
2983
  self.upload_file = to_raw_response_wrapper(
2727
2984
  devboxes.upload_file,
2728
2985
  )
2986
+ self.wait_for_command = to_raw_response_wrapper(
2987
+ devboxes.wait_for_command,
2988
+ )
2729
2989
  self.write_file_contents = to_raw_response_wrapper(
2730
2990
  devboxes.write_file_contents,
2731
2991
  )
@@ -2784,6 +3044,9 @@ class AsyncDevboxesResourceWithRawResponse:
2784
3044
  devboxes.download_file,
2785
3045
  AsyncBinaryAPIResponse,
2786
3046
  )
3047
+ self.execute = async_to_raw_response_wrapper(
3048
+ devboxes.execute,
3049
+ )
2787
3050
  self.execute_async = async_to_raw_response_wrapper(
2788
3051
  devboxes.execute_async,
2789
3052
  )
@@ -2820,6 +3083,9 @@ class AsyncDevboxesResourceWithRawResponse:
2820
3083
  self.upload_file = async_to_raw_response_wrapper(
2821
3084
  devboxes.upload_file,
2822
3085
  )
3086
+ self.wait_for_command = async_to_raw_response_wrapper(
3087
+ devboxes.wait_for_command,
3088
+ )
2823
3089
  self.write_file_contents = async_to_raw_response_wrapper(
2824
3090
  devboxes.write_file_contents,
2825
3091
  )
@@ -2878,6 +3144,9 @@ class DevboxesResourceWithStreamingResponse:
2878
3144
  devboxes.download_file,
2879
3145
  StreamedBinaryAPIResponse,
2880
3146
  )
3147
+ self.execute = to_streamed_response_wrapper(
3148
+ devboxes.execute,
3149
+ )
2881
3150
  self.execute_async = to_streamed_response_wrapper(
2882
3151
  devboxes.execute_async,
2883
3152
  )
@@ -2914,6 +3183,9 @@ class DevboxesResourceWithStreamingResponse:
2914
3183
  self.upload_file = to_streamed_response_wrapper(
2915
3184
  devboxes.upload_file,
2916
3185
  )
3186
+ self.wait_for_command = to_streamed_response_wrapper(
3187
+ devboxes.wait_for_command,
3188
+ )
2917
3189
  self.write_file_contents = to_streamed_response_wrapper(
2918
3190
  devboxes.write_file_contents,
2919
3191
  )
@@ -2972,6 +3244,9 @@ class AsyncDevboxesResourceWithStreamingResponse:
2972
3244
  devboxes.download_file,
2973
3245
  AsyncStreamedBinaryAPIResponse,
2974
3246
  )
3247
+ self.execute = async_to_streamed_response_wrapper(
3248
+ devboxes.execute,
3249
+ )
2975
3250
  self.execute_async = async_to_streamed_response_wrapper(
2976
3251
  devboxes.execute_async,
2977
3252
  )
@@ -3008,6 +3283,9 @@ class AsyncDevboxesResourceWithStreamingResponse:
3008
3283
  self.upload_file = async_to_streamed_response_wrapper(
3009
3284
  devboxes.upload_file,
3010
3285
  )
3286
+ self.wait_for_command = async_to_streamed_response_wrapper(
3287
+ devboxes.wait_for_command,
3288
+ )
3011
3289
  self.write_file_contents = async_to_streamed_response_wrapper(
3012
3290
  devboxes.write_file_contents,
3013
3291
  )
@@ -335,7 +335,7 @@ class ExecutionsResource(SyncAPIResource):
335
335
  execution_id: str,
336
336
  *,
337
337
  devbox_id: str,
338
- offset: str | NotGiven = NOT_GIVEN,
338
+ offset: str | NotGiven = '0',
339
339
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
340
340
  # The extra values given here take precedence over values defined on the client or passed to this method.
341
341
  extra_headers: Headers | None = None,
@@ -361,11 +361,15 @@ class ExecutionsResource(SyncAPIResource):
361
361
  raise ValueError(f"Expected a non-empty value for `devbox_id` but received {devbox_id!r}")
362
362
  if not execution_id:
363
363
  raise ValueError(f"Expected a non-empty value for `execution_id` but received {execution_id!r}")
364
- if extra_headers and extra_headers.get(RAW_RESPONSE_HEADER):
364
+
365
+ default_headers: Headers = {'Accept': 'text/event-stream'}
366
+ merged_headers = default_headers if extra_headers is None else {**default_headers, **extra_headers}
367
+
368
+ if merged_headers and merged_headers.get(RAW_RESPONSE_HEADER):
365
369
  return self._get(
366
370
  f"/v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stderr_updates",
367
371
  options=make_request_options(
368
- extra_headers=extra_headers,
372
+ extra_headers=merged_headers,
369
373
  extra_query=extra_query,
370
374
  extra_body=extra_body,
371
375
  timeout=timeout,
@@ -383,7 +387,7 @@ class ExecutionsResource(SyncAPIResource):
383
387
  return self._get(
384
388
  f"/v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stderr_updates",
385
389
  options=make_request_options(
386
- extra_headers=extra_headers,
390
+ extra_headers=merged_headers,
387
391
  extra_query=extra_query,
388
392
  extra_body=extra_body,
389
393
  timeout=timeout,
@@ -415,7 +419,7 @@ class ExecutionsResource(SyncAPIResource):
415
419
  execution_id: str,
416
420
  *,
417
421
  devbox_id: str,
418
- offset: str | NotGiven = NOT_GIVEN,
422
+ offset: str | NotGiven = '0',
419
423
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
420
424
  # The extra values given here take precedence over values defined on the client or passed to this method.
421
425
  extra_headers: Headers | None = None,
@@ -441,11 +445,15 @@ class ExecutionsResource(SyncAPIResource):
441
445
  raise ValueError(f"Expected a non-empty value for `devbox_id` but received {devbox_id!r}")
442
446
  if not execution_id:
443
447
  raise ValueError(f"Expected a non-empty value for `execution_id` but received {execution_id!r}")
444
- if extra_headers and extra_headers.get(RAW_RESPONSE_HEADER):
448
+
449
+ default_headers: Headers = {'Accept': 'text/event-stream'}
450
+ merged_headers = default_headers if extra_headers is None else {**default_headers, **extra_headers}
451
+
452
+ if merged_headers and merged_headers.get(RAW_RESPONSE_HEADER):
445
453
  return self._get(
446
454
  f"/v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stdout_updates",
447
455
  options=make_request_options(
448
- extra_headers=extra_headers,
456
+ extra_headers=merged_headers,
449
457
  extra_query=extra_query,
450
458
  extra_body=extra_body,
451
459
  timeout=timeout,
@@ -463,7 +471,7 @@ class ExecutionsResource(SyncAPIResource):
463
471
  return self._get(
464
472
  f"/v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stdout_updates",
465
473
  options=make_request_options(
466
- extra_headers=extra_headers,
474
+ extra_headers=merged_headers,
467
475
  extra_query=extra_query,
468
476
  extra_body=extra_body,
469
477
  timeout=timeout,
@@ -779,7 +787,7 @@ class AsyncExecutionsResource(AsyncAPIResource):
779
787
  execution_id: str,
780
788
  *,
781
789
  devbox_id: str,
782
- offset: str | NotGiven = NOT_GIVEN,
790
+ offset: str | NotGiven = '0',
783
791
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
784
792
  # The extra values given here take precedence over values defined on the client or passed to this method.
785
793
  extra_headers: Headers | None = None,
@@ -805,11 +813,15 @@ class AsyncExecutionsResource(AsyncAPIResource):
805
813
  raise ValueError(f"Expected a non-empty value for `devbox_id` but received {devbox_id!r}")
806
814
  if not execution_id:
807
815
  raise ValueError(f"Expected a non-empty value for `execution_id` but received {execution_id!r}")
808
- if extra_headers and extra_headers.get(RAW_RESPONSE_HEADER):
816
+
817
+ default_headers: Headers = {'Accept': 'text/event-stream'}
818
+ merged_headers = default_headers if extra_headers is None else {**default_headers, **extra_headers}
819
+
820
+ if merged_headers and merged_headers.get(RAW_RESPONSE_HEADER):
809
821
  return await self._get(
810
822
  f"/v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stderr_updates",
811
823
  options=make_request_options(
812
- extra_headers=extra_headers,
824
+ extra_headers=merged_headers,
813
825
  extra_query=extra_query,
814
826
  extra_body=extra_body,
815
827
  timeout=timeout,
@@ -827,7 +839,7 @@ class AsyncExecutionsResource(AsyncAPIResource):
827
839
  return await self._get(
828
840
  f"/v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stderr_updates",
829
841
  options=make_request_options(
830
- extra_headers=extra_headers,
842
+ extra_headers=merged_headers,
831
843
  extra_query=extra_query,
832
844
  extra_body=extra_body,
833
845
  timeout=timeout,
@@ -859,7 +871,7 @@ class AsyncExecutionsResource(AsyncAPIResource):
859
871
  execution_id: str,
860
872
  *,
861
873
  devbox_id: str,
862
- offset: str | NotGiven = NOT_GIVEN,
874
+ offset: str | NotGiven = '0',
863
875
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
864
876
  # The extra values given here take precedence over values defined on the client or passed to this method.
865
877
  extra_headers: Headers | None = None,
@@ -885,12 +897,17 @@ class AsyncExecutionsResource(AsyncAPIResource):
885
897
  raise ValueError(f"Expected a non-empty value for `devbox_id` but received {devbox_id!r}")
886
898
  if not execution_id:
887
899
  raise ValueError(f"Expected a non-empty value for `execution_id` but received {execution_id!r}")
900
+
901
+ default_headers: Headers = {'Accept': 'text/event-stream'}
902
+ merged_headers = default_headers if extra_headers is None else {**default_headers, **extra_headers}
903
+
904
+
888
905
  # If caller requested a raw or streaming response wrapper, return the underlying stream as-is
889
- if extra_headers and extra_headers.get(RAW_RESPONSE_HEADER):
906
+ if merged_headers and merged_headers.get(RAW_RESPONSE_HEADER):
890
907
  return await self._get(
891
908
  f"/v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stdout_updates",
892
909
  options=make_request_options(
893
- extra_headers=extra_headers,
910
+ extra_headers=merged_headers,
894
911
  extra_query=extra_query,
895
912
  extra_body=extra_body,
896
913
  timeout=timeout,
@@ -908,7 +925,7 @@ class AsyncExecutionsResource(AsyncAPIResource):
908
925
  return await self._get(
909
926
  f"/v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stdout_updates",
910
927
  options=make_request_options(
911
- extra_headers=extra_headers,
928
+ extra_headers=merged_headers,
912
929
  extra_query=extra_query,
913
930
  extra_body=extra_body,
914
931
  timeout=timeout,
@@ -41,6 +41,7 @@ from .secret_create_params import SecretCreateParams as SecretCreateParams
41
41
  from .secret_update_params import SecretUpdateParams as SecretUpdateParams
42
42
  from .benchmark_list_params import BenchmarkListParams as BenchmarkListParams
43
43
  from .blueprint_list_params import BlueprintListParams as BlueprintListParams
44
+ from .devbox_execute_params import DevboxExecuteParams as DevboxExecuteParams
44
45
  from .blueprint_preview_view import BlueprintPreviewView as BlueprintPreviewView
45
46
  from .object_download_params import ObjectDownloadParams as ObjectDownloadParams
46
47
  from .repository_list_params import RepositoryListParams as RepositoryListParams
@@ -85,6 +86,7 @@ from .scenario_definition_list_view import ScenarioDefinitionListView as Scenari
85
86
  from .scoring_contract_update_param import ScoringContractUpdateParam as ScoringContractUpdateParam
86
87
  from .blueprint_build_logs_list_view import BlueprintBuildLogsListView as BlueprintBuildLogsListView
87
88
  from .devbox_create_ssh_key_response import DevboxCreateSSHKeyResponse as DevboxCreateSSHKeyResponse
89
+ from .devbox_wait_for_command_params import DevboxWaitForCommandParams as DevboxWaitForCommandParams
88
90
  from .repository_connection_list_view import RepositoryConnectionListView as RepositoryConnectionListView
89
91
  from .repository_inspection_list_view import RepositoryInspectionListView as RepositoryInspectionListView
90
92
  from .devbox_read_file_contents_params import DevboxReadFileContentsParams as DevboxReadFileContentsParams