Skip to content
Open
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.22.1"
".": "1.23.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 120
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-96b0ac0a148db6fde2e8363ea2dcfaa63f2dc23cf35c30c5fcfffbefc222e5d1.yml
openapi_spec_hash: 01b9dbab4b732e4b83952debd108e404
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-22ab4a80734e5e3792b7287a1281280d52eff936be4d805011521a1b64e1998d.yml
openapi_spec_hash: d109d3b797016fe7657935d55549cc31
config_hash: ed1fdd7c9f0a25647e16b602bad4ff2e
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## 1.23.0 (2026-06-05)

Full Changelog: [v1.22.1...v1.23.0](https://github.com/runloopai/api-client-ts/compare/v1.22.1...v1.23.0)

### Features

* **devbox:** add SCHEDULED status to the data model ([#9654](https://github.com/runloopai/api-client-ts/issues/9654)) ([398e350](https://github.com/runloopai/api-client-ts/commit/398e350d12074fb6f3244b505df8a774922b114e))
* opt-in HTTP/2 multiplexing transport via undici 7 (Node >= 20.18.1) ([#791](https://github.com/runloopai/api-client-ts/issues/791)) ([4cafa17](https://github.com/runloopai/api-client-ts/commit/4cafa17b21d71eeaf8091784a8bf8e9fc40f786b))
* **portal:** support tunnel authorization header ([#9597](https://github.com/runloopai/api-client-ts/issues/9597)) ([ed324c5](https://github.com/runloopai/api-client-ts/commit/ed324c59c596640896bda199fa2740ce53da06ac))

## 1.22.1 (2026-06-01)

Full Changelog: [v1.22.0...v1.22.1](https://github.com/runloopai/api-client-ts/compare/v1.22.0...v1.22.1)
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@runloop/api-client",
"version": "1.22.1",
"version": "1.23.0",
"description": "The official TypeScript library for the Runloop API",
"author": "Runloop <support@runloop.ai>",
"types": "dist/sdk.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp-server/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"dxt_version": "0.2",
"name": "@runloop/api-client-mcp",
"version": "1.22.1",
"version": "1.23.0",
"description": "The official MCP Server for the Runloop API",
"author": {
"name": "Runloop",
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp-server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@runloop/api-client-mcp",
"version": "1.22.1",
"version": "1.23.0",
"description": "The official MCP Server for the Runloop API",
"author": "Runloop <support@runloop.ai>",
"types": "dist/index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp-server/src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export const newMcpServer = async (stainlessApiKey: string | undefined) =>
new McpServer(
{
name: 'runloop_api_client_api',
version: '1.22.1',
version: '1.23.0',
},
{
instructions: await getInstructions(stainlessApiKey),
Expand Down
39 changes: 23 additions & 16 deletions src/resources/devboxes/devboxes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,8 @@ export class Devboxes extends APIResource {
/**
* Create an ephemeral authenticated tunnel for terminal access to a running
* Devbox. This tunnel is not persisted on the Devbox and is generated fresh on
* each request. The returned auth_token must be passed as a Bearer token in the
* Authorization header.
* each request. The returned auth_token should be passed as a Bearer token in the
* X-Runloop-Tunnel-Authorization header.
*/
createPtyTunnel(id: string, options?: Core.RequestOptions): Core.APIPromise<PtyTunnelView> {
return this._client.post(`/v1/devboxes/${id}/create_pty_tunnel`, options);
Expand Down Expand Up @@ -851,6 +851,7 @@ export interface DevboxView {
* The current status of the Devbox.
*/
status:
| 'scheduled'
| 'provisioning'
| 'initializing'
| 'running'
Expand Down Expand Up @@ -929,7 +930,8 @@ export interface DevboxView {
* running inside a Devbox without requiring direct network access. Each tunnel is
* uniquely identified by an encrypted tunnel_key and can be configured for either
* open (public) or authenticated access. Usage:
* https://{port}-{tunnel_key}.tunnel.runloop.ai
* https://{port}-{tunnel_key}.tunnel.runloop.ai. Authenticated tunnels should pass
* auth_token as X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
*/
tunnel?: TunnelView | null;
}
Expand All @@ -939,17 +941,19 @@ export namespace DevboxView {
/**
* The status of the Devbox.
*
* provisioning: Runloop is allocating and booting the necessary infrastructure
* resources. initializing: Runloop defined boot scripts are running to enable the
* environment for interaction. running: The Devbox is ready for interaction.
* suspending: The Devbox disk is being snapshotted as part of suspension.
* suspended: The Devbox disk is saved and no more active compute is being used for
* the Devbox. resuming: The Devbox disk is being loaded as part of booting a
* suspended Devbox. failure: The Devbox failed as part of booting or running user
* requested actions. shutdown: The Devbox was successfully shutdown and no more
* active compute is being used.
* scheduled: The Devbox is scheduled to run but infrastructure allocation has not
* started yet. provisioning: Runloop is allocating and booting the necessary
* infrastructure resources. initializing: Runloop defined boot scripts are running
* to enable the environment for interaction. running: The Devbox is ready for
* interaction. suspending: The Devbox disk is being snapshotted as part of
* suspension. suspended: The Devbox disk is saved and no more active compute is
* being used for the Devbox. resuming: The Devbox disk is being loaded as part of
* booting a suspended Devbox. failure: The Devbox failed as part of booting or
* running user requested actions. shutdown: The Devbox was successfully shutdown
* and no more active compute is being used.
*/
status?:
| 'scheduled'
| 'provisioning'
| 'initializing'
| 'running'
Expand Down Expand Up @@ -994,11 +998,12 @@ export namespace DevboxView {
* An ephemeral PTY tunnel providing authenticated terminal access to a Devbox.
* These tunnels are not stored on the Devbox and are generated fresh on each
* request. Usage: https://{port}-{tunnel_key}.tunnel.runloop.ai with
* Authorization: Bearer {auth_token}
* X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
*/
export interface PtyTunnelView {
/**
* Bearer token for tunnel authentication. Always required for PTY tunnels.
* Bearer token for tunnel authentication. Always required for PTY tunnels. Pass as
* X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
*/
auth_token: string;

Expand All @@ -1015,7 +1020,8 @@ export interface PtyTunnelView {
* running inside a Devbox without requiring direct network access. Each tunnel is
* uniquely identified by an encrypted tunnel_key and can be configured for either
* open (public) or authenticated access. Usage:
* https://{port}-{tunnel_key}.tunnel.runloop.ai
* https://{port}-{tunnel_key}.tunnel.runloop.ai. Authenticated tunnels should pass
* auth_token as X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
*/
export interface TunnelView {
/**
Expand Down Expand Up @@ -1048,7 +1054,7 @@ export interface TunnelView {

/**
* Bearer token for tunnel authentication. Only present when auth_mode is
* 'authenticated'.
* 'authenticated'. Pass as X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
*/
auth_token?: string | null;
}
Expand Down Expand Up @@ -1278,6 +1284,7 @@ export interface DevboxListParams extends DevboxesCursorIDPageParams {
* Filter by status
*/
status?:
| 'scheduled'
| 'provisioning'
| 'initializing'
| 'running'
Expand Down
2 changes: 1 addition & 1 deletion src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = '1.22.1'; // x-release-please-version
export const VERSION = '1.23.0'; // x-release-please-version
2 changes: 1 addition & 1 deletion tests/api-resources/devboxes/devboxes.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ describe('resource devboxes', () => {
include_total_count: true,
limit: 0,
starting_after: 'starting_after',
status: 'provisioning',
status: 'scheduled',
},
{ path: '/_stainless_unknown_path' },
),
Expand Down