runloop-api-client 1.12.1__tar.gz → 1.13.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.12.1 → runloop_api_client-1.13.0}/.gitignore +1 -0
- runloop_api_client-1.13.0/.release-please-manifest.json +3 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/CHANGELOG.md +32 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/CONTRIBUTING.md +1 -1
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/EXAMPLES.md +40 -11
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/PKG-INFO +1 -1
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/api.md +24 -1
- runloop_api_client-1.13.0/examples/devbox_tunnel.py +117 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/examples/registry.py +9 -1
- runloop_api_client-1.13.0/examples/secrets_with_devbox.py +183 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/pyproject.toml +1 -1
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_client.py +38 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/__init__.py +1 -0
- runloop_api_client-1.13.0/src/runloop_api_client/_utils/_path.py +127 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_version.py +1 -1
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/__init__.py +14 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/agents.py +13 -3
- runloop_api_client-1.13.0/src/runloop_api_client/resources/axons.py +532 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/benchmark_jobs.py +13 -3
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/benchmark_runs.py +29 -9
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/benchmarks.py +29 -9
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/blueprints.py +27 -7
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/devboxes/browsers.py +3 -3
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/devboxes/computers.py +9 -9
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/devboxes/devboxes.py +83 -82
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +17 -7
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/devboxes/executions.py +63 -19
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/devboxes/logs.py +3 -3
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/gateway_configs.py +17 -7
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/mcp_configs.py +17 -7
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/network_policies.py +17 -7
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/objects.py +29 -9
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/repositories.py +23 -13
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/scenarios/runs.py +21 -11
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/scenarios/scenarios.py +27 -7
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/scenarios/scorers.py +15 -5
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/secrets.py +5 -5
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/_types.py +1 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_devbox.py +1 -1
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/devbox.py +1 -1
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/__init__.py +6 -1
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/agent_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/agent_list_view.py +1 -10
- runloop_api_client-1.13.0/src/runloop_api_client/types/axon_create_params.py +13 -0
- runloop_api_client-1.13.0/src/runloop_api_client/types/axon_event_view.py +30 -0
- runloop_api_client-1.13.0/src/runloop_api_client/types/axon_list_view.py +13 -0
- runloop_api_client-1.13.0/src/runloop_api_client/types/axon_publish_params.py +21 -0
- runloop_api_client-1.13.0/src/runloop_api_client/types/axon_view.py +18 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_job_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_job_list_view.py +0 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_list_public_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_run_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_run_list_scenario_runs_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_list_public_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_list_view.py +0 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/gateway_config_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/gateway_config_list_view.py +1 -4
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/mcp_config_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/mcp_config_list_view.py +1 -4
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/network_policy_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/network_policy_list_view.py +1 -4
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/object_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/object_list_public_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/object_list_view.py +1 -10
- runloop_api_client-1.13.0/src/runloop_api_client/types/publish_result_view.py +13 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_list_public_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -2
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/run_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +6 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/secret_list_view.py +1 -10
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/launch_parameters.py +2 -3
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +2 -3
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/devboxes/test_disk_snapshots.py +2 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/scenarios/test_runs.py +2 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/scenarios/test_scorers.py +2 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_agents.py +2 -0
- runloop_api_client-1.13.0/tests/api_resources/test_axons.py +396 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_benchmark_jobs.py +2 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_benchmark_runs.py +4 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_benchmarks.py +4 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_blueprints.py +4 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_devboxes.py +38 -52
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_gateway_configs.py +2 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_mcp_configs.py +2 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_network_policies.py +2 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_objects.py +4 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_repositories.py +2 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_scenarios.py +4 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/async_devbox/test_interfaces.py +0 -1
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/devbox/test_interfaces.py +0 -2
- runloop_api_client-1.13.0/tests/test_utils/test_path.py +89 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/uv.lock +2 -2
- runloop_api_client-1.12.1/.release-please-manifest.json +0 -3
- runloop_api_client-1.12.1/examples/secrets_with_devbox.py +0 -112
- runloop_api_client-1.12.1/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -12
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/LICENSE +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/README-SDK.md +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/README.md +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/SECURITY.md +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/bin/check-release-environment +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/bin/publish-pypi +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/examples/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/examples/_harness.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/examples/blueprint_with_build_context.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/examples/devbox_from_blueprint_lifecycle.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/examples/devbox_snapshot_resume.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/examples/example_types.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/examples/mcp_github_tools.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/release-please-config.json +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/requirements-dev.lock +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop/lib/.keep +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_base_client.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_compat.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_constants.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_exceptions.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_files.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_models.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_qs.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_resource.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_streaming.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_types.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_compat.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_datetime_parse.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_json.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_logs.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_streams.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_sync.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_transform.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_typing.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_utils.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/_utils/_validation.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/lib/.keep +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/lib/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/lib/_ignore.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/lib/context_loader.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/lib/polling.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/lib/polling_async.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/pagination.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/py.typed +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/_helpers.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/agent.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_agent.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_benchmark.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_benchmark_run.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_blueprint.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_execution.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_execution_result.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_gateway_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_mcp_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_network_policy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_scenario.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_scenario_builder.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_scenario_run.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_scorer.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_secret.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_snapshot.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/async_storage_object.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/benchmark.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/benchmark_run.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/blueprint.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/execution.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/execution_result.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/gateway_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/mcp_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/network_policy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/scenario.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/scenario_builder.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/scenario_run.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/scorer.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/secret.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/snapshot.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/storage_object.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/sdk/sync.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/agent_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/agent_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_job_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_job_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_update_scenarios_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_enable_tunnel_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_execute_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_resource_usage_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_send_std_in_result.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_shutdown_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_wait_for_command_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/execution_kill_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/execution_send_std_in_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/execution_update_chunk.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/gateway_config_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/gateway_config_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/gateway_config_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/input_context.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/input_context_param.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/inspection_source_param.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/mcp_config_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/mcp_config_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/mcp_config_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/network_policy_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/network_policy_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/network_policy_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/object_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/object_download_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/object_download_url_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/object_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_inspect_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_manifest_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenario_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scoring_function.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/secret_list_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/secret_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/agent_mount.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/agent_source.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/mount.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/object_mount.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared/run_profile.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/agent_mount.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/agent_source.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/mount.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/object_mount.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/shared_params/run_profile.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/src/runloop_api_client/types/tunnel_view.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/devboxes/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/devboxes/test_computers.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/devboxes/test_executions.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/devboxes/test_logs.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/scenarios/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/api_resources/test_secrets.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/conftest.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sample_file.txt +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/async_devbox/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/async_devbox/conftest.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/async_devbox/test_core.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/async_devbox/test_edge_cases.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/async_devbox/test_streaming.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/conftest.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/devbox/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/devbox/conftest.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/devbox/test_core.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/devbox/test_edge_cases.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/devbox/test_streaming.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_agent.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_agent.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_benchmark.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_benchmark_run.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_blueprint.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_execution.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_execution_result.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_gateway_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_network_policy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_ops.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_scenario.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_scenario_builder.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_scenario_run.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_scorer.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_snapshot.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_async_storage_object.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_benchmark.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_benchmark_run.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_blueprint.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_execution.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_execution_result.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_gateway_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_helpers.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_network_policy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_ops.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_scenario.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_scenario_builder.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_scenario_run.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_scorer.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_snapshot.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/sdk/test_storage_object.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/README.md +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/conftest.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/examples/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/examples/test_examples.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/README.md +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/__init__.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/conftest.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_agent.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_agent.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_benchmark.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_blueprint.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_devbox.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_gateway_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_network_policy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_scenario.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_scorer.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_sdk.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_secret.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_snapshot.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_async_storage_object.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_benchmark.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_blueprint.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_devbox.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_gateway_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_mcp_config.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_network_policy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_scenario.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_scorer.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_sdk.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_secret.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_snapshot.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/sdk/test_storage_object.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/test_blueprints.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/test_devboxes.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/test_executions.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/test_scenarios_benchmarks.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/test_snapshots.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/smoketests/utils.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_client.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_command_id.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_deepcopy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_extract_files.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_files.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_models.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_polling.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_qs.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_required_args.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_response.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_streaming.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_transform.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_utils/test_context_loader.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_utils/test_json.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_utils/test_proxy.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/test_utils/test_typing.py +0 -0
- {runloop_api_client-1.12.1 → runloop_api_client-1.13.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.13.0 (2026-03-24)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.12.1...v1.13.0](https://github.com/runloopai/api-client-python/compare/v1.12.1...v1.13.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* example for using tunnels ([#754](https://github.com/runloopai/api-client-python/issues/754)) ([97bcd70](https://github.com/runloopai/api-client-python/commit/97bcd701c6aac8077b8dea9cd4d0693d524de9b7))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* add AxonEventView schema to OpenAPI spec for SSE subscribe endpoint ([#8274](https://github.com/runloopai/api-client-python/issues/8274)) ([618f1bb](https://github.com/runloopai/api-client-python/commit/618f1bb48ff7757e5285cddd083f49ccbbeeed3c))
|
|
15
|
+
* add name to Axon ([#8277](https://github.com/runloopai/api-client-python/issues/8277)) ([7bdb527](https://github.com/runloopai/api-client-python/commit/7bdb527e9011a68f456c927f138fac22d73b3035))
|
|
16
|
+
* sanitize endpoint path params ([5182d36](https://github.com/runloopai/api-client-python/commit/5182d3666b20f4fe5b245201e0b992705443d024))
|
|
17
|
+
* sanitize endpoint path params ([0993026](https://github.com/runloopai/api-client-python/commit/0993026b7dd67b1f7a9a81036c7fc93ab638112d))
|
|
18
|
+
* **tunnels:** allow tunnel removal ([#8257](https://github.com/runloopai/api-client-python/issues/8257)) ([6cff97e](https://github.com/runloopai/api-client-python/commit/6cff97ee43a2f2c906833e9900841e34d478d176))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Chores
|
|
22
|
+
|
|
23
|
+
* **internal:** update gitignore ([96bd6fd](https://github.com/runloopai/api-client-python/commit/96bd6fdc7b767371b21f5753729f01020f9e78ec))
|
|
24
|
+
* remove dead port configuration code, mark deprecated / ignored in the API ([#8195](https://github.com/runloopai/api-client-python/issues/8195)) ([e565324](https://github.com/runloopai/api-client-python/commit/e5653245b65f7afd6210abe1b507ae64151da9b7))
|
|
25
|
+
* **tests:** bump steady to v0.19.4 ([66cb637](https://github.com/runloopai/api-client-python/commit/66cb637779eaea2cacc4b1a06ac3a33f2358b0ee))
|
|
26
|
+
* **tests:** bump steady to v0.19.5 ([601c93a](https://github.com/runloopai/api-client-python/commit/601c93afffb8379770ac895b89235903c8348b00))
|
|
27
|
+
* **tests:** bump steady to v0.19.6 ([95b2ffc](https://github.com/runloopai/api-client-python/commit/95b2ffc5d487f6595ec1dc73b6a34696c309f67d))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Refactors
|
|
31
|
+
|
|
32
|
+
* **tests:** switch from prism to steady ([dd8fe60](https://github.com/runloopai/api-client-python/commit/dd8fe60922808bb0f001b49a99988004195d806f))
|
|
33
|
+
* undeprecate total_count from pagination API, remove remaining_count ([#8084](https://github.com/runloopai/api-client-python/issues/8084)) ([4bd524f](https://github.com/runloopai/api-client-python/commit/4bd524fa32e6aad6efeeabd8a5bbef5e3c7ea742))
|
|
34
|
+
|
|
3
35
|
## 1.12.1 (2026-03-19)
|
|
4
36
|
|
|
5
37
|
Full Changelog: [v1.12.0...v1.12.1](https://github.com/runloopai/api-client-python/compare/v1.12.0...v1.12.1)
|
|
@@ -85,7 +85,7 @@ $ pip install ./path-to-wheel-file.whl
|
|
|
85
85
|
|
|
86
86
|
## Running tests
|
|
87
87
|
|
|
88
|
-
Most tests require you to [set up a mock server](https://github.com/
|
|
88
|
+
Most tests require you to [set up a mock server](https://github.com/dgellow/steady) against the OpenAPI spec to run the tests.
|
|
89
89
|
|
|
90
90
|
```sh
|
|
91
91
|
$ ./scripts/mock
|
|
@@ -10,8 +10,9 @@ 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 Tunnel (HTTP Server Access)](#devbox-tunnel)
|
|
13
14
|
- [MCP Hub + Claude Code + GitHub](#mcp-github-tools)
|
|
14
|
-
- [Secrets with Devbox
|
|
15
|
+
- [Secrets with Devbox and Agent Gateway](#secrets-with-devbox)
|
|
15
16
|
|
|
16
17
|
<a id="blueprint-with-build-context"></a>
|
|
17
18
|
## Blueprint with Build Context
|
|
@@ -105,6 +106,35 @@ uv run pytest -m smoketest tests/smoketests/examples/
|
|
|
105
106
|
|
|
106
107
|
**Source:** [`examples/devbox_snapshot_resume.py`](./examples/devbox_snapshot_resume.py)
|
|
107
108
|
|
|
109
|
+
<a id="devbox-tunnel"></a>
|
|
110
|
+
## Devbox Tunnel (HTTP Server Access)
|
|
111
|
+
|
|
112
|
+
**Use case:** Create a devbox with a tunnel, start an HTTP server, and access the server from the local machine through the tunnel. Uses the async SDK.
|
|
113
|
+
|
|
114
|
+
**Tags:** `devbox`, `tunnel`, `networking`, `http`, `async`
|
|
115
|
+
|
|
116
|
+
### Workflow
|
|
117
|
+
- Create a devbox with tunnel configuration
|
|
118
|
+
- Start an HTTP server inside the devbox
|
|
119
|
+
- Make an HTTP request from the local machine through the tunnel
|
|
120
|
+
- Validate the response
|
|
121
|
+
- Shutdown the devbox
|
|
122
|
+
|
|
123
|
+
### Prerequisites
|
|
124
|
+
- `RUNLOOP_API_KEY`
|
|
125
|
+
|
|
126
|
+
### Run
|
|
127
|
+
```sh
|
|
128
|
+
uv run python -m examples.devbox_tunnel
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Test
|
|
132
|
+
```sh
|
|
133
|
+
uv run pytest -m smoketest tests/smoketests/examples/
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Source:** [`examples/devbox_tunnel.py`](./examples/devbox_tunnel.py)
|
|
137
|
+
|
|
108
138
|
<a id="mcp-github-tools"></a>
|
|
109
139
|
## MCP Hub + Claude Code + GitHub
|
|
110
140
|
|
|
@@ -138,20 +168,19 @@ uv run pytest -m smoketest tests/smoketests/examples/
|
|
|
138
168
|
**Source:** [`examples/mcp_github_tools.py`](./examples/mcp_github_tools.py)
|
|
139
169
|
|
|
140
170
|
<a id="secrets-with-devbox"></a>
|
|
141
|
-
## Secrets with Devbox
|
|
171
|
+
## Secrets with Devbox and Agent Gateway
|
|
142
172
|
|
|
143
|
-
**Use case:**
|
|
173
|
+
**Use case:** Use a normal secret for sensitive app data in the devbox and agent gateway for upstream API credentials that should never be exposed to the agent.
|
|
144
174
|
|
|
145
|
-
**Tags:** `secrets`, `devbox`, `environment-variables`, `cleanup`
|
|
175
|
+
**Tags:** `secrets`, `devbox`, `agent-gateway`, `credentials`, `environment-variables`, `cleanup`
|
|
146
176
|
|
|
147
177
|
### Workflow
|
|
148
|
-
- Create a secret
|
|
149
|
-
- Create a
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
- Shutdown devbox and delete secret
|
|
178
|
+
- Create a secret for application data that should be available inside the devbox
|
|
179
|
+
- Create a separate secret for an upstream API credential
|
|
180
|
+
- Create an agent gateway config for an upstream API
|
|
181
|
+
- Launch a devbox with one secret injected directly and the credential wired through agent gateway
|
|
182
|
+
- Verify the devbox can read MAGIC_NUMBER while the upstream API credential is replaced with gateway values
|
|
183
|
+
- Shutdown the devbox and delete the gateway config and both secrets
|
|
155
184
|
|
|
156
185
|
### Prerequisites
|
|
157
186
|
- `RUNLOOP_API_KEY`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: runloop_api_client
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.13.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
|
|
@@ -87,6 +87,29 @@ Methods:
|
|
|
87
87
|
- <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>
|
|
88
88
|
- <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>
|
|
89
89
|
|
|
90
|
+
# Axons
|
|
91
|
+
|
|
92
|
+
Types:
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
from runloop_api_client.types import (
|
|
96
|
+
AxonCreateParams,
|
|
97
|
+
AxonEventView,
|
|
98
|
+
AxonListView,
|
|
99
|
+
AxonView,
|
|
100
|
+
PublishParams,
|
|
101
|
+
PublishResultView,
|
|
102
|
+
)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Methods:
|
|
106
|
+
|
|
107
|
+
- <code title="post /v1/axons">client.axons.<a href="./src/runloop_api_client/resources/axons.py">create</a>(\*\*<a href="src/runloop_api_client/types/axon_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/axon_view.py">AxonView</a></code>
|
|
108
|
+
- <code title="get /v1/axons/{id}">client.axons.<a href="./src/runloop_api_client/resources/axons.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/axon_view.py">AxonView</a></code>
|
|
109
|
+
- <code title="get /v1/axons">client.axons.<a href="./src/runloop_api_client/resources/axons.py">list</a>() -> <a href="./src/runloop_api_client/types/axon_list_view.py">AxonListView</a></code>
|
|
110
|
+
- <code title="post /v1/axons/{id}/publish">client.axons.<a href="./src/runloop_api_client/resources/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>
|
|
111
|
+
- <code title="get /v1/axons/{id}/subscribe/sse">client.axons.<a href="./src/runloop_api_client/resources/axons.py">subscribe_sse</a>(id) -> <a href="./src/runloop_api_client/types/axon_event_view.py">AxonEventView</a></code>
|
|
112
|
+
|
|
90
113
|
# Blueprints
|
|
91
114
|
|
|
92
115
|
Types:
|
|
@@ -155,7 +178,7 @@ Methods:
|
|
|
155
178
|
- <code title="post /v1/devboxes/{id}/keep_alive">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">keep_alive</a>(id) -> object</code>
|
|
156
179
|
- <code title="get /v1/devboxes/disk_snapshots">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list_disk_snapshots</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_disk_snapshots_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">SyncDiskSnapshotsCursorIDPage[DevboxSnapshotView]</a></code>
|
|
157
180
|
- <code title="post /v1/devboxes/{id}/read_file_contents">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file_contents</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_read_file_contents_params.py">params</a>) -> str</code>
|
|
158
|
-
- <code title="post /v1/devboxes/{id}/remove_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">remove_tunnel</a>(id
|
|
181
|
+
- <code title="post /v1/devboxes/{id}/remove_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">remove_tunnel</a>(id) -> object</code>
|
|
159
182
|
- <code title="post /v1/devboxes/{id}/resume">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">resume</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
|
|
160
183
|
- <code title="get /v1/devboxes/{id}/usage">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve_resource_usage</a>(id) -> <a href="./src/runloop_api_client/types/devbox_resource_usage_view.py">DevboxResourceUsageView</a></code>
|
|
161
184
|
- <code title="post /v1/devboxes/{id}/shutdown">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">shutdown</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_shutdown_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
#!/usr/bin/env -S uv run python
|
|
2
|
+
"""
|
|
3
|
+
---
|
|
4
|
+
title: Devbox Tunnel (HTTP Server Access)
|
|
5
|
+
slug: devbox-tunnel
|
|
6
|
+
use_case: Create a devbox with a tunnel, start an HTTP server, and access the server from the local machine through the tunnel. Uses the async SDK.
|
|
7
|
+
workflow:
|
|
8
|
+
- Create a devbox with tunnel configuration
|
|
9
|
+
- Start an HTTP server inside the devbox
|
|
10
|
+
- Make an HTTP request from the local machine through the tunnel
|
|
11
|
+
- Validate the response
|
|
12
|
+
- Shutdown the devbox
|
|
13
|
+
tags:
|
|
14
|
+
- devbox
|
|
15
|
+
- tunnel
|
|
16
|
+
- networking
|
|
17
|
+
- http
|
|
18
|
+
- async
|
|
19
|
+
prerequisites:
|
|
20
|
+
- RUNLOOP_API_KEY
|
|
21
|
+
run: uv run python -m examples.devbox_tunnel
|
|
22
|
+
test: uv run pytest -m smoketest tests/smoketests/examples/
|
|
23
|
+
---
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from __future__ import annotations
|
|
27
|
+
|
|
28
|
+
import asyncio
|
|
29
|
+
|
|
30
|
+
import httpx
|
|
31
|
+
|
|
32
|
+
from runloop_api_client import AsyncRunloopSDK
|
|
33
|
+
|
|
34
|
+
from ._harness import run_as_cli, wrap_recipe
|
|
35
|
+
from .example_types import ExampleCheck, RecipeOutput, RecipeContext
|
|
36
|
+
|
|
37
|
+
HTTP_SERVER_PORT = 8080
|
|
38
|
+
SERVER_STARTUP_DELAY_S = 2
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
async def recipe(ctx: RecipeContext) -> RecipeOutput:
|
|
42
|
+
"""Create a devbox with a tunnel, start an HTTP server, and access it from the local machine."""
|
|
43
|
+
cleanup = ctx.cleanup
|
|
44
|
+
|
|
45
|
+
sdk = AsyncRunloopSDK()
|
|
46
|
+
|
|
47
|
+
devbox = await sdk.devbox.create(
|
|
48
|
+
name="devbox-tunnel-example",
|
|
49
|
+
launch_parameters={
|
|
50
|
+
"resource_size_request": "X_SMALL",
|
|
51
|
+
},
|
|
52
|
+
tunnel={"auth_mode": "open"},
|
|
53
|
+
)
|
|
54
|
+
cleanup.add(f"devbox:{devbox.id}", devbox.shutdown)
|
|
55
|
+
|
|
56
|
+
# Start a simple HTTP server inside the devbox using Python's built-in http.server
|
|
57
|
+
# We use exec_async because the server runs indefinitely until stopped
|
|
58
|
+
server_execution = await devbox.cmd.exec_async(f"python3 -m http.server {HTTP_SERVER_PORT} --directory /tmp")
|
|
59
|
+
|
|
60
|
+
# Give the server a moment to start
|
|
61
|
+
await asyncio.sleep(SERVER_STARTUP_DELAY_S)
|
|
62
|
+
|
|
63
|
+
# The tunnel was created with the devbox. For authenticated tunnels, set
|
|
64
|
+
# tunnel={"auth_mode": "authenticated"} on create and include the auth_token
|
|
65
|
+
# in your requests via the Authorization header: `Authorization: Bearer {tunnel.auth_token}`
|
|
66
|
+
tunnel = await devbox.get_tunnel()
|
|
67
|
+
if tunnel is None:
|
|
68
|
+
raise RuntimeError("Failed to create tunnel at devbox launch time")
|
|
69
|
+
|
|
70
|
+
# Get the tunnel URL for the server port
|
|
71
|
+
tunnel_url = await devbox.get_tunnel_url(HTTP_SERVER_PORT)
|
|
72
|
+
if tunnel_url is None:
|
|
73
|
+
raise RuntimeError("Failed to get tunnel URL after creating tunnel")
|
|
74
|
+
|
|
75
|
+
# Make an HTTP request from the LOCAL MACHINE through the tunnel to the devbox
|
|
76
|
+
# This demonstrates that the tunnel allows external access to the devbox service
|
|
77
|
+
async with httpx.AsyncClient() as client:
|
|
78
|
+
response = await client.get(tunnel_url)
|
|
79
|
+
response_text = response.text
|
|
80
|
+
|
|
81
|
+
# Stop the HTTP server
|
|
82
|
+
await server_execution.kill()
|
|
83
|
+
|
|
84
|
+
return RecipeOutput(
|
|
85
|
+
resources_created=[f"devbox:{devbox.id}"],
|
|
86
|
+
checks=[
|
|
87
|
+
ExampleCheck(
|
|
88
|
+
name="tunnel was created successfully",
|
|
89
|
+
passed=bool(tunnel.tunnel_key),
|
|
90
|
+
details=f"tunnel_key={tunnel.tunnel_key}",
|
|
91
|
+
),
|
|
92
|
+
ExampleCheck(
|
|
93
|
+
name="tunnel URL was constructed correctly",
|
|
94
|
+
passed=bool(
|
|
95
|
+
tunnel.tunnel_key and tunnel.tunnel_key in tunnel_url and str(HTTP_SERVER_PORT) in tunnel_url
|
|
96
|
+
),
|
|
97
|
+
details=tunnel_url,
|
|
98
|
+
),
|
|
99
|
+
ExampleCheck(
|
|
100
|
+
name="HTTP request through tunnel succeeded",
|
|
101
|
+
passed=response.is_success,
|
|
102
|
+
details=f"status={response.status_code}",
|
|
103
|
+
),
|
|
104
|
+
ExampleCheck(
|
|
105
|
+
name="response contains directory listing",
|
|
106
|
+
passed="Directory listing" in response_text,
|
|
107
|
+
details=response_text[:200],
|
|
108
|
+
),
|
|
109
|
+
],
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
run_devbox_tunnel_example = wrap_recipe(recipe)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
if __name__ == "__main__":
|
|
117
|
+
run_as_cli(run_devbox_tunnel_example)
|
|
@@ -7,6 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
|
|
8
8
|
from typing import Any, Callable, cast
|
|
9
9
|
|
|
10
|
+
from .devbox_tunnel import run_devbox_tunnel_example
|
|
10
11
|
from .example_types import ExampleResult
|
|
11
12
|
from .mcp_github_tools import run_mcp_github_tools_example
|
|
12
13
|
from .secrets_with_devbox import run_secrets_with_devbox_example
|
|
@@ -38,6 +39,13 @@ example_registry: list[ExampleRegistryEntry] = [
|
|
|
38
39
|
"required_env": ["RUNLOOP_API_KEY"],
|
|
39
40
|
"run": run_devbox_snapshot_resume_example,
|
|
40
41
|
},
|
|
42
|
+
{
|
|
43
|
+
"slug": "devbox-tunnel",
|
|
44
|
+
"title": "Devbox Tunnel (HTTP Server Access)",
|
|
45
|
+
"file_name": "devbox_tunnel.py",
|
|
46
|
+
"required_env": ["RUNLOOP_API_KEY"],
|
|
47
|
+
"run": run_devbox_tunnel_example,
|
|
48
|
+
},
|
|
41
49
|
{
|
|
42
50
|
"slug": "mcp-github-tools",
|
|
43
51
|
"title": "MCP Hub + Claude Code + GitHub",
|
|
@@ -47,7 +55,7 @@ example_registry: list[ExampleRegistryEntry] = [
|
|
|
47
55
|
},
|
|
48
56
|
{
|
|
49
57
|
"slug": "secrets-with-devbox",
|
|
50
|
-
"title": "Secrets with Devbox
|
|
58
|
+
"title": "Secrets with Devbox and Agent Gateway",
|
|
51
59
|
"file_name": "secrets_with_devbox.py",
|
|
52
60
|
"required_env": ["RUNLOOP_API_KEY"],
|
|
53
61
|
"run": run_secrets_with_devbox_example,
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
#!/usr/bin/env -S uv run python
|
|
2
|
+
"""
|
|
3
|
+
---
|
|
4
|
+
title: Secrets with Devbox and Agent Gateway
|
|
5
|
+
slug: secrets-with-devbox
|
|
6
|
+
use_case: Use a normal secret for sensitive app data in the devbox and agent gateway for upstream API credentials that should never be exposed to the agent.
|
|
7
|
+
workflow:
|
|
8
|
+
- Create a secret for application data that should be available inside the devbox
|
|
9
|
+
- Create a separate secret for an upstream API credential
|
|
10
|
+
- Create an agent gateway config for an upstream API
|
|
11
|
+
- Launch a devbox with one secret injected directly and the credential wired through agent gateway
|
|
12
|
+
- Verify the devbox can read MAGIC_NUMBER while the upstream API credential is replaced with gateway values
|
|
13
|
+
- Shutdown the devbox and delete the gateway config and both secrets
|
|
14
|
+
tags:
|
|
15
|
+
- secrets
|
|
16
|
+
- devbox
|
|
17
|
+
- agent-gateway
|
|
18
|
+
- credentials
|
|
19
|
+
- environment-variables
|
|
20
|
+
- cleanup
|
|
21
|
+
prerequisites:
|
|
22
|
+
- RUNLOOP_API_KEY
|
|
23
|
+
run: uv run python -m examples.secrets_with_devbox
|
|
24
|
+
test: uv run pytest -m smoketest tests/smoketests/examples/
|
|
25
|
+
---
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
from __future__ import annotations
|
|
29
|
+
|
|
30
|
+
from runloop_api_client import RunloopSDK
|
|
31
|
+
|
|
32
|
+
from ._harness import run_as_cli, unique_name, wrap_recipe
|
|
33
|
+
from .example_types import ExampleCheck, RecipeOutput, RecipeContext
|
|
34
|
+
|
|
35
|
+
# Note: do NOT hardcode secret values in your code!
|
|
36
|
+
# This is example code only; use environment variables instead!
|
|
37
|
+
_EXAMPLE_GATEWAY_ENDPOINT = "https://api.example.com"
|
|
38
|
+
_UPSTREAM_CREDENTIAL_VALUE = "example-upstream-api-key"
|
|
39
|
+
_MAGIC_NUMBER_VALUE = "42"
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def recipe(ctx: RecipeContext) -> RecipeOutput:
|
|
43
|
+
"""Demonstrate direct secret injection for app data and agent gateway protection for upstream credentials."""
|
|
44
|
+
cleanup = ctx.cleanup
|
|
45
|
+
|
|
46
|
+
sdk = RunloopSDK()
|
|
47
|
+
resources_created: list[str] = []
|
|
48
|
+
checks: list[ExampleCheck] = []
|
|
49
|
+
|
|
50
|
+
magic_number_name = unique_name("magic-number-secret")
|
|
51
|
+
upstream_credential_name = unique_name("agent-gateway-secret")
|
|
52
|
+
|
|
53
|
+
magic_number_secret = sdk.secret.create(name=magic_number_name, value=_MAGIC_NUMBER_VALUE)
|
|
54
|
+
resources_created.append(f"secret:{magic_number_name}")
|
|
55
|
+
cleanup.add(f"secret:{magic_number_name}", magic_number_secret.delete)
|
|
56
|
+
|
|
57
|
+
magic_number_info = magic_number_secret.get_info()
|
|
58
|
+
checks.append(
|
|
59
|
+
ExampleCheck(
|
|
60
|
+
name="magic number secret created successfully",
|
|
61
|
+
passed=(magic_number_secret.name == magic_number_name and magic_number_info.id.startswith("sec_")),
|
|
62
|
+
details=f"name={magic_number_secret.name}, id={magic_number_info.id}",
|
|
63
|
+
)
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
upstream_credential_secret = sdk.secret.create(
|
|
67
|
+
name=upstream_credential_name,
|
|
68
|
+
value=_UPSTREAM_CREDENTIAL_VALUE,
|
|
69
|
+
)
|
|
70
|
+
resources_created.append(f"secret:{upstream_credential_name}")
|
|
71
|
+
cleanup.add(f"secret:{upstream_credential_name}", upstream_credential_secret.delete)
|
|
72
|
+
|
|
73
|
+
upstream_credential_info = upstream_credential_secret.get_info()
|
|
74
|
+
checks.append(
|
|
75
|
+
ExampleCheck(
|
|
76
|
+
name="upstream credential secret created successfully",
|
|
77
|
+
passed=(
|
|
78
|
+
upstream_credential_secret.name == upstream_credential_name
|
|
79
|
+
and upstream_credential_info.id.startswith("sec_")
|
|
80
|
+
),
|
|
81
|
+
details=(f"name={upstream_credential_secret.name}, id={upstream_credential_info.id}"),
|
|
82
|
+
)
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
# Use direct secret injection when code inside the devbox legitimately needs
|
|
86
|
+
# the secret value at runtime. Use agent gateway for upstream credentials
|
|
87
|
+
# that should never be exposed to the agent.
|
|
88
|
+
gateway_config = sdk.gateway_config.create(
|
|
89
|
+
name=unique_name("agent-gateway-config"),
|
|
90
|
+
endpoint=_EXAMPLE_GATEWAY_ENDPOINT,
|
|
91
|
+
auth_mechanism={"type": "bearer"},
|
|
92
|
+
description="Example gateway that keeps upstream credentials off the devbox",
|
|
93
|
+
)
|
|
94
|
+
resources_created.append(f"gateway_config:{gateway_config.id}")
|
|
95
|
+
cleanup.add(f"gateway_config:{gateway_config.id}", gateway_config.delete)
|
|
96
|
+
|
|
97
|
+
gateway_info = gateway_config.get_info()
|
|
98
|
+
checks.append(
|
|
99
|
+
ExampleCheck(
|
|
100
|
+
name="gateway config created successfully",
|
|
101
|
+
passed=(gateway_info.id.startswith("gwc_") and gateway_info.endpoint == _EXAMPLE_GATEWAY_ENDPOINT),
|
|
102
|
+
details=f"id={gateway_info.id}, endpoint={gateway_info.endpoint}",
|
|
103
|
+
)
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
devbox = sdk.devbox.create(
|
|
107
|
+
name=unique_name("agent-gateway-devbox"),
|
|
108
|
+
secrets={
|
|
109
|
+
"MAGIC_NUMBER": magic_number_secret.name,
|
|
110
|
+
},
|
|
111
|
+
gateways={
|
|
112
|
+
"MY_API": {
|
|
113
|
+
"gateway": gateway_config.id,
|
|
114
|
+
"secret": upstream_credential_secret.name,
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
launch_parameters={
|
|
118
|
+
"resource_size_request": "X_SMALL",
|
|
119
|
+
"keep_alive_time_seconds": 60 * 5,
|
|
120
|
+
},
|
|
121
|
+
)
|
|
122
|
+
resources_created.append(f"devbox:{devbox.id}")
|
|
123
|
+
cleanup.add(f"devbox:{devbox.id}", devbox.shutdown)
|
|
124
|
+
|
|
125
|
+
devbox_info = devbox.get_info()
|
|
126
|
+
checks.append(
|
|
127
|
+
ExampleCheck(
|
|
128
|
+
name="devbox records gateway wiring",
|
|
129
|
+
passed=(
|
|
130
|
+
devbox_info.gateway_specs is not None
|
|
131
|
+
and devbox_info.gateway_specs.get("MY_API") is not None
|
|
132
|
+
and devbox_info.gateway_specs["MY_API"].gateway_config_id == gateway_config.id
|
|
133
|
+
),
|
|
134
|
+
details=(
|
|
135
|
+
f"gateway_config_id={devbox_info.gateway_specs['MY_API'].gateway_config_id}"
|
|
136
|
+
if devbox_info.gateway_specs is not None and devbox_info.gateway_specs.get("MY_API") is not None
|
|
137
|
+
else "gateway spec missing"
|
|
138
|
+
),
|
|
139
|
+
)
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
magic_number_result = devbox.cmd.exec("echo $MAGIC_NUMBER")
|
|
143
|
+
magic_number = magic_number_result.stdout().strip()
|
|
144
|
+
checks.append(
|
|
145
|
+
ExampleCheck(
|
|
146
|
+
name="devbox receives plain secret when app needs the value",
|
|
147
|
+
passed=(magic_number_result.exit_code == 0 and magic_number == _MAGIC_NUMBER_VALUE),
|
|
148
|
+
details=(f"exit_code={magic_number_result.exit_code}, MAGIC_NUMBER={magic_number}"),
|
|
149
|
+
)
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
url_result = devbox.cmd.exec("echo $MY_API_URL")
|
|
153
|
+
gateway_url = url_result.stdout().strip()
|
|
154
|
+
checks.append(
|
|
155
|
+
ExampleCheck(
|
|
156
|
+
name="devbox receives gateway URL",
|
|
157
|
+
passed=url_result.exit_code == 0 and gateway_url.startswith("http"),
|
|
158
|
+
details=f"exit_code={url_result.exit_code}, url={gateway_url}",
|
|
159
|
+
)
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
token_result = devbox.cmd.exec("echo $MY_API")
|
|
163
|
+
gateway_token = token_result.stdout().strip()
|
|
164
|
+
checks.append(
|
|
165
|
+
ExampleCheck(
|
|
166
|
+
name="devbox receives gateway token instead of raw secret",
|
|
167
|
+
passed=(
|
|
168
|
+
token_result.exit_code == 0
|
|
169
|
+
and gateway_token.startswith("gws_")
|
|
170
|
+
and gateway_token != _UPSTREAM_CREDENTIAL_VALUE
|
|
171
|
+
),
|
|
172
|
+
details=(f"exit_code={token_result.exit_code}, token_prefix={gateway_token[:4] or 'missing'}"),
|
|
173
|
+
)
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
return RecipeOutput(resources_created=resources_created, checks=checks)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
run_secrets_with_devbox_example = wrap_recipe(recipe)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
if __name__ == "__main__":
|
|
183
|
+
run_as_cli(run_secrets_with_devbox_example)
|
|
@@ -32,6 +32,7 @@ from ._base_client import (
|
|
|
32
32
|
|
|
33
33
|
if TYPE_CHECKING:
|
|
34
34
|
from .resources import (
|
|
35
|
+
axons,
|
|
35
36
|
agents,
|
|
36
37
|
objects,
|
|
37
38
|
secrets,
|
|
@@ -46,6 +47,7 @@ if TYPE_CHECKING:
|
|
|
46
47
|
gateway_configs,
|
|
47
48
|
network_policies,
|
|
48
49
|
)
|
|
50
|
+
from .resources.axons import AxonsResource, AsyncAxonsResource
|
|
49
51
|
from .resources.agents import AgentsResource, AsyncAgentsResource
|
|
50
52
|
from .resources.objects import ObjectsResource, AsyncObjectsResource
|
|
51
53
|
from .resources.secrets import SecretsResource, AsyncSecretsResource
|
|
@@ -144,6 +146,12 @@ class Runloop(SyncAPIClient):
|
|
|
144
146
|
|
|
145
147
|
return AgentsResource(self)
|
|
146
148
|
|
|
149
|
+
@cached_property
|
|
150
|
+
def axons(self) -> AxonsResource:
|
|
151
|
+
from .resources.axons import AxonsResource
|
|
152
|
+
|
|
153
|
+
return AxonsResource(self)
|
|
154
|
+
|
|
147
155
|
@cached_property
|
|
148
156
|
def blueprints(self) -> BlueprintsResource:
|
|
149
157
|
from .resources.blueprints import BlueprintsResource
|
|
@@ -392,6 +400,12 @@ class AsyncRunloop(AsyncAPIClient):
|
|
|
392
400
|
|
|
393
401
|
return AsyncAgentsResource(self)
|
|
394
402
|
|
|
403
|
+
@cached_property
|
|
404
|
+
def axons(self) -> AsyncAxonsResource:
|
|
405
|
+
from .resources.axons import AsyncAxonsResource
|
|
406
|
+
|
|
407
|
+
return AsyncAxonsResource(self)
|
|
408
|
+
|
|
395
409
|
@cached_property
|
|
396
410
|
def blueprints(self) -> AsyncBlueprintsResource:
|
|
397
411
|
from .resources.blueprints import AsyncBlueprintsResource
|
|
@@ -589,6 +603,12 @@ class RunloopWithRawResponse:
|
|
|
589
603
|
|
|
590
604
|
return AgentsResourceWithRawResponse(self._client.agents)
|
|
591
605
|
|
|
606
|
+
@cached_property
|
|
607
|
+
def axons(self) -> axons.AxonsResourceWithRawResponse:
|
|
608
|
+
from .resources.axons import AxonsResourceWithRawResponse
|
|
609
|
+
|
|
610
|
+
return AxonsResourceWithRawResponse(self._client.axons)
|
|
611
|
+
|
|
592
612
|
@cached_property
|
|
593
613
|
def blueprints(self) -> blueprints.BlueprintsResourceWithRawResponse:
|
|
594
614
|
from .resources.blueprints import BlueprintsResourceWithRawResponse
|
|
@@ -674,6 +694,12 @@ class AsyncRunloopWithRawResponse:
|
|
|
674
694
|
|
|
675
695
|
return AsyncAgentsResourceWithRawResponse(self._client.agents)
|
|
676
696
|
|
|
697
|
+
@cached_property
|
|
698
|
+
def axons(self) -> axons.AsyncAxonsResourceWithRawResponse:
|
|
699
|
+
from .resources.axons import AsyncAxonsResourceWithRawResponse
|
|
700
|
+
|
|
701
|
+
return AsyncAxonsResourceWithRawResponse(self._client.axons)
|
|
702
|
+
|
|
677
703
|
@cached_property
|
|
678
704
|
def blueprints(self) -> blueprints.AsyncBlueprintsResourceWithRawResponse:
|
|
679
705
|
from .resources.blueprints import AsyncBlueprintsResourceWithRawResponse
|
|
@@ -759,6 +785,12 @@ class RunloopWithStreamedResponse:
|
|
|
759
785
|
|
|
760
786
|
return AgentsResourceWithStreamingResponse(self._client.agents)
|
|
761
787
|
|
|
788
|
+
@cached_property
|
|
789
|
+
def axons(self) -> axons.AxonsResourceWithStreamingResponse:
|
|
790
|
+
from .resources.axons import AxonsResourceWithStreamingResponse
|
|
791
|
+
|
|
792
|
+
return AxonsResourceWithStreamingResponse(self._client.axons)
|
|
793
|
+
|
|
762
794
|
@cached_property
|
|
763
795
|
def blueprints(self) -> blueprints.BlueprintsResourceWithStreamingResponse:
|
|
764
796
|
from .resources.blueprints import BlueprintsResourceWithStreamingResponse
|
|
@@ -844,6 +876,12 @@ class AsyncRunloopWithStreamedResponse:
|
|
|
844
876
|
|
|
845
877
|
return AsyncAgentsResourceWithStreamingResponse(self._client.agents)
|
|
846
878
|
|
|
879
|
+
@cached_property
|
|
880
|
+
def axons(self) -> axons.AsyncAxonsResourceWithStreamingResponse:
|
|
881
|
+
from .resources.axons import AsyncAxonsResourceWithStreamingResponse
|
|
882
|
+
|
|
883
|
+
return AsyncAxonsResourceWithStreamingResponse(self._client.axons)
|
|
884
|
+
|
|
847
885
|
@cached_property
|
|
848
886
|
def blueprints(self) -> blueprints.AsyncBlueprintsResourceWithStreamingResponse:
|
|
849
887
|
from .resources.blueprints import AsyncBlueprintsResourceWithStreamingResponse
|