Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.21.0"
".": "1.22.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 119
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-6ec03cfc156036a0758aebc523b469f3007de431312c536c434efe795e1892e7.yml
openapi_spec_hash: 092761a0209e0950cfd8f262a981adb1
config_hash: 06faf3176c48bf2b258730ce50809f0f
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-7235763cbdfd60834a897f356688d758b598a1dd723623330ea398dea2abea68.yml
openapi_spec_hash: 01b9dbab4b732e4b83952debd108e404
config_hash: 444e00951b440bf92e7548b2807584a4
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# Changelog

## 1.22.0 (2026-05-27)

Full Changelog: [v1.21.0...v1.22.0](https://github.com/runloopai/api-client-python/compare/v1.21.0...v1.22.0)

### Features

* add reflex initiator type, hidden param ([#9350](https://github.com/runloopai/api-client-python/issues/9350)) ([5922abf](https://github.com/runloopai/api-client-python/commit/5922abfd135589b229cb64ea23750d34fede857f))
* **api:** expose lifecycle_hooks on LaunchParameters lifecycle ([#9115](https://github.com/runloopai/api-client-python/issues/9115)) ([c9c7c37](https://github.com/runloopai/api-client-python/commit/c9c7c37c2a38f91142b0b28d1e5cbc183b8ee53e))
* **mux:** initial changes to enable http/2 ([#8936](https://github.com/runloopai/api-client-python/issues/8936)) ([71ce0bf](https://github.com/runloopai/api-client-python/commit/71ce0bf9ac98599b41a9cc6d16a3333c8b70e977))


### Bug Fixes

* clean up PTY and lifecycle hook OpenAPI descriptions ([#9502](https://github.com/runloopai/api-client-python/issues/9502)) ([f986282](https://github.com/runloopai/api-client-python/commit/f986282230c815acae4cf9d81685b182ca78ebfa))
* **mux:** strip internal stub note from PTY OpenAPI descriptions ([#9315](https://github.com/runloopai/api-client-python/issues/9315)) ([214629e](https://github.com/runloopai/api-client-python/commit/214629e9281c38ff75b5769e13b4b977a346bb04))
* revert workflow actions to runloopai forks ([#805](https://github.com/runloopai/api-client-python/issues/805)) ([88a9632](https://github.com/runloopai/api-client-python/commit/88a9632507cd422bc43eeb3886ac330c2ab3ba44))


### Chores

* Update stainless.yml, bump AGENTS.md to keep this updated ([#9268](https://github.com/runloopai/api-client-python/issues/9268)) ([5d86ef5](https://github.com/runloopai/api-client-python/commit/5d86ef5240920ba4b6de9e59456aea3c0971e3ef))

## 1.21.0 (2026-05-13)

Full Changelog: [v1.20.3...v1.21.0](https://github.com/runloopai/api-client-python/compare/v1.20.3...v1.21.0)
Expand Down
3 changes: 3 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ from runloop_api_client.types import (
BrokerMount,
CodeMountParameters,
LaunchParameters,
LifecycleConfiguration,
LifecycleHooks,
Mount,
ObjectMount,
ResumeTriggers,
RunProfile,
)
```
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "runloop_api_client"
version = "1.21.0"
version = "1.22.0"
description = "The official Python library for the runloop API"
dynamic = ["readme"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion src/runloop_api_client/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "runloop_api_client"
__version__ = "1.21.0" # x-release-please-version
__version__ = "1.22.0" # x-release-please-version
4 changes: 2 additions & 2 deletions src/runloop_api_client/resources/agents.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def create(
Args:
name: The name of the Agent.

source: The source configuration for the Agent.
source: Agent source configuration.

version: Optional version identifier for the Agent. For npm/pip sources this is typically
a semver string (e.g. '2.0.65'). For git sources it can be a branch or tag.
Expand Down Expand Up @@ -377,7 +377,7 @@ async def create(
Args:
name: The name of the Agent.

source: The source configuration for the Agent.
source: Agent source configuration.

version: Optional version identifier for the Agent. For npm/pip sources this is typically
a semver string (e.g. '2.0.65'). For git sources it can be a branch or tag.
Expand Down
24 changes: 18 additions & 6 deletions src/runloop_api_client/resources/blueprints.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,9 @@ def create(

file_mounts: (Optional) Map of paths and file contents to write before setup.

launch_parameters: Parameters to configure your Devbox at launch time.
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
as well as the environment set up that should be completed before the Devbox is
marked as 'running'.

metadata: (Optional) User defined metadata for the Blueprint.

Expand Down Expand Up @@ -529,7 +531,9 @@ def create_from_inspection(

file_mounts: (Optional) Map of paths and file contents to write before setup.

launch_parameters: Parameters to configure your Devbox at launch time.
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
as well as the environment set up that should be completed before the Devbox is
marked as 'running'.

metadata: (Optional) User defined metadata for the Blueprint.

Expand Down Expand Up @@ -722,7 +726,9 @@ def preview(

file_mounts: (Optional) Map of paths and file contents to write before setup.

launch_parameters: Parameters to configure your Devbox at launch time.
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
as well as the environment set up that should be completed before the Devbox is
marked as 'running'.

metadata: (Optional) User defined metadata for the Blueprint.

Expand Down Expand Up @@ -858,7 +864,9 @@ async def create(

file_mounts: (Optional) Map of paths and file contents to write before setup.

launch_parameters: Parameters to configure your Devbox at launch time.
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
as well as the environment set up that should be completed before the Devbox is
marked as 'running'.

metadata: (Optional) User defined metadata for the Blueprint.

Expand Down Expand Up @@ -1210,7 +1218,9 @@ async def create_from_inspection(

file_mounts: (Optional) Map of paths and file contents to write before setup.

launch_parameters: Parameters to configure your Devbox at launch time.
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
as well as the environment set up that should be completed before the Devbox is
marked as 'running'.

metadata: (Optional) User defined metadata for the Blueprint.

Expand Down Expand Up @@ -1403,7 +1413,9 @@ async def preview(

file_mounts: (Optional) Map of paths and file contents to write before setup.

launch_parameters: Parameters to configure your Devbox at launch time.
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
as well as the environment set up that should be completed before the Devbox is
marked as 'running'.

metadata: (Optional) User defined metadata for the Blueprint.

Expand Down
18 changes: 10 additions & 8 deletions src/runloop_api_client/resources/devboxes/devboxes.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,9 @@ def create(
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.
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
as well as the environment set up that should be completed before the Devbox is
marked as 'running'.

mcp: [Beta] (Optional) MCP specifications for MCP server access. Map key is the
environment variable name for the MCP token envelope. Each spec links an MCP
Expand All @@ -240,9 +242,8 @@ def create(
snapshot_id: Snapshot ID to use for the Devbox. Only one of (Snapshot ID, Blueprint ID,
Blueprint name) should be specified.

tunnel: (Optional) Configuration for creating a V2 tunnel at Devbox launch time. When
specified, a tunnel will be automatically provisioned and the tunnel details
will be included in the Devbox response.
tunnel: Configuration for creating a V2 tunnel. When specified at Devbox creation, a
tunnel will be automatically provisioned.

extra_headers: Send extra headers

Expand Down Expand Up @@ -1877,7 +1878,9 @@ async def create(
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.
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
as well as the environment set up that should be completed before the Devbox is
marked as 'running'.

mcp: [Beta] (Optional) MCP specifications for MCP server access. Map key is the
environment variable name for the MCP token envelope. Each spec links an MCP
Expand All @@ -1901,9 +1904,8 @@ async def create(
snapshot_id: Snapshot ID to use for the Devbox. Only one of (Snapshot ID, Blueprint ID,
Blueprint name) should be specified.

tunnel: (Optional) Configuration for creating a V2 tunnel at Devbox launch time. When
specified, a tunnel will be automatically provisioned and the tunnel details
will be included in the Devbox response.
tunnel: Configuration for creating a V2 tunnel. When specified at Devbox creation, a
tunnel will be automatically provisioned.

extra_headers: Send extra headers

Expand Down
6 changes: 4 additions & 2 deletions src/runloop_api_client/resources/gateway_configs.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,8 @@ def update(
All fields are optional.

Args:
auth_mechanism: New authentication mechanism for applying credentials to proxied requests.
auth_mechanism: Defines how credentials are applied to HTTP requests when proxying through the
gateway.

description: New description for this gateway configuration.

Expand Down Expand Up @@ -440,7 +441,8 @@ async def update(
All fields are optional.

Args:
auth_mechanism: New authentication mechanism for applying credentials to proxied requests.
auth_mechanism: Defines how credentials are applied to HTTP requests when proxying through the
gateway.

description: New description for this gateway configuration.

Expand Down
72 changes: 28 additions & 44 deletions src/runloop_api_client/resources/pty.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,22 +68,18 @@ def connect(
effect. The response returns a PtyConnectView containing connect_url (a
server-relative path to the WebSocket data plane), idle_ttl_seconds (how long
this session is retained after the last client disconnects), and the resulting
cols/rows. The interactive byte stream itself is intentionally not modeled in
OpenAPI; see the controller-level documentation for the WebSocket close-code
conventions. The single-attach contract is enforced when a client opens the
WebSocket data plane, not on this bootstrap call: bootstrap always succeeds for
a valid session_name, even if another client is currently attached. Rejection of
a second concurrent attach happens at WebSocket upgrade time. If the active
client disconnects, the session is preserved for the idle TTL so a later connect
using the same session_name resumes the same shell. After the TTL expires, after
an explicit close control action, or after the underlying Devbox lifecycle
replaces the PTY process (such as through suspend/resume), a later request with
the same session_name creates a fresh PTY session without the previous shell
state.

Documentation note: this operation is published from mux strictly as an OpenAPI
contract stub for the PTY service control plane. It is not evidence that mux
itself serves the interactive PTY transport.
cols/rows. The interactive terminal byte stream is exchanged over the WebSocket
data plane and is not modeled in this OpenAPI contract; clients should connect
to connect_url and exchange raw binary frames for terminal I/O. The
single-attach contract is enforced when a client opens the WebSocket data plane,
not on this bootstrap call: bootstrap always succeeds for a valid session_name,
even if another client is currently attached. Rejection of a second concurrent
attach happens at WebSocket upgrade time. If the active client disconnects, the
session is preserved for the idle TTL so a later connect using the same
session_name resumes the same shell. After the TTL expires, after an explicit
close control action, or after the underlying Devbox lifecycle replaces the PTY
process (such as through suspend/resume), a later request with the same
session_name creates a fresh PTY session without the previous shell state.

Args:
cols: Optional initial terminal width in character cells (1..=1000). Defaults to 80
Expand Down Expand Up @@ -141,8 +137,8 @@ def control(
"""Applies a PTY control operation to an existing session.

The action field selects
the operation; the other fields in PtyControlParameters are interpreted only
when they are relevant to the chosen action.
the operation; the other fields in PtyControlParams are interpreted only when
they are relevant to the chosen action.

resize: cols and rows are required and must each be in 1..=1000. A 0 or
out-of-range value returns 400. The new winsize is applied to the PTY master and
Expand All @@ -158,10 +154,6 @@ def control(
from the server's session cache. A subsequent connect with the same session_name
will create a fresh PTY session.

Documentation note: this operation is published from mux strictly as an OpenAPI
contract stub for the PTY service control plane. It is not evidence that mux
itself serves the interactive PTY transport.

Args:
extra_headers: Send extra headers

Expand Down Expand Up @@ -241,22 +233,18 @@ async def connect(
effect. The response returns a PtyConnectView containing connect_url (a
server-relative path to the WebSocket data plane), idle_ttl_seconds (how long
this session is retained after the last client disconnects), and the resulting
cols/rows. The interactive byte stream itself is intentionally not modeled in
OpenAPI; see the controller-level documentation for the WebSocket close-code
conventions. The single-attach contract is enforced when a client opens the
WebSocket data plane, not on this bootstrap call: bootstrap always succeeds for
a valid session_name, even if another client is currently attached. Rejection of
a second concurrent attach happens at WebSocket upgrade time. If the active
client disconnects, the session is preserved for the idle TTL so a later connect
using the same session_name resumes the same shell. After the TTL expires, after
an explicit close control action, or after the underlying Devbox lifecycle
replaces the PTY process (such as through suspend/resume), a later request with
the same session_name creates a fresh PTY session without the previous shell
state.

Documentation note: this operation is published from mux strictly as an OpenAPI
contract stub for the PTY service control plane. It is not evidence that mux
itself serves the interactive PTY transport.
cols/rows. The interactive terminal byte stream is exchanged over the WebSocket
data plane and is not modeled in this OpenAPI contract; clients should connect
to connect_url and exchange raw binary frames for terminal I/O. The
single-attach contract is enforced when a client opens the WebSocket data plane,
not on this bootstrap call: bootstrap always succeeds for a valid session_name,
even if another client is currently attached. Rejection of a second concurrent
attach happens at WebSocket upgrade time. If the active client disconnects, the
session is preserved for the idle TTL so a later connect using the same
session_name resumes the same shell. After the TTL expires, after an explicit
close control action, or after the underlying Devbox lifecycle replaces the PTY
process (such as through suspend/resume), a later request with the same
session_name creates a fresh PTY session without the previous shell state.

Args:
cols: Optional initial terminal width in character cells (1..=1000). Defaults to 80
Expand Down Expand Up @@ -314,8 +302,8 @@ async def control(
"""Applies a PTY control operation to an existing session.

The action field selects
the operation; the other fields in PtyControlParameters are interpreted only
when they are relevant to the chosen action.
the operation; the other fields in PtyControlParams are interpreted only when
they are relevant to the chosen action.

resize: cols and rows are required and must each be in 1..=1000. A 0 or
out-of-range value returns 400. The new winsize is applied to the PTY master and
Expand All @@ -331,10 +319,6 @@ async def control(
from the server's session cache. A subsequent connect with the same session_name
will create a fresh PTY session.

Documentation note: this operation is published from mux strictly as an OpenAPI
contract stub for the PTY service control plane. It is not evidence that mux
itself serves the interactive PTY transport.

Args:
extra_headers: Send extra headers

Expand Down
12 changes: 8 additions & 4 deletions src/runloop_api_client/resources/scenarios/scenarios.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,8 @@ def create(

scoring_contract: The scoring contract for the Scenario.

environment_parameters: The Environment in which the Scenario will run.
environment_parameters: ScenarioEnvironmentParameters specify the environment in which a Scenario will
be run.

metadata: User defined metadata to attach to the scenario for organization.

Expand Down Expand Up @@ -233,7 +234,8 @@ def update(
entirely.

Args:
environment_parameters: The Environment in which the Scenario will run.
environment_parameters: ScenarioEnvironmentParameters specify the environment in which a Scenario will
be run.

input_context: The input context for the Scenario.

Expand Down Expand Up @@ -637,7 +639,8 @@ async def create(

scoring_contract: The scoring contract for the Scenario.

environment_parameters: The Environment in which the Scenario will run.
environment_parameters: ScenarioEnvironmentParameters specify the environment in which a Scenario will
be run.

metadata: User defined metadata to attach to the scenario for organization.

Expand Down Expand Up @@ -755,7 +758,8 @@ async def update(
entirely.

Args:
environment_parameters: The Environment in which the Scenario will run.
environment_parameters: ScenarioEnvironmentParameters specify the environment in which a Scenario will
be run.

input_context: The input context for the Scenario.

Expand Down
3 changes: 3 additions & 0 deletions src/runloop_api_client/types/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@
AgentSource as AgentSource,
BrokerMount as BrokerMount,
ObjectMount as ObjectMount,
LifecycleHooks as LifecycleHooks,
ResumeTriggers as ResumeTriggers,
LaunchParameters as LaunchParameters,
CodeMountParameters as CodeMountParameters,
LifecycleConfiguration as LifecycleConfiguration,
)
from .axon_view import AxonView as AxonView
from .agent_view import AgentView as AgentView
Expand Down
Loading