From 0c64614708063bd267e2dabde810ccb56914d088 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 04:18:52 +0000 Subject: [PATCH 1/3] fix: remove beta docs from gateway-config (#7677) --- .stats.yml | 4 +-- .../resources/gateway_configs.py | 30 +++++++++---------- src/runloop_api_client/types/devbox_view.py | 2 +- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/.stats.yml b/.stats.yml index 3ce8140cb..b8768eaae 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 118 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-fa81aa937935299daa80a12956d3f4d69344342291689a77f41f14db5efd928e.yml -openapi_spec_hash: e388727b0c2f4debe675845ab26feacd +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-3bde463fcdfe8cd4bdb47a6e14cf41c7a61e2638071ad093de9c492c96ad36bd.yml +openapi_spec_hash: e790f738711f3a87d006728ccdd26eee config_hash: cbda3692cb48ab8582a0df1674b9e5c8 diff --git a/src/runloop_api_client/resources/gateway_configs.py b/src/runloop_api_client/resources/gateway_configs.py index 38c921fcd..8d88c6fab 100644 --- a/src/runloop_api_client/resources/gateway_configs.py +++ b/src/runloop_api_client/resources/gateway_configs.py @@ -60,9 +60,8 @@ def create( idempotency_key: str | None = None, ) -> GatewayConfigView: """ - [Beta] Create a new GatewayConfig to proxy API requests through the credential - gateway. The config specifies the target endpoint and how credentials should be - applied. + Create a new GatewayConfig to proxy API requests through the credential gateway. + The config specifies the target endpoint and how credentials should be applied. Args: auth_mechanism: How credentials should be applied to proxied requests. Specify the type @@ -118,7 +117,7 @@ def retrieve( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> GatewayConfigView: """ - [Beta] Get a specific GatewayConfig by its unique identifier. + Get a specific GatewayConfig by its unique identifier. Args: extra_headers: Send extra headers @@ -155,7 +154,7 @@ def update( timeout: float | httpx.Timeout | None | NotGiven = not_given, idempotency_key: str | None = None, ) -> GatewayConfigView: - """[Beta] Update an existing GatewayConfig. + """Update an existing GatewayConfig. All fields are optional. @@ -216,8 +215,8 @@ def list( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> SyncGatewayConfigsCursorIDPage[GatewayConfigView]: """ - [Beta] List all GatewayConfigs for the authenticated account, including - system-provided configs like 'anthropic' and 'openai'. + List all GatewayConfigs for the authenticated account, including system-provided + configs like 'anthropic' and 'openai'. Args: id: Filter by ID. @@ -269,7 +268,7 @@ def delete( timeout: float | httpx.Timeout | None | NotGiven = not_given, idempotency_key: str | None = None, ) -> GatewayConfigView: - """[Beta] Delete an existing GatewayConfig. + """Delete an existing GatewayConfig. This action is irreversible. @@ -335,9 +334,8 @@ async def create( idempotency_key: str | None = None, ) -> GatewayConfigView: """ - [Beta] Create a new GatewayConfig to proxy API requests through the credential - gateway. The config specifies the target endpoint and how credentials should be - applied. + Create a new GatewayConfig to proxy API requests through the credential gateway. + The config specifies the target endpoint and how credentials should be applied. Args: auth_mechanism: How credentials should be applied to proxied requests. Specify the type @@ -393,7 +391,7 @@ async def retrieve( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> GatewayConfigView: """ - [Beta] Get a specific GatewayConfig by its unique identifier. + Get a specific GatewayConfig by its unique identifier. Args: extra_headers: Send extra headers @@ -430,7 +428,7 @@ async def update( timeout: float | httpx.Timeout | None | NotGiven = not_given, idempotency_key: str | None = None, ) -> GatewayConfigView: - """[Beta] Update an existing GatewayConfig. + """Update an existing GatewayConfig. All fields are optional. @@ -491,8 +489,8 @@ def list( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> AsyncPaginator[GatewayConfigView, AsyncGatewayConfigsCursorIDPage[GatewayConfigView]]: """ - [Beta] List all GatewayConfigs for the authenticated account, including - system-provided configs like 'anthropic' and 'openai'. + List all GatewayConfigs for the authenticated account, including system-provided + configs like 'anthropic' and 'openai'. Args: id: Filter by ID. @@ -544,7 +542,7 @@ async def delete( timeout: float | httpx.Timeout | None | NotGiven = not_given, idempotency_key: str | None = None, ) -> GatewayConfigView: - """[Beta] Delete an existing GatewayConfig. + """Delete an existing GatewayConfig. This action is irreversible. diff --git a/src/runloop_api_client/types/devbox_view.py b/src/runloop_api_client/types/devbox_view.py index 652dea366..50bec1075 100644 --- a/src/runloop_api_client/types/devbox_view.py +++ b/src/runloop_api_client/types/devbox_view.py @@ -96,7 +96,7 @@ class DevboxView(BaseModel): """The failure reason if the Devbox failed, if the Devbox has a 'failure' status.""" gateway_specs: Optional[Dict[str, GatewaySpecs]] = None - """[Beta] Gateway specifications configured for this devbox. + """Gateway specifications configured for this devbox. Map key is the environment variable prefix (e.g., 'GWS_ANTHROPIC'). """ From 6e96bda273b1a49b4c0efd731e64761675919157 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 19:50:23 +0000 Subject: [PATCH 2/3] chore: rename AI Gateway to Agent Gateway (#7687) --- .stats.yml | 4 +-- .../resources/devboxes/devboxes.py | 16 +++++------ .../resources/gateway_configs.py | 14 ++++++---- .../resources/network_policies.py | 28 +++++++++---------- .../types/devbox_create_params.py | 12 ++++---- .../types/gateway_config_view.py | 2 +- .../types/network_policy_create_params.py | 6 ++-- .../types/network_policy_update_params.py | 4 +-- .../types/network_policy_view.py | 7 ++--- tests/api_resources/test_network_policies.py | 8 +++--- 10 files changed, 50 insertions(+), 51 deletions(-) diff --git a/.stats.yml b/.stats.yml index b8768eaae..342cea69b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 118 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-3bde463fcdfe8cd4bdb47a6e14cf41c7a61e2638071ad093de9c492c96ad36bd.yml -openapi_spec_hash: e790f738711f3a87d006728ccdd26eee +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-439b1a08248ef3bc7457c7b0a9a6218149732535a9f0dd541501fc35e2a3f8c2.yml +openapi_spec_hash: 35b12a086d98484417ce3d2543c47929 config_hash: cbda3692cb48ab8582a0df1674b9e5c8 diff --git a/src/runloop_api_client/resources/devboxes/devboxes.py b/src/runloop_api_client/resources/devboxes/devboxes.py index 79ac0022d..8a1c699d3 100644 --- a/src/runloop_api_client/resources/devboxes/devboxes.py +++ b/src/runloop_api_client/resources/devboxes/devboxes.py @@ -234,10 +234,10 @@ def create( file_mounts: Map of paths and file contents to write before setup. Use mounts instead. - gateways: [Beta] (Optional) Gateway specifications for credential proxying. Map key is the - environment variable prefix (e.g., 'GWS_ANTHROPIC'). The gateway will proxy - requests to external APIs using the specified credential without exposing the - real API key. Example: {'GWS_ANTHROPIC': {'gateway': 'anthropic', 'secret': + gateways: (Optional) Agent gateway specifications for credential proxying. Map key is the + environment variable prefix (e.g., 'GWS_ANTHROPIC'). The agent gateway will + proxy requests to external APIs using the specified credential without exposing + the real API key. Example: {'GWS_ANTHROPIC': {'gateway': 'anthropic', 'secret': 'my_claude_key'}} launch_parameters: Parameters to configure the resources and launch time behavior of the Devbox. @@ -1912,10 +1912,10 @@ async def create( file_mounts: Map of paths and file contents to write before setup. Use mounts instead. - gateways: [Beta] (Optional) Gateway specifications for credential proxying. Map key is the - environment variable prefix (e.g., 'GWS_ANTHROPIC'). The gateway will proxy - requests to external APIs using the specified credential without exposing the - real API key. Example: {'GWS_ANTHROPIC': {'gateway': 'anthropic', 'secret': + gateways: (Optional) Agent gateway specifications for credential proxying. Map key is the + environment variable prefix (e.g., 'GWS_ANTHROPIC'). The agent gateway will + proxy requests to external APIs using the specified credential without exposing + the real API key. Example: {'GWS_ANTHROPIC': {'gateway': 'anthropic', 'secret': 'my_claude_key'}} launch_parameters: Parameters to configure the resources and launch time behavior of the Devbox. diff --git a/src/runloop_api_client/resources/gateway_configs.py b/src/runloop_api_client/resources/gateway_configs.py index 8d88c6fab..86ec22ce6 100644 --- a/src/runloop_api_client/resources/gateway_configs.py +++ b/src/runloop_api_client/resources/gateway_configs.py @@ -59,9 +59,10 @@ def create( timeout: float | httpx.Timeout | None | NotGiven = not_given, idempotency_key: str | None = None, ) -> GatewayConfigView: - """ - Create a new GatewayConfig to proxy API requests through the credential gateway. - The config specifies the target endpoint and how credentials should be applied. + """Create a new GatewayConfig to proxy API requests through the agent gateway. + + The + config specifies the target endpoint and how credentials should be applied. Args: auth_mechanism: How credentials should be applied to proxied requests. Specify the type @@ -333,9 +334,10 @@ async def create( timeout: float | httpx.Timeout | None | NotGiven = not_given, idempotency_key: str | None = None, ) -> GatewayConfigView: - """ - Create a new GatewayConfig to proxy API requests through the credential gateway. - The config specifies the target endpoint and how credentials should be applied. + """Create a new GatewayConfig to proxy API requests through the agent gateway. + + The + config specifies the target endpoint and how credentials should be applied. Args: auth_mechanism: How credentials should be applied to proxied requests. Specify the type diff --git a/src/runloop_api_client/resources/network_policies.py b/src/runloop_api_client/resources/network_policies.py index 388126cee..f50d4fe6d 100644 --- a/src/runloop_api_client/resources/network_policies.py +++ b/src/runloop_api_client/resources/network_policies.py @@ -48,7 +48,7 @@ def create( self, *, name: str, - allow_ai_gateway: Optional[bool] | Omit = omit, + allow_agent_gateway: Optional[bool] | Omit = omit, allow_all: Optional[bool] | Omit = omit, allow_devbox_to_devbox: Optional[bool] | Omit = omit, allow_mcp_gateway: Optional[bool] | Omit = omit, @@ -71,8 +71,8 @@ def create( name: The human-readable name for the NetworkPolicy. Must be unique within the account. - allow_ai_gateway: (Optional) If true, allows devbox egress to the AI credential gateway for - credential proxying. Defaults to false. + allow_agent_gateway: (Optional) If true, allows devbox egress to the agent gateway for credential + proxying. Defaults to false. allow_all: (Optional) If true, all egress traffic is allowed (ALLOW_ALL policy). Defaults to false. @@ -104,7 +104,7 @@ def create( body=maybe_transform( { "name": name, - "allow_ai_gateway": allow_ai_gateway, + "allow_agent_gateway": allow_agent_gateway, "allow_all": allow_all, "allow_devbox_to_devbox": allow_devbox_to_devbox, "allow_mcp_gateway": allow_mcp_gateway, @@ -160,7 +160,7 @@ def update( self, id: str, *, - allow_ai_gateway: Optional[bool] | Omit = omit, + allow_agent_gateway: Optional[bool] | Omit = omit, allow_all: Optional[bool] | Omit = omit, allow_devbox_to_devbox: Optional[bool] | Omit = omit, allow_mcp_gateway: Optional[bool] | Omit = omit, @@ -180,7 +180,7 @@ def update( All fields are optional. Args: - allow_ai_gateway: If true, allows devbox egress to the AI credential gateway. + allow_agent_gateway: If true, allows devbox egress to the agent gateway. allow_all: If true, all egress traffic is allowed (ALLOW_ALL policy). @@ -211,7 +211,7 @@ def update( f"/v1/network-policies/{id}", body=maybe_transform( { - "allow_ai_gateway": allow_ai_gateway, + "allow_agent_gateway": allow_agent_gateway, "allow_all": allow_all, "allow_devbox_to_devbox": allow_devbox_to_devbox, "allow_mcp_gateway": allow_mcp_gateway, @@ -352,7 +352,7 @@ async def create( self, *, name: str, - allow_ai_gateway: Optional[bool] | Omit = omit, + allow_agent_gateway: Optional[bool] | Omit = omit, allow_all: Optional[bool] | Omit = omit, allow_devbox_to_devbox: Optional[bool] | Omit = omit, allow_mcp_gateway: Optional[bool] | Omit = omit, @@ -375,8 +375,8 @@ async def create( name: The human-readable name for the NetworkPolicy. Must be unique within the account. - allow_ai_gateway: (Optional) If true, allows devbox egress to the AI credential gateway for - credential proxying. Defaults to false. + allow_agent_gateway: (Optional) If true, allows devbox egress to the agent gateway for credential + proxying. Defaults to false. allow_all: (Optional) If true, all egress traffic is allowed (ALLOW_ALL policy). Defaults to false. @@ -408,7 +408,7 @@ async def create( body=await async_maybe_transform( { "name": name, - "allow_ai_gateway": allow_ai_gateway, + "allow_agent_gateway": allow_agent_gateway, "allow_all": allow_all, "allow_devbox_to_devbox": allow_devbox_to_devbox, "allow_mcp_gateway": allow_mcp_gateway, @@ -464,7 +464,7 @@ async def update( self, id: str, *, - allow_ai_gateway: Optional[bool] | Omit = omit, + allow_agent_gateway: Optional[bool] | Omit = omit, allow_all: Optional[bool] | Omit = omit, allow_devbox_to_devbox: Optional[bool] | Omit = omit, allow_mcp_gateway: Optional[bool] | Omit = omit, @@ -484,7 +484,7 @@ async def update( All fields are optional. Args: - allow_ai_gateway: If true, allows devbox egress to the AI credential gateway. + allow_agent_gateway: If true, allows devbox egress to the agent gateway. allow_all: If true, all egress traffic is allowed (ALLOW_ALL policy). @@ -515,7 +515,7 @@ async def update( f"/v1/network-policies/{id}", body=await async_maybe_transform( { - "allow_ai_gateway": allow_ai_gateway, + "allow_agent_gateway": allow_agent_gateway, "allow_all": allow_all, "allow_devbox_to_devbox": allow_devbox_to_devbox, "allow_mcp_gateway": allow_mcp_gateway, diff --git a/src/runloop_api_client/types/devbox_create_params.py b/src/runloop_api_client/types/devbox_create_params.py index f916d55f4..5690cd305 100644 --- a/src/runloop_api_client/types/devbox_create_params.py +++ b/src/runloop_api_client/types/devbox_create_params.py @@ -38,12 +38,12 @@ class DevboxBaseCreateParams(TypedDict, total=False): """Map of paths and file contents to write before setup. Use mounts instead.""" gateways: Optional[Dict[str, Gateways]] - """[Beta] (Optional) Gateway specifications for credential proxying. + """(Optional) Agent gateway specifications for credential proxying. - Map key is the environment variable prefix (e.g., 'GWS_ANTHROPIC'). The gateway - will proxy requests to external APIs using the specified credential without - exposing the real API key. Example: {'GWS_ANTHROPIC': {'gateway': 'anthropic', - 'secret': 'my_claude_key'}} + Map key is the environment variable prefix (e.g., 'GWS_ANTHROPIC'). The agent + gateway will proxy requests to external APIs using the specified credential + without exposing the real API key. Example: {'GWS_ANTHROPIC': {'gateway': + 'anthropic', 'secret': 'my_claude_key'}} """ launch_parameters: Optional[LaunchParameters] @@ -112,7 +112,7 @@ class DevboxCreateParams(DevboxBaseCreateParams, total=False): class Gateways(TypedDict, total=False): """ - [Beta] GatewaySpec links a gateway configuration to a secret for credential proxying in a devbox. The gateway will proxy requests to external APIs using the specified credential without exposing the real API key. + GatewaySpec links an agent gateway configuration to a secret for credential proxying in a devbox. The agent gateway will proxy requests to external APIs using the specified credential without exposing the real API key. """ gateway: Required[str] diff --git a/src/runloop_api_client/types/gateway_config_view.py b/src/runloop_api_client/types/gateway_config_view.py index a6e3b3ac4..c8fcc6e3c 100644 --- a/src/runloop_api_client/types/gateway_config_view.py +++ b/src/runloop_api_client/types/gateway_config_view.py @@ -19,7 +19,7 @@ class AuthMechanism(BaseModel): class GatewayConfigView(BaseModel): """ - A GatewayConfig defines a configuration for proxying API requests through the credential gateway. It specifies the target endpoint and how credentials should be applied. + A GatewayConfig defines a configuration for proxying API requests through the agent gateway. It specifies the target endpoint and how credentials should be applied. """ id: str diff --git a/src/runloop_api_client/types/network_policy_create_params.py b/src/runloop_api_client/types/network_policy_create_params.py index 91a023188..0d8b1de2a 100644 --- a/src/runloop_api_client/types/network_policy_create_params.py +++ b/src/runloop_api_client/types/network_policy_create_params.py @@ -17,10 +17,10 @@ class NetworkPolicyCreateParams(TypedDict, total=False): Must be unique within the account. """ - allow_ai_gateway: Optional[bool] + allow_agent_gateway: Optional[bool] """ - (Optional) If true, allows devbox egress to the AI credential gateway for - credential proxying. Defaults to false. + (Optional) If true, allows devbox egress to the agent gateway for credential + proxying. Defaults to false. """ allow_all: Optional[bool] diff --git a/src/runloop_api_client/types/network_policy_update_params.py b/src/runloop_api_client/types/network_policy_update_params.py index ad7c62992..0a622ca3e 100644 --- a/src/runloop_api_client/types/network_policy_update_params.py +++ b/src/runloop_api_client/types/network_policy_update_params.py @@ -11,8 +11,8 @@ class NetworkPolicyUpdateParams(TypedDict, total=False): - allow_ai_gateway: Optional[bool] - """If true, allows devbox egress to the AI credential gateway.""" + allow_agent_gateway: Optional[bool] + """If true, allows devbox egress to the agent gateway.""" allow_all: Optional[bool] """If true, all egress traffic is allowed (ALLOW_ALL policy).""" diff --git a/src/runloop_api_client/types/network_policy_view.py b/src/runloop_api_client/types/network_policy_view.py index 197902b02..0c3e25728 100644 --- a/src/runloop_api_client/types/network_policy_view.py +++ b/src/runloop_api_client/types/network_policy_view.py @@ -10,11 +10,8 @@ class Egress(BaseModel): """The egress rules for this policy.""" - allow_ai_gateway: bool - """ - If true, allows devbox egress to the AI credential gateway for credential - proxying. - """ + allow_agent_gateway: bool + """If true, allows devbox egress to the agent gateway for credential proxying.""" allow_all: bool """If true, all egress traffic is allowed and other fields are ignored. diff --git a/tests/api_resources/test_network_policies.py b/tests/api_resources/test_network_policies.py index 22a868cc4..6a1587cb9 100644 --- a/tests/api_resources/test_network_policies.py +++ b/tests/api_resources/test_network_policies.py @@ -31,7 +31,7 @@ def test_method_create(self, client: Runloop) -> None: def test_method_create_with_all_params(self, client: Runloop) -> None: network_policy = client.network_policies.create( name="name", - allow_ai_gateway=True, + allow_agent_gateway=True, allow_all=True, allow_devbox_to_devbox=True, allow_mcp_gateway=True, @@ -113,7 +113,7 @@ def test_method_update(self, client: Runloop) -> None: def test_method_update_with_all_params(self, client: Runloop) -> None: network_policy = client.network_policies.update( id="id", - allow_ai_gateway=True, + allow_agent_gateway=True, allow_all=True, allow_devbox_to_devbox=True, allow_mcp_gateway=True, @@ -244,7 +244,7 @@ async def test_method_create(self, async_client: AsyncRunloop) -> None: async def test_method_create_with_all_params(self, async_client: AsyncRunloop) -> None: network_policy = await async_client.network_policies.create( name="name", - allow_ai_gateway=True, + allow_agent_gateway=True, allow_all=True, allow_devbox_to_devbox=True, allow_mcp_gateway=True, @@ -326,7 +326,7 @@ async def test_method_update(self, async_client: AsyncRunloop) -> None: async def test_method_update_with_all_params(self, async_client: AsyncRunloop) -> None: network_policy = await async_client.network_policies.update( id="id", - allow_ai_gateway=True, + allow_agent_gateway=True, allow_all=True, allow_devbox_to_devbox=True, allow_mcp_gateway=True, From e49a3a61901f1a8f313dddd2cb7dfea3807b2c80 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 19:50:46 +0000 Subject: [PATCH 3/3] release: 1.10.2 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ pyproject.toml | 2 +- src/runloop_api_client/_version.py | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e8fdcd657..9bd8fad44 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.10.1" + ".": "1.10.2" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 5696f102c..250518817 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 1.10.2 (2026-02-26) + +Full Changelog: [v1.10.1...v1.10.2](https://github.com/runloopai/api-client-python/compare/v1.10.1...v1.10.2) + +### Bug Fixes + +* remove beta docs from gateway-config ([#7677](https://github.com/runloopai/api-client-python/issues/7677)) ([0c64614](https://github.com/runloopai/api-client-python/commit/0c64614708063bd267e2dabde810ccb56914d088)) + + +### Chores + +* rename AI Gateway to Agent Gateway ([#7687](https://github.com/runloopai/api-client-python/issues/7687)) ([6e96bda](https://github.com/runloopai/api-client-python/commit/6e96bda273b1a49b4c0efd731e64761675919157)) + ## 1.10.1 (2026-02-26) Full Changelog: [v1.10.0...v1.10.1](https://github.com/runloopai/api-client-python/compare/v1.10.0...v1.10.1) diff --git a/pyproject.toml b/pyproject.toml index 572fee932..a51fa883b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "runloop_api_client" -version = "1.10.1" +version = "1.10.2" description = "The official Python library for the runloop API" dynamic = ["readme"] license = "MIT" diff --git a/src/runloop_api_client/_version.py b/src/runloop_api_client/_version.py index 7b90f8ec9..8db51c16e 100644 --- a/src/runloop_api_client/_version.py +++ b/src/runloop_api_client/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "runloop_api_client" -__version__ = "1.10.1" # x-release-please-version +__version__ = "1.10.2" # x-release-please-version