From ed324c59c596640896bda199fa2740ce53da06ac Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 16:23:43 +0000 Subject: [PATCH 1/3] feat(portal): support tunnel authorization header (#9597) --- .stats.yml | 4 ++-- src/resources/devboxes/devboxes.ts | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.stats.yml b/.stats.yml index f79cbaf49..4ede86178 100644 --- a/.stats.yml +++ b/.stats.yml @@ -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-1fc91661b27bb65f33c23969c150c99919820c6750b0f40dfad0d22e8827a82c.yml +openapi_spec_hash: 2659e11dc1a69ec327f5e7bb0c0c6fe2 config_hash: ed1fdd7c9f0a25647e16b602bad4ff2e diff --git a/src/resources/devboxes/devboxes.ts b/src/resources/devboxes/devboxes.ts index fd1042d87..0bedeb2b7 100644 --- a/src/resources/devboxes/devboxes.ts +++ b/src/resources/devboxes/devboxes.ts @@ -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 { return this._client.post(`/v1/devboxes/${id}/create_pty_tunnel`, options); @@ -929,7 +929,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; } @@ -994,11 +995,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; @@ -1015,7 +1017,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 { /** @@ -1048,7 +1051,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; } From 398e350d12074fb6f3244b505df8a774922b114e Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 5 Jun 2026 21:52:13 +0000 Subject: [PATCH 2/3] feat(devbox): add SCHEDULED status to the data model (#9654) --- .stats.yml | 4 ++-- src/resources/devboxes/devboxes.ts | 22 +++++++++++-------- tests/api-resources/devboxes/devboxes.test.ts | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/.stats.yml b/.stats.yml index 4ede86178..ad0d55423 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 120 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-1fc91661b27bb65f33c23969c150c99919820c6750b0f40dfad0d22e8827a82c.yml -openapi_spec_hash: 2659e11dc1a69ec327f5e7bb0c0c6fe2 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-22ab4a80734e5e3792b7287a1281280d52eff936be4d805011521a1b64e1998d.yml +openapi_spec_hash: d109d3b797016fe7657935d55549cc31 config_hash: ed1fdd7c9f0a25647e16b602bad4ff2e diff --git a/src/resources/devboxes/devboxes.ts b/src/resources/devboxes/devboxes.ts index 0bedeb2b7..2a1ba0d36 100644 --- a/src/resources/devboxes/devboxes.ts +++ b/src/resources/devboxes/devboxes.ts @@ -851,6 +851,7 @@ export interface DevboxView { * The current status of the Devbox. */ status: + | 'scheduled' | 'provisioning' | 'initializing' | 'running' @@ -940,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' @@ -1281,6 +1284,7 @@ export interface DevboxListParams extends DevboxesCursorIDPageParams { * Filter by status */ status?: + | 'scheduled' | 'provisioning' | 'initializing' | 'running' diff --git a/tests/api-resources/devboxes/devboxes.test.ts b/tests/api-resources/devboxes/devboxes.test.ts index 1f6fd0eef..b8c523041 100644 --- a/tests/api-resources/devboxes/devboxes.test.ts +++ b/tests/api-resources/devboxes/devboxes.test.ts @@ -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' }, ), From baa12c6987164f6e36bc7bf793f5e18156bbc3c1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 5 Jun 2026 21:52:46 +0000 Subject: [PATCH 3/3] release: 1.23.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 10 ++++++++++ package.json | 2 +- packages/mcp-server/manifest.json | 2 +- packages/mcp-server/package.json | 2 +- packages/mcp-server/src/server.ts | 2 +- src/version.ts | 2 +- 7 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b9133486f..c41415c5e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.22.1" + ".": "1.23.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 523afbbe9..ed5279d21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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) diff --git a/package.json b/package.json index a36f18a5b..0cf30dbd5 100644 --- a/package.json +++ b/package.json @@ -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 ", "types": "dist/sdk.d.ts", diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json index 736a6bc61..4d3d37737 100644 --- a/packages/mcp-server/manifest.json +++ b/packages/mcp-server/manifest.json @@ -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", diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 07c997d1d..bbeedec1c 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -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 ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index cbc82fef7..44c5b3050 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -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), diff --git a/src/version.ts b/src/version.ts index 72a2c411f..bdee6e784 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '1.22.1'; // x-release-please-version +export const VERSION = '1.23.0'; // x-release-please-version