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.
- runloop_api_client-1.12.1/.release-please-manifest.json +3 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/CHANGELOG.md +28 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/EXAMPLES.md +32 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/PKG-INFO +2 -2
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/README-SDK.md +1 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/api.md +0 -2
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/mcp_github_tools.py +2 -2
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/registry.py +8 -0
- runloop_api_client-1.12.1/examples/secrets_with_devbox.py +112 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/pyproject.toml +2 -2
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_compat.py +9 -2
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_version.py +1 -1
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/benchmark_runs.py +10 -4
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -122
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/secrets.py +78 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/__init__.py +9 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/_types.py +0 -5
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_.py +128 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_devbox.py +0 -30
- runloop_api_client-1.12.1/src/runloop_api_client/sdk/async_secret.py +130 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/devbox.py +0 -30
- runloop_api_client-1.12.1/src/runloop_api_client/sdk/secret.py +130 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/sync.py +128 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/__init__.py +0 -2
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_job_view.py +1 -1
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_run_view.py +1 -1
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_devboxes.py +0 -95
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/test_interfaces.py +0 -20
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/test_interfaces.py +0 -27
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_devbox.py +0 -29
- runloop_api_client-1.12.1/tests/smoketests/sdk/test_async_secret.py +128 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_devbox.py +0 -29
- runloop_api_client-1.12.1/tests/smoketests/sdk/test_secret.py +145 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/uv.lock +204 -151
- runloop_api_client-1.11.0/.release-please-manifest.json +0 -3
- runloop_api_client-1.11.0/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -12
- runloop_api_client-1.11.0/src/runloop_api_client/types/devbox_tunnel_view.py +0 -16
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/.gitignore +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/CONTRIBUTING.md +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/LICENSE +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/README.md +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/SECURITY.md +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/bin/check-release-environment +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/bin/publish-pypi +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/_harness.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/blueprint_with_build_context.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/devbox_from_blueprint_lifecycle.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/devbox_snapshot_resume.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/examples/example_types.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/release-please-config.json +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/requirements-dev.lock +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop/lib/.keep +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_base_client.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_client.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_constants.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_exceptions.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_files.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_models.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_qs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_resource.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_response.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_streaming.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_types.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_compat.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_json.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_logs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_proxy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_reflection.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_streams.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_sync.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_transform.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_typing.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_utils.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/_utils/_validation.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/.keep +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/_ignore.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/context_loader.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/polling.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/lib/polling_async.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/pagination.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/py.typed +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/agents.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/benchmark_jobs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/benchmarks.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/blueprints.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/gateway_configs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/mcp_configs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/network_policies.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/objects.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/repositories.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/_helpers.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/agent.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_agent.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_benchmark.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_benchmark_run.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_blueprint.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_execution.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_execution_result.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_gateway_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_mcp_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_network_policy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_scenario.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_scenario_builder.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_scenario_run.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_scorer.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_snapshot.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/async_storage_object.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/benchmark.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/benchmark_run.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/blueprint.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/execution.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/execution_result.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/gateway_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/mcp_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/network_policy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/scenario.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/scenario_builder.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/scenario_run.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/scorer.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/snapshot.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/sdk/storage_object.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/agent_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/agent_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/agent_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/agent_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_job_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_job_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_job_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_run_list_params.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_update_scenarios_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/benchmark_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_list_public_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/blueprint_view.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_create_params.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_enable_tunnel_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_execute_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_list_view.py +0 -0
- {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
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_resource_usage_view.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_shutdown_params.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_update_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devbox_view.py +0 -0
- {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
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
- {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
- {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
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_update_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/gateway_config_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/input_context.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/input_context_param.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/input_context_update_param.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/inspection_source_param.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_update_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/mcp_config_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_update_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/network_policy_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_download_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_download_url_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_list_public_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/object_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_connection_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_inspect_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_environment.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_run_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_update_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenario_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_contract.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_function.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_function_param.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_create_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_list_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_list_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_update_params.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/secret_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/after_idle.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/agent_mount.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/agent_source.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/mount.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/object_mount.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared/run_profile.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/agent_mount.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/agent_source.py +0 -0
- {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
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/mount.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/object_mount.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/types/tunnel_view.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_browsers.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_computers.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_executions.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/devboxes/test_logs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/scenarios/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/scenarios/test_runs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/scenarios/test_scorers.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_agents.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_benchmark_jobs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_benchmark_runs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_benchmarks.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_blueprints.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_gateway_configs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_mcp_configs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_network_policies.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_objects.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_repositories.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_scenarios.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/api_resources/test_secrets.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/conftest.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sample_file.txt +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/conftest.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/test_core.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/test_edge_cases.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/async_devbox/test_streaming.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/conftest.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/conftest.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/test_core.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/test_edge_cases.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/devbox/test_streaming.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_agent.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_agent.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_benchmark.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_benchmark_run.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_blueprint.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_execution.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_execution_result.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_gateway_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_network_policy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_ops.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_scenario.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_scenario_builder.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_scenario_run.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_scorer.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_snapshot.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_async_storage_object.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_benchmark.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_benchmark_run.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_blueprint.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_execution.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_execution_result.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_gateway_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_helpers.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_network_policy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_ops.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_scenario.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_scenario_builder.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_scenario_run.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_scorer.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_snapshot.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/sdk/test_storage_object.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/README.md +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/conftest.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/examples/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/examples/test_examples.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/README.md +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/__init__.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/conftest.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_agent.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_agent.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_benchmark.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_blueprint.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_gateway_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_network_policy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_scenario.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_scorer.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_sdk.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_async_storage_object.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_benchmark.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_blueprint.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_gateway_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_mcp_config.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_network_policy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_scenario.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_scorer.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_sdk.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_snapshot.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/sdk/test_storage_object.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_blueprints.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_devboxes.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_executions.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/test_snapshots.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/smoketests/utils.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_client.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_command_id.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_deepcopy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_extract_files.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_files.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_models.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_polling.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_qs.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_required_args.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_response.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_streaming.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_transform.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_context_loader.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_datetime_parse.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_json.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_proxy.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/test_utils/test_typing.py +0 -0
- {runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/tests/utils.py +0 -0
|
@@ -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.
|
|
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.
|
|
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.
|
|
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}",
|
|
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.
|
|
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.
|
|
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
|
-
|
|
159
|
+
**kwargs,
|
|
153
160
|
)
|
|
154
161
|
return cast(
|
|
155
162
|
"dict[str, Any]",
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
)
|
{runloop_api_client-1.11.0 → runloop_api_client-1.12.1}/src/runloop_api_client/resources/secrets.py
RENAMED
|
@@ -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
|
)
|