runloop_api_client 1.17.0__tar.gz → 1.19.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.
- runloop_api_client-1.19.0/.release-please-manifest.json +3 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/CHANGELOG.md +37 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/EXAMPLES.md +32 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/PKG-INFO +2 -2
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/README.md +1 -1
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/api.md +49 -1
- runloop_api_client-1.19.0/examples/devbox_snapshots.py +172 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/registry.py +8 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/pyproject.toml +2 -1
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_client.py +76 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_utils.py +3 -2
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_version.py +1 -1
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/__init__.py +28 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/agents.py +296 -1
- runloop_api_client-1.19.0/src/runloop_api_client/resources/apikeys.py +197 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/axons/__init__.py +14 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/axons/axons.py +32 -0
- runloop_api_client-1.19.0/src/runloop_api_client/resources/axons/events.py +207 -0
- runloop_api_client-1.19.0/src/runloop_api_client/resources/restricted_keys.py +202 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/__init__.py +8 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/agent_devbox_counts_view.py +24 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/agent_list_public_params.py +30 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/api_key_created_view.py +17 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/apikey_create_params.py +14 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/__init__.py +2 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/axons/axon_event_list_view.py +17 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/axons/event_list_params.py +21 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_view.py +3 -1
- runloop_api_client-1.19.0/src/runloop_api_client/types/restricted_key_create_params.py +18 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/restricted_key_created_view.py +20 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/scope_entry_view.py +26 -0
- runloop_api_client-1.19.0/src/runloop_api_client/types/scope_entry_view_param.py +23 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +1 -1
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/launch_parameters.py +3 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/mount.py +1 -1
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +1 -1
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +3 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/mount.py +1 -1
- runloop_api_client-1.19.0/tests/api_resources/axons/test_events.py +120 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_agents.py +204 -1
- runloop_api_client-1.19.0/tests/api_resources/test_apikeys.py +90 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_benchmarks.py +8 -2
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_blueprints.py +24 -6
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_devboxes.py +8 -2
- runloop_api_client-1.19.0/tests/api_resources/test_restricted_keys.py +102 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_scenarios.py +24 -6
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_extract_files.py +9 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/uv.lock +3 -1
- runloop_api_client-1.17.0/.release-please-manifest.json +0 -3
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/.gitignore +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/CONTRIBUTING.md +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/LICENSE +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/README-SDK.md +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/SECURITY.md +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/bin/check-release-environment +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/bin/publish-pypi +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/_harness.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/blueprint_with_build_context.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/devbox_from_blueprint_lifecycle.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/devbox_snapshot_resume.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/devbox_tunnel.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/example_types.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/mcp_github_tools.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/examples/secrets_with_devbox.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/release-please-config.json +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/requirements-dev.lock +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop/lib/.keep +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_base_client.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_compat.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_constants.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_exceptions.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_files.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_models.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_qs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_resource.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_response.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_streaming.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_types.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_compat.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_json.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_logs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_path.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_streams.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_sync.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_transform.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_typing.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_validation.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/lib/.keep +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/lib/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/lib/_ignore.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/lib/context_loader.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/lib/polling.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/lib/polling_async.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/pagination.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/py.typed +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/axons/sql.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/benchmark_jobs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/benchmark_runs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/benchmarks.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/blueprints.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/devboxes/devboxes.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/gateway_configs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/mcp_configs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/network_policies.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/objects.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/secrets.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/_helpers.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/_types.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/agent.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_agent.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_axon.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_benchmark.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_benchmark_run.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_blueprint.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_devbox.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_execution.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_execution_result.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_gateway_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_mcp_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_network_policy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_scenario.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_scenario_builder.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_scenario_run.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_scorer.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_secret.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_snapshot.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/async_storage_object.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/axon.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/benchmark.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/benchmark_run.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/blueprint.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/devbox.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/execution.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/execution_result.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/gateway_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/mcp_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/network_policy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/scenario.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/scenario_builder.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/scenario_run.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/scorer.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/secret.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/snapshot.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/storage_object.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/sdk/sync.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/agent_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/agent_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/agent_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/agent_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axon_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axon_event_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axon_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axon_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axon_publish_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axon_subscribe_sse_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axon_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_batch_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_batch_result_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_column_meta_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_query_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_query_result_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_result_meta_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_statement_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_step_error_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/axons/sql_step_result_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_job_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_job_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_job_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_job_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_run_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_run_list_scenario_runs_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_update_scenarios_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_list_public_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_enable_tunnel_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_execute_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_resource_usage_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_send_std_in_result.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_shutdown_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_wait_for_command_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/execution_send_std_in_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/gateway_config_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/gateway_config_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/gateway_config_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/gateway_config_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/gateway_config_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/input_context.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/input_context_param.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/inspection_source_param.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/mcp_config_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/mcp_config_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/mcp_config_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/mcp_config_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/mcp_config_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/network_policy_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/network_policy_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/network_policy_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/network_policy_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/network_policy_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/object_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/object_download_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/object_download_url_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/object_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/object_list_public_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/object_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/object_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/publish_result_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenario_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scoring_function.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/secret_list_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/secret_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/agent_mount.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/agent_source.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/broker_mount.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/object_mount.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared/run_profile.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/agent_mount.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/agent_source.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/broker_mount.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/object_mount.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/types/tunnel_view.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/axons/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/axons/test_sql.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/devboxes/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/devboxes/test_executions.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/devboxes/test_logs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/scenarios/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/scenarios/test_runs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/scenarios/test_scorers.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_axons.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_benchmark_jobs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_benchmark_runs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_gateway_configs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_mcp_configs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_network_policies.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_objects.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/api_resources/test_secrets.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/conftest.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sample_file.txt +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/async_devbox/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/async_devbox/conftest.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/async_devbox/test_core.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/async_devbox/test_edge_cases.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/async_devbox/test_interfaces.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/async_devbox/test_streaming.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/conftest.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/devbox/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/devbox/conftest.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/devbox/test_core.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/devbox/test_edge_cases.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/devbox/test_interfaces.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/devbox/test_streaming.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_agent.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_agent.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_axon.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_benchmark.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_benchmark_run.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_blueprint.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_execution.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_execution_result.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_gateway_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_network_policy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_ops.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_scenario.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_scenario_builder.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_scenario_run.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_scorer.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_snapshot.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_async_storage_object.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_axon.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_benchmark.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_benchmark_run.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_blueprint.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_execution.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_execution_result.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_gateway_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_helpers.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_network_policy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_ops.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_scenario.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_scenario_builder.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_scenario_run.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_scorer.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_snapshot.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/sdk/test_storage_object.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/README.md +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/conftest.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/examples/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/examples/test_examples.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/README.md +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/__init__.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/conftest.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_agent.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_agent.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_axon.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_benchmark.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_blueprint.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_devbox.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_gateway_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_network_policy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_scenario.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_scorer.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_sdk.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_secret.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_async_storage_object.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_axon.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_benchmark.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_blueprint.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_devbox.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_gateway_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_mcp_config.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_network_policy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_scenario.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_scorer.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_sdk.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_secret.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_snapshot.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/sdk/test_storage_object.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/test_blueprints.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/test_devboxes.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/test_executions.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/test_snapshots.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/smoketests/utils.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_client.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_command_id.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_deepcopy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_files.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_models.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_polling.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_qs.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_required_args.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_response.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_streaming.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_transform.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_utils/test_context_loader.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_utils/test_json.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_utils/test_path.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_utils/test_proxy.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/test_utils/test_typing.py +0 -0
- {runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.19.0 (2026-04-13)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.18.1...v1.19.0](https://github.com/runloopai/api-client-python/compare/v1.18.1...v1.19.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* Add wake on axon event as an API primitive ([#8681](https://github.com/runloopai/api-client-python/issues/8681)) ([255099a](https://github.com/runloopai/api-client-python/commit/255099a940a7892f3c66e6534517e3545d7daccb))
|
|
10
|
+
* Allow API keys to create API and restricted keys ([#8663](https://github.com/runloopai/api-client-python/issues/8663)) ([2e03b55](https://github.com/runloopai/api-client-python/commit/2e03b55638a83a8354481f47a30910e94ff57fc3))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* add missing agent API paths to stainless config ([#8699](https://github.com/runloopai/api-client-python/issues/8699)) ([4f6fe60](https://github.com/runloopai/api-client-python/commit/4f6fe60a63fd31c049e54febb81801031dce2325))
|
|
16
|
+
* ensure file data are only sent as 1 parameter ([f7ca2cc](https://github.com/runloopai/api-client-python/commit/f7ca2cc280f1e7a4ab73f331be8fe3e33ae1c611))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Documentation
|
|
20
|
+
|
|
21
|
+
* add snapshot, suspend & resume example ([#764](https://github.com/runloopai/api-client-python/issues/764)) ([f4b942b](https://github.com/runloopai/api-client-python/commit/f4b942b3329e98a4ea5182c04d6db90fd0b70308))
|
|
22
|
+
* added Async vs Sync tabs, removed top-level class descriptions ([#783](https://github.com/runloopai/api-client-python/issues/783)) ([6a99c56](https://github.com/runloopai/api-client-python/commit/6a99c569914d93e07087ed5003ee7c77f2ab88ff))
|
|
23
|
+
* restructure sphinx docs with async-first API reference and full type coverage ([#782](https://github.com/runloopai/api-client-python/issues/782)) ([514cf93](https://github.com/runloopai/api-client-python/commit/514cf93e8ff8b97bfde171a83cf9abf211193e7f))
|
|
24
|
+
* show full field descriptions for SDK parameter types ([#784](https://github.com/runloopai/api-client-python/issues/784)) ([f04a506](https://github.com/runloopai/api-client-python/commit/f04a5069c33fceb7a4d3db634bfd77ab789314dc))
|
|
25
|
+
|
|
26
|
+
## 1.18.1 (2026-04-10)
|
|
27
|
+
|
|
28
|
+
Full Changelog: [v1.17.0...v1.18.1](https://github.com/runloopai/api-client-python/compare/v1.17.0...v1.18.1)
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* add list events to axon ([#8648](https://github.com/runloopai/api-client-python/issues/8648)) ([1203b57](https://github.com/runloopai/api-client-python/commit/1203b577b105dc0c7cd94eae644a609a525b7c32))
|
|
33
|
+
* TTL shutdown showed non-standard reason in devbox logs ([#8636](https://github.com/runloopai/api-client-python/issues/8636)) ([8ac5cc5](https://github.com/runloopai/api-client-python/commit/8ac5cc5116b771316d28b426bfa13fd6af5cedd2))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Documentation
|
|
37
|
+
|
|
38
|
+
* clarify that we don't support git commit SHA in git agents/blueprint builds ([#8638](https://github.com/runloopai/api-client-python/issues/8638)) ([66b0895](https://github.com/runloopai/api-client-python/commit/66b0895865737ac3dd7f84be74785504fc7bede5))
|
|
39
|
+
|
|
3
40
|
## 1.17.0 (2026-04-09)
|
|
4
41
|
|
|
5
42
|
Full Changelog: [v1.16.0...v1.17.0](https://github.com/runloopai/api-client-python/compare/v1.16.0...v1.17.0)
|
|
@@ -10,6 +10,7 @@ Runnable examples live in [`examples/`](./examples).
|
|
|
10
10
|
- [Blueprint with Build Context](#blueprint-with-build-context)
|
|
11
11
|
- [Devbox From Blueprint (Run Command, Shutdown)](#devbox-from-blueprint-lifecycle)
|
|
12
12
|
- [Devbox Snapshot and Resume](#devbox-snapshot-resume)
|
|
13
|
+
- [Devbox Snapshots (Suspend, Resume, Restore, Delete)](#devbox-snapshots)
|
|
13
14
|
- [Devbox Tunnel (HTTP Server Access)](#devbox-tunnel)
|
|
14
15
|
- [MCP Hub + Claude Code + GitHub](#mcp-github-tools)
|
|
15
16
|
- [Secrets with Devbox and Agent Gateway](#secrets-with-devbox)
|
|
@@ -106,6 +107,37 @@ uv run pytest -m smoketest tests/smoketests/examples/
|
|
|
106
107
|
|
|
107
108
|
**Source:** [`examples/devbox_snapshot_resume.py`](./examples/devbox_snapshot_resume.py)
|
|
108
109
|
|
|
110
|
+
<a id="devbox-snapshots"></a>
|
|
111
|
+
## Devbox Snapshots (Suspend, Resume, Restore, Delete)
|
|
112
|
+
|
|
113
|
+
**Use case:** Upload a file to a devbox, preserve it across suspend and resume, create a disk snapshot, restore multiple devboxes from that snapshot, mutate each copy independently, and delete the snapshot when finished.
|
|
114
|
+
|
|
115
|
+
**Tags:** `devbox`, `snapshot`, `suspend`, `resume`, `files`, `cleanup`
|
|
116
|
+
|
|
117
|
+
### Workflow
|
|
118
|
+
- Create a source devbox
|
|
119
|
+
- Upload a file and mutate it into a shared baseline
|
|
120
|
+
- Suspend and resume the source devbox
|
|
121
|
+
- Create a disk snapshot from the resumed devbox
|
|
122
|
+
- Restore two additional devboxes from the same snapshot baseline
|
|
123
|
+
- Mutate the same file differently in each devbox to prove isolation
|
|
124
|
+
- Shutdown the devboxes and delete the snapshot
|
|
125
|
+
|
|
126
|
+
### Prerequisites
|
|
127
|
+
- `RUNLOOP_API_KEY`
|
|
128
|
+
|
|
129
|
+
### Run
|
|
130
|
+
```sh
|
|
131
|
+
uv run python -m examples.devbox_snapshots
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Test
|
|
135
|
+
```sh
|
|
136
|
+
uv run pytest -m smoketest tests/smoketests/examples/
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Source:** [`examples/devbox_snapshots.py`](./examples/devbox_snapshots.py)
|
|
140
|
+
|
|
109
141
|
<a id="devbox-tunnel"></a>
|
|
110
142
|
## Devbox Tunnel (HTTP Server Access)
|
|
111
143
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: runloop_api_client
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.19.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
|
|
@@ -325,7 +325,7 @@ Error codes are as follows:
|
|
|
325
325
|
|
|
326
326
|
Certain errors are automatically retried 5 times by default, with a short exponential backoff.
|
|
327
327
|
Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,
|
|
328
|
-
429 Rate Limit, and >=500 Internal errors are all retried by default for GET requests. For POST requests, only
|
|
328
|
+
429 Rate Limit, and >=500 Internal errors are all retried by default for GET requests. For POST requests, only
|
|
329
329
|
429 errors will be retried.
|
|
330
330
|
|
|
331
331
|
You can use the `max_retries` option to configure or disable retry settings:
|
|
@@ -288,7 +288,7 @@ Error codes are as follows:
|
|
|
288
288
|
|
|
289
289
|
Certain errors are automatically retried 5 times by default, with a short exponential backoff.
|
|
290
290
|
Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,
|
|
291
|
-
429 Rate Limit, and >=500 Internal errors are all retried by default for GET requests. For POST requests, only
|
|
291
|
+
429 Rate Limit, and >=500 Internal errors are all retried by default for GET requests. For POST requests, only
|
|
292
292
|
429 errors will be retried.
|
|
293
293
|
|
|
294
294
|
You can use the `max_retries` option to configure or disable retry settings:
|
|
@@ -79,7 +79,12 @@ Methods:
|
|
|
79
79
|
Types:
|
|
80
80
|
|
|
81
81
|
```python
|
|
82
|
-
from runloop_api_client.types import
|
|
82
|
+
from runloop_api_client.types import (
|
|
83
|
+
AgentCreateParameters,
|
|
84
|
+
AgentDevboxCountsView,
|
|
85
|
+
AgentListView,
|
|
86
|
+
AgentView,
|
|
87
|
+
)
|
|
83
88
|
```
|
|
84
89
|
|
|
85
90
|
Methods:
|
|
@@ -87,6 +92,9 @@ Methods:
|
|
|
87
92
|
- <code title="post /v1/agents">client.agents.<a href="./src/runloop_api_client/resources/agents.py">create</a>(\*\*<a href="src/runloop_api_client/types/agent_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/agent_view.py">AgentView</a></code>
|
|
88
93
|
- <code title="get /v1/agents/{id}">client.agents.<a href="./src/runloop_api_client/resources/agents.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/agent_view.py">AgentView</a></code>
|
|
89
94
|
- <code title="get /v1/agents">client.agents.<a href="./src/runloop_api_client/resources/agents.py">list</a>(\*\*<a href="src/runloop_api_client/types/agent_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/agent_view.py">SyncAgentsCursorIDPage[AgentView]</a></code>
|
|
95
|
+
- <code title="post /v1/agents/{id}/delete">client.agents.<a href="./src/runloop_api_client/resources/agents.py">delete</a>(id) -> object</code>
|
|
96
|
+
- <code title="get /v1/agents/devbox_counts">client.agents.<a href="./src/runloop_api_client/resources/agents.py">devbox_counts</a>() -> <a href="./src/runloop_api_client/types/agent_devbox_counts_view.py">AgentDevboxCountsView</a></code>
|
|
97
|
+
- <code title="get /v1/agents/list_public">client.agents.<a href="./src/runloop_api_client/resources/agents.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/agent_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/agent_view.py">SyncAgentsCursorIDPage[AgentView]</a></code>
|
|
90
98
|
|
|
91
99
|
# Axons
|
|
92
100
|
|
|
@@ -111,6 +119,18 @@ Methods:
|
|
|
111
119
|
- <code title="post /v1/axons/{id}/publish">client.axons.<a href="./src/runloop_api_client/resources/axons/axons.py">publish</a>(id, \*\*<a href="src/runloop_api_client/types/axon_publish_params.py">params</a>) -> <a href="./src/runloop_api_client/types/publish_result_view.py">PublishResultView</a></code>
|
|
112
120
|
- <code title="get /v1/axons/{id}/subscribe/sse">client.axons.<a href="./src/runloop_api_client/resources/axons/axons.py">subscribe_sse</a>(id, \*\*<a href="src/runloop_api_client/types/axon_subscribe_sse_params.py">params</a>) -> <a href="./src/runloop_api_client/types/axon_event_view.py">AxonEventView</a></code>
|
|
113
121
|
|
|
122
|
+
## Events
|
|
123
|
+
|
|
124
|
+
Types:
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
from runloop_api_client.types.axons import AxonEventListView
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Methods:
|
|
131
|
+
|
|
132
|
+
- <code title="get /v1/axons/{id}/events">client.axons.events.<a href="./src/runloop_api_client/resources/axons/events.py">list</a>(id, \*\*<a href="src/runloop_api_client/types/axons/event_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/axons/axon_event_list_view.py">AxonEventListView</a></code>
|
|
133
|
+
|
|
114
134
|
## Sql
|
|
115
135
|
|
|
116
136
|
Types:
|
|
@@ -427,3 +447,31 @@ Methods:
|
|
|
427
447
|
- <code title="post /v1/mcp-configs/{id}">client.mcp_configs.<a href="./src/runloop_api_client/resources/mcp_configs.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/mcp_config_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/mcp_config_view.py">McpConfigView</a></code>
|
|
428
448
|
- <code title="get /v1/mcp-configs">client.mcp_configs.<a href="./src/runloop_api_client/resources/mcp_configs.py">list</a>(\*\*<a href="src/runloop_api_client/types/mcp_config_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/mcp_config_view.py">SyncMcpConfigsCursorIDPage[McpConfigView]</a></code>
|
|
429
449
|
- <code title="post /v1/mcp-configs/{id}/delete">client.mcp_configs.<a href="./src/runloop_api_client/resources/mcp_configs.py">delete</a>(id) -> <a href="./src/runloop_api_client/types/mcp_config_view.py">McpConfigView</a></code>
|
|
450
|
+
|
|
451
|
+
# Apikeys
|
|
452
|
+
|
|
453
|
+
Types:
|
|
454
|
+
|
|
455
|
+
```python
|
|
456
|
+
from runloop_api_client.types import APIKeyCreatedView, APIKeyCreateParameters
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
Methods:
|
|
460
|
+
|
|
461
|
+
- <code title="post /v1/apikeys">client.apikeys.<a href="./src/runloop_api_client/resources/apikeys.py">create</a>(\*\*<a href="src/runloop_api_client/types/apikey_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/api_key_created_view.py">APIKeyCreatedView</a></code>
|
|
462
|
+
|
|
463
|
+
# RestrictedKeys
|
|
464
|
+
|
|
465
|
+
Types:
|
|
466
|
+
|
|
467
|
+
```python
|
|
468
|
+
from runloop_api_client.types import (
|
|
469
|
+
RestrictedKeyCreatedView,
|
|
470
|
+
RestrictedKeyCreateParameters,
|
|
471
|
+
ScopeEntryView,
|
|
472
|
+
)
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
Methods:
|
|
476
|
+
|
|
477
|
+
- <code title="post /v1/restricted_keys">client.restricted_keys.<a href="./src/runloop_api_client/resources/restricted_keys.py">create</a>(\*\*<a href="src/runloop_api_client/types/restricted_key_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/restricted_key_created_view.py">RestrictedKeyCreatedView</a></code>
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
#!/usr/bin/env -S uv run python
|
|
2
|
+
"""
|
|
3
|
+
---
|
|
4
|
+
title: Devbox Snapshots (Suspend, Resume, Restore, Delete)
|
|
5
|
+
slug: devbox-snapshots
|
|
6
|
+
use_case: Upload a file to a devbox, preserve it across suspend and resume, create a disk snapshot, restore multiple devboxes from that snapshot, mutate each copy independently, and delete the snapshot when finished.
|
|
7
|
+
workflow:
|
|
8
|
+
- Create a source devbox
|
|
9
|
+
- Upload a file and mutate it into a shared baseline
|
|
10
|
+
- Suspend and resume the source devbox
|
|
11
|
+
- Create a disk snapshot from the resumed devbox
|
|
12
|
+
- Restore two additional devboxes from the same snapshot baseline
|
|
13
|
+
- Mutate the same file differently in each devbox to prove isolation
|
|
14
|
+
- Shutdown the devboxes and delete the snapshot
|
|
15
|
+
tags:
|
|
16
|
+
- devbox
|
|
17
|
+
- snapshot
|
|
18
|
+
- suspend
|
|
19
|
+
- resume
|
|
20
|
+
- files
|
|
21
|
+
- cleanup
|
|
22
|
+
prerequisites:
|
|
23
|
+
- RUNLOOP_API_KEY
|
|
24
|
+
run: uv run python -m examples.devbox_snapshots
|
|
25
|
+
test: uv run pytest -m smoketest tests/smoketests/examples/
|
|
26
|
+
---
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
from __future__ import annotations
|
|
30
|
+
|
|
31
|
+
import tempfile
|
|
32
|
+
from pathlib import Path
|
|
33
|
+
|
|
34
|
+
from runloop_api_client import AsyncRunloopSDK
|
|
35
|
+
from runloop_api_client.lib.polling import PollingConfig
|
|
36
|
+
|
|
37
|
+
from ._harness import run_as_cli, unique_name, wrap_recipe
|
|
38
|
+
from .example_types import ExampleCheck, RecipeOutput, RecipeContext
|
|
39
|
+
|
|
40
|
+
FILE_PATH = "/tmp/snapshot-demo.txt"
|
|
41
|
+
POLLING_CONFIG = PollingConfig(timeout_seconds=120.0, interval_seconds=5.0)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
async def recipe(ctx: RecipeContext) -> RecipeOutput:
|
|
45
|
+
"""Demonstrate suspend/resume and shared snapshot restoration with isolated mutations."""
|
|
46
|
+
cleanup = ctx.cleanup
|
|
47
|
+
sdk = AsyncRunloopSDK()
|
|
48
|
+
|
|
49
|
+
resources_created: list[str] = []
|
|
50
|
+
|
|
51
|
+
uploaded_contents = "uploaded-from-local-file"
|
|
52
|
+
baseline_contents = "baseline-after-upload-and-mutation"
|
|
53
|
+
source_contents = "source-devbox-after-isolated-mutation"
|
|
54
|
+
clone_a_contents = "clone-a-after-isolated-mutation"
|
|
55
|
+
clone_b_contents = "clone-b-after-isolated-mutation"
|
|
56
|
+
|
|
57
|
+
with tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".txt") as tmp_file:
|
|
58
|
+
tmp_file.write(uploaded_contents)
|
|
59
|
+
local_file_path = Path(tmp_file.name)
|
|
60
|
+
cleanup.add("local-file:snapshot-demo", lambda: local_file_path.unlink(missing_ok=True))
|
|
61
|
+
|
|
62
|
+
source_devbox = await sdk.devbox.create(
|
|
63
|
+
name=unique_name("snapshot-source"),
|
|
64
|
+
launch_parameters={
|
|
65
|
+
"resource_size_request": "X_SMALL",
|
|
66
|
+
"keep_alive_time_seconds": 60 * 5,
|
|
67
|
+
},
|
|
68
|
+
)
|
|
69
|
+
cleanup.add(f"devbox:{source_devbox.id}", source_devbox.shutdown)
|
|
70
|
+
resources_created.append(f"devbox:{source_devbox.id}")
|
|
71
|
+
|
|
72
|
+
await source_devbox.file.upload(path=FILE_PATH, file=local_file_path)
|
|
73
|
+
uploaded_readback = await source_devbox.file.read(file_path=FILE_PATH)
|
|
74
|
+
|
|
75
|
+
await source_devbox.file.write(file_path=FILE_PATH, contents=baseline_contents)
|
|
76
|
+
|
|
77
|
+
await source_devbox.suspend()
|
|
78
|
+
suspended_info = await source_devbox.await_suspended(polling_config=POLLING_CONFIG)
|
|
79
|
+
|
|
80
|
+
resumed_info = await source_devbox.resume(polling_config=POLLING_CONFIG)
|
|
81
|
+
resumed_readback = await source_devbox.file.read(file_path=FILE_PATH)
|
|
82
|
+
|
|
83
|
+
snapshot = await source_devbox.snapshot_disk(
|
|
84
|
+
name=unique_name("snapshot-baseline"),
|
|
85
|
+
commit_message="Capture the shared baseline after suspend and resume.",
|
|
86
|
+
polling_config=POLLING_CONFIG,
|
|
87
|
+
)
|
|
88
|
+
cleanup.add(f"snapshot:{snapshot.id}", snapshot.delete)
|
|
89
|
+
resources_created.append(f"snapshot:{snapshot.id}")
|
|
90
|
+
|
|
91
|
+
clone_a = await snapshot.create_devbox(
|
|
92
|
+
name=unique_name("snapshot-clone-a"),
|
|
93
|
+
launch_parameters={
|
|
94
|
+
"resource_size_request": "X_SMALL",
|
|
95
|
+
"keep_alive_time_seconds": 60 * 5,
|
|
96
|
+
},
|
|
97
|
+
)
|
|
98
|
+
cleanup.add(f"devbox:{clone_a.id}", clone_a.shutdown)
|
|
99
|
+
resources_created.append(f"devbox:{clone_a.id}")
|
|
100
|
+
|
|
101
|
+
# clone_a used snapshot.create_devbox(); clone_b uses sdk.devbox.create_from_snapshot()
|
|
102
|
+
# to demonstrate both entry points for restoring a devbox from a snapshot.
|
|
103
|
+
clone_b = await sdk.devbox.create_from_snapshot(
|
|
104
|
+
snapshot.id,
|
|
105
|
+
name=unique_name("snapshot-clone-b"),
|
|
106
|
+
launch_parameters={
|
|
107
|
+
"resource_size_request": "X_SMALL",
|
|
108
|
+
"keep_alive_time_seconds": 60 * 5,
|
|
109
|
+
},
|
|
110
|
+
)
|
|
111
|
+
cleanup.add(f"devbox:{clone_b.id}", clone_b.shutdown)
|
|
112
|
+
resources_created.append(f"devbox:{clone_b.id}")
|
|
113
|
+
|
|
114
|
+
clone_a_baseline_readback = await clone_a.file.read(file_path=FILE_PATH)
|
|
115
|
+
clone_b_baseline_readback = await clone_b.file.read(file_path=FILE_PATH)
|
|
116
|
+
|
|
117
|
+
await source_devbox.file.write(file_path=FILE_PATH, contents=source_contents)
|
|
118
|
+
await clone_a.file.write(file_path=FILE_PATH, contents=clone_a_contents)
|
|
119
|
+
await clone_b.file.write(file_path=FILE_PATH, contents=clone_b_contents)
|
|
120
|
+
|
|
121
|
+
source_isolated_readback = await source_devbox.file.read(file_path=FILE_PATH)
|
|
122
|
+
clone_a_isolated_readback = await clone_a.file.read(file_path=FILE_PATH)
|
|
123
|
+
clone_b_isolated_readback = await clone_b.file.read(file_path=FILE_PATH)
|
|
124
|
+
|
|
125
|
+
return RecipeOutput(
|
|
126
|
+
resources_created=resources_created,
|
|
127
|
+
checks=[
|
|
128
|
+
ExampleCheck(
|
|
129
|
+
name="uploaded file is readable on the source devbox",
|
|
130
|
+
passed=uploaded_readback == uploaded_contents,
|
|
131
|
+
details=uploaded_readback,
|
|
132
|
+
),
|
|
133
|
+
ExampleCheck(
|
|
134
|
+
name="suspend reaches the suspended state",
|
|
135
|
+
passed=suspended_info.status == "suspended",
|
|
136
|
+
details=f"status={suspended_info.status}",
|
|
137
|
+
),
|
|
138
|
+
ExampleCheck(
|
|
139
|
+
name="resume preserves the baseline file contents",
|
|
140
|
+
passed=resumed_info.status == "running" and resumed_readback == baseline_contents,
|
|
141
|
+
details=f"status={resumed_info.status}, contents={resumed_readback}",
|
|
142
|
+
),
|
|
143
|
+
ExampleCheck(
|
|
144
|
+
name="multiple devboxes can use the same snapshot baseline",
|
|
145
|
+
passed=(
|
|
146
|
+
clone_a_baseline_readback == baseline_contents and clone_b_baseline_readback == baseline_contents
|
|
147
|
+
),
|
|
148
|
+
details=(f"clone_a={clone_a_baseline_readback}, clone_b={clone_b_baseline_readback}"),
|
|
149
|
+
),
|
|
150
|
+
ExampleCheck(
|
|
151
|
+
name="devboxes diverge after isolated mutations",
|
|
152
|
+
passed=(
|
|
153
|
+
source_isolated_readback == source_contents
|
|
154
|
+
and clone_a_isolated_readback == clone_a_contents
|
|
155
|
+
and clone_b_isolated_readback == clone_b_contents
|
|
156
|
+
),
|
|
157
|
+
details=(
|
|
158
|
+
"source="
|
|
159
|
+
f"{source_isolated_readback}, "
|
|
160
|
+
f"clone_a={clone_a_isolated_readback}, "
|
|
161
|
+
f"clone_b={clone_b_isolated_readback}"
|
|
162
|
+
),
|
|
163
|
+
),
|
|
164
|
+
],
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
run_devbox_snapshots_example = wrap_recipe(recipe)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
if __name__ == "__main__":
|
|
172
|
+
run_as_cli(run_devbox_snapshots_example)
|
|
@@ -9,6 +9,7 @@ from typing import Any, Callable, cast
|
|
|
9
9
|
|
|
10
10
|
from .devbox_tunnel import run_devbox_tunnel_example
|
|
11
11
|
from .example_types import ExampleResult
|
|
12
|
+
from .devbox_snapshots import run_devbox_snapshots_example
|
|
12
13
|
from .mcp_github_tools import run_mcp_github_tools_example
|
|
13
14
|
from .secrets_with_devbox import run_secrets_with_devbox_example
|
|
14
15
|
from .devbox_snapshot_resume import run_devbox_snapshot_resume_example
|
|
@@ -39,6 +40,13 @@ example_registry: list[ExampleRegistryEntry] = [
|
|
|
39
40
|
"required_env": ["RUNLOOP_API_KEY"],
|
|
40
41
|
"run": run_devbox_snapshot_resume_example,
|
|
41
42
|
},
|
|
43
|
+
{
|
|
44
|
+
"slug": "devbox-snapshots",
|
|
45
|
+
"title": "Devbox Snapshots (Suspend, Resume, Restore, Delete)",
|
|
46
|
+
"file_name": "devbox_snapshots.py",
|
|
47
|
+
"required_env": ["RUNLOOP_API_KEY"],
|
|
48
|
+
"run": run_devbox_snapshots_example,
|
|
49
|
+
},
|
|
42
50
|
{
|
|
43
51
|
"slug": "devbox-tunnel",
|
|
44
52
|
"title": "Devbox Tunnel (HTTP Server Access)",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "runloop_api_client"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.19.0"
|
|
4
4
|
description = "The official Python library for the runloop API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "MIT"
|
|
@@ -72,6 +72,7 @@ docs = [
|
|
|
72
72
|
"furo>=2025.9.25",
|
|
73
73
|
"sphinx>=7.4.7",
|
|
74
74
|
"sphinx-autodoc-typehints>=2.3.0",
|
|
75
|
+
"sphinx-tabs>=3.4.0",
|
|
75
76
|
"sphinx-toolbox>=4.0.0",
|
|
76
77
|
]
|
|
77
78
|
|
|
@@ -34,6 +34,7 @@ if TYPE_CHECKING:
|
|
|
34
34
|
from .resources import (
|
|
35
35
|
axons,
|
|
36
36
|
agents,
|
|
37
|
+
apikeys,
|
|
37
38
|
objects,
|
|
38
39
|
secrets,
|
|
39
40
|
devboxes,
|
|
@@ -44,9 +45,11 @@ if TYPE_CHECKING:
|
|
|
44
45
|
benchmark_jobs,
|
|
45
46
|
benchmark_runs,
|
|
46
47
|
gateway_configs,
|
|
48
|
+
restricted_keys,
|
|
47
49
|
network_policies,
|
|
48
50
|
)
|
|
49
51
|
from .resources.agents import AgentsResource, AsyncAgentsResource
|
|
52
|
+
from .resources.apikeys import ApikeysResource, AsyncApikeysResource
|
|
50
53
|
from .resources.objects import ObjectsResource, AsyncObjectsResource
|
|
51
54
|
from .resources.secrets import SecretsResource, AsyncSecretsResource
|
|
52
55
|
from .resources.benchmarks import BenchmarksResource, AsyncBenchmarksResource
|
|
@@ -56,6 +59,7 @@ if TYPE_CHECKING:
|
|
|
56
59
|
from .resources.benchmark_jobs import BenchmarkJobsResource, AsyncBenchmarkJobsResource
|
|
57
60
|
from .resources.benchmark_runs import BenchmarkRunsResource, AsyncBenchmarkRunsResource
|
|
58
61
|
from .resources.gateway_configs import GatewayConfigsResource, AsyncGatewayConfigsResource
|
|
62
|
+
from .resources.restricted_keys import RestrictedKeysResource, AsyncRestrictedKeysResource
|
|
59
63
|
from .resources.network_policies import NetworkPoliciesResource, AsyncNetworkPoliciesResource
|
|
60
64
|
from .resources.devboxes.devboxes import DevboxesResource, AsyncDevboxesResource
|
|
61
65
|
from .resources.scenarios.scenarios import ScenariosResource, AsyncScenariosResource
|
|
@@ -198,6 +202,18 @@ class Runloop(SyncAPIClient):
|
|
|
198
202
|
|
|
199
203
|
return McpConfigsResource(self)
|
|
200
204
|
|
|
205
|
+
@cached_property
|
|
206
|
+
def apikeys(self) -> ApikeysResource:
|
|
207
|
+
from .resources.apikeys import ApikeysResource
|
|
208
|
+
|
|
209
|
+
return ApikeysResource(self)
|
|
210
|
+
|
|
211
|
+
@cached_property
|
|
212
|
+
def restricted_keys(self) -> RestrictedKeysResource:
|
|
213
|
+
from .resources.restricted_keys import RestrictedKeysResource
|
|
214
|
+
|
|
215
|
+
return RestrictedKeysResource(self)
|
|
216
|
+
|
|
201
217
|
@cached_property
|
|
202
218
|
def with_raw_response(self) -> RunloopWithRawResponse:
|
|
203
219
|
return RunloopWithRawResponse(self)
|
|
@@ -446,6 +462,18 @@ class AsyncRunloop(AsyncAPIClient):
|
|
|
446
462
|
|
|
447
463
|
return AsyncMcpConfigsResource(self)
|
|
448
464
|
|
|
465
|
+
@cached_property
|
|
466
|
+
def apikeys(self) -> AsyncApikeysResource:
|
|
467
|
+
from .resources.apikeys import AsyncApikeysResource
|
|
468
|
+
|
|
469
|
+
return AsyncApikeysResource(self)
|
|
470
|
+
|
|
471
|
+
@cached_property
|
|
472
|
+
def restricted_keys(self) -> AsyncRestrictedKeysResource:
|
|
473
|
+
from .resources.restricted_keys import AsyncRestrictedKeysResource
|
|
474
|
+
|
|
475
|
+
return AsyncRestrictedKeysResource(self)
|
|
476
|
+
|
|
449
477
|
@cached_property
|
|
450
478
|
def with_raw_response(self) -> AsyncRunloopWithRawResponse:
|
|
451
479
|
return AsyncRunloopWithRawResponse(self)
|
|
@@ -643,6 +671,18 @@ class RunloopWithRawResponse:
|
|
|
643
671
|
|
|
644
672
|
return McpConfigsResourceWithRawResponse(self._client.mcp_configs)
|
|
645
673
|
|
|
674
|
+
@cached_property
|
|
675
|
+
def apikeys(self) -> apikeys.ApikeysResourceWithRawResponse:
|
|
676
|
+
from .resources.apikeys import ApikeysResourceWithRawResponse
|
|
677
|
+
|
|
678
|
+
return ApikeysResourceWithRawResponse(self._client.apikeys)
|
|
679
|
+
|
|
680
|
+
@cached_property
|
|
681
|
+
def restricted_keys(self) -> restricted_keys.RestrictedKeysResourceWithRawResponse:
|
|
682
|
+
from .resources.restricted_keys import RestrictedKeysResourceWithRawResponse
|
|
683
|
+
|
|
684
|
+
return RestrictedKeysResourceWithRawResponse(self._client.restricted_keys)
|
|
685
|
+
|
|
646
686
|
|
|
647
687
|
class AsyncRunloopWithRawResponse:
|
|
648
688
|
_client: AsyncRunloop
|
|
@@ -728,6 +768,18 @@ class AsyncRunloopWithRawResponse:
|
|
|
728
768
|
|
|
729
769
|
return AsyncMcpConfigsResourceWithRawResponse(self._client.mcp_configs)
|
|
730
770
|
|
|
771
|
+
@cached_property
|
|
772
|
+
def apikeys(self) -> apikeys.AsyncApikeysResourceWithRawResponse:
|
|
773
|
+
from .resources.apikeys import AsyncApikeysResourceWithRawResponse
|
|
774
|
+
|
|
775
|
+
return AsyncApikeysResourceWithRawResponse(self._client.apikeys)
|
|
776
|
+
|
|
777
|
+
@cached_property
|
|
778
|
+
def restricted_keys(self) -> restricted_keys.AsyncRestrictedKeysResourceWithRawResponse:
|
|
779
|
+
from .resources.restricted_keys import AsyncRestrictedKeysResourceWithRawResponse
|
|
780
|
+
|
|
781
|
+
return AsyncRestrictedKeysResourceWithRawResponse(self._client.restricted_keys)
|
|
782
|
+
|
|
731
783
|
|
|
732
784
|
class RunloopWithStreamedResponse:
|
|
733
785
|
_client: Runloop
|
|
@@ -813,6 +865,18 @@ class RunloopWithStreamedResponse:
|
|
|
813
865
|
|
|
814
866
|
return McpConfigsResourceWithStreamingResponse(self._client.mcp_configs)
|
|
815
867
|
|
|
868
|
+
@cached_property
|
|
869
|
+
def apikeys(self) -> apikeys.ApikeysResourceWithStreamingResponse:
|
|
870
|
+
from .resources.apikeys import ApikeysResourceWithStreamingResponse
|
|
871
|
+
|
|
872
|
+
return ApikeysResourceWithStreamingResponse(self._client.apikeys)
|
|
873
|
+
|
|
874
|
+
@cached_property
|
|
875
|
+
def restricted_keys(self) -> restricted_keys.RestrictedKeysResourceWithStreamingResponse:
|
|
876
|
+
from .resources.restricted_keys import RestrictedKeysResourceWithStreamingResponse
|
|
877
|
+
|
|
878
|
+
return RestrictedKeysResourceWithStreamingResponse(self._client.restricted_keys)
|
|
879
|
+
|
|
816
880
|
|
|
817
881
|
class AsyncRunloopWithStreamedResponse:
|
|
818
882
|
_client: AsyncRunloop
|
|
@@ -898,6 +962,18 @@ class AsyncRunloopWithStreamedResponse:
|
|
|
898
962
|
|
|
899
963
|
return AsyncMcpConfigsResourceWithStreamingResponse(self._client.mcp_configs)
|
|
900
964
|
|
|
965
|
+
@cached_property
|
|
966
|
+
def apikeys(self) -> apikeys.AsyncApikeysResourceWithStreamingResponse:
|
|
967
|
+
from .resources.apikeys import AsyncApikeysResourceWithStreamingResponse
|
|
968
|
+
|
|
969
|
+
return AsyncApikeysResourceWithStreamingResponse(self._client.apikeys)
|
|
970
|
+
|
|
971
|
+
@cached_property
|
|
972
|
+
def restricted_keys(self) -> restricted_keys.AsyncRestrictedKeysResourceWithStreamingResponse:
|
|
973
|
+
from .resources.restricted_keys import AsyncRestrictedKeysResourceWithStreamingResponse
|
|
974
|
+
|
|
975
|
+
return AsyncRestrictedKeysResourceWithStreamingResponse(self._client.restricted_keys)
|
|
976
|
+
|
|
901
977
|
|
|
902
978
|
Client = Runloop
|
|
903
979
|
|
{runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/_utils/_utils.py
RENAMED
|
@@ -86,8 +86,9 @@ def _extract_items(
|
|
|
86
86
|
index += 1
|
|
87
87
|
if is_dict(obj):
|
|
88
88
|
try:
|
|
89
|
-
#
|
|
90
|
-
|
|
89
|
+
# Remove the field if there are no more dict keys in the path,
|
|
90
|
+
# only "<array>" traversal markers or end.
|
|
91
|
+
if all(p == "<array>" for p in path[index:]):
|
|
91
92
|
item = obj.pop(key)
|
|
92
93
|
else:
|
|
93
94
|
item = obj[key]
|
{runloop_api_client-1.17.0 → runloop_api_client-1.19.0}/src/runloop_api_client/resources/__init__.py
RENAMED
|
@@ -16,6 +16,14 @@ from .agents import (
|
|
|
16
16
|
AgentsResourceWithStreamingResponse,
|
|
17
17
|
AsyncAgentsResourceWithStreamingResponse,
|
|
18
18
|
)
|
|
19
|
+
from .apikeys import (
|
|
20
|
+
ApikeysResource,
|
|
21
|
+
AsyncApikeysResource,
|
|
22
|
+
ApikeysResourceWithRawResponse,
|
|
23
|
+
AsyncApikeysResourceWithRawResponse,
|
|
24
|
+
ApikeysResourceWithStreamingResponse,
|
|
25
|
+
AsyncApikeysResourceWithStreamingResponse,
|
|
26
|
+
)
|
|
19
27
|
from .objects import (
|
|
20
28
|
ObjectsResource,
|
|
21
29
|
AsyncObjectsResource,
|
|
@@ -96,6 +104,14 @@ from .gateway_configs import (
|
|
|
96
104
|
GatewayConfigsResourceWithStreamingResponse,
|
|
97
105
|
AsyncGatewayConfigsResourceWithStreamingResponse,
|
|
98
106
|
)
|
|
107
|
+
from .restricted_keys import (
|
|
108
|
+
RestrictedKeysResource,
|
|
109
|
+
AsyncRestrictedKeysResource,
|
|
110
|
+
RestrictedKeysResourceWithRawResponse,
|
|
111
|
+
AsyncRestrictedKeysResourceWithRawResponse,
|
|
112
|
+
RestrictedKeysResourceWithStreamingResponse,
|
|
113
|
+
AsyncRestrictedKeysResourceWithStreamingResponse,
|
|
114
|
+
)
|
|
99
115
|
from .network_policies import (
|
|
100
116
|
NetworkPoliciesResource,
|
|
101
117
|
AsyncNetworkPoliciesResource,
|
|
@@ -184,4 +200,16 @@ __all__ = [
|
|
|
184
200
|
"AsyncMcpConfigsResourceWithRawResponse",
|
|
185
201
|
"McpConfigsResourceWithStreamingResponse",
|
|
186
202
|
"AsyncMcpConfigsResourceWithStreamingResponse",
|
|
203
|
+
"ApikeysResource",
|
|
204
|
+
"AsyncApikeysResource",
|
|
205
|
+
"ApikeysResourceWithRawResponse",
|
|
206
|
+
"AsyncApikeysResourceWithRawResponse",
|
|
207
|
+
"ApikeysResourceWithStreamingResponse",
|
|
208
|
+
"AsyncApikeysResourceWithStreamingResponse",
|
|
209
|
+
"RestrictedKeysResource",
|
|
210
|
+
"AsyncRestrictedKeysResource",
|
|
211
|
+
"RestrictedKeysResourceWithRawResponse",
|
|
212
|
+
"AsyncRestrictedKeysResourceWithRawResponse",
|
|
213
|
+
"RestrictedKeysResourceWithStreamingResponse",
|
|
214
|
+
"AsyncRestrictedKeysResourceWithStreamingResponse",
|
|
187
215
|
]
|