From 80fc057f4d08ced4820b045cf744bf99df9af136 Mon Sep 17 00:00:00 2001 From: Siddarth Chalasani Date: Tue, 24 Mar 2026 16:03:07 -0700 Subject: [PATCH 1/3] update `removeTunnel()` oo sdk method and add smoketest --- src/sdk/devbox.ts | 7 +------ tests/smoketests/object-oriented/devbox.test.ts | 2 ++ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/sdk/devbox.ts b/src/sdk/devbox.ts index 52183384a..3937f815d 100644 --- a/src/sdk/devbox.ts +++ b/src/sdk/devbox.ts @@ -130,19 +130,14 @@ export class DevboxNetOps { } /** - * @deprecated Only works with legacy tunnels created via {@link createTunnel}. - * V2 tunnels (from {@link enableTunnel}) remain active until devbox shutdown and cannot be removed. - * - * Remove a legacy tunnel from the devbox. + * Remove an existing V2 tunnel from the devbox. * * @example * ```typescript - * // Deprecated - only for legacy tunnels * await devbox.net.removeTunnel(); * ``` * * @param {Core.RequestOptions} [options] - Request options - * @returns {Promise} Tunnel removal result */ async removeTunnel(options?: Core.RequestOptions) { return this.client.devboxes.removeTunnel(this.devboxId, options); diff --git a/tests/smoketests/object-oriented/devbox.test.ts b/tests/smoketests/object-oriented/devbox.test.ts index 937537059..025a2b123 100644 --- a/tests/smoketests/object-oriented/devbox.test.ts +++ b/tests/smoketests/object-oriented/devbox.test.ts @@ -282,6 +282,8 @@ describe('smoketest: object-oriented devbox', () => { const info = await devbox.getInfo(); expect(info.tunnel).toBeDefined(); expect(info.tunnel?.tunnel_key).toBe(tunnel.tunnel_key); + + await devbox.net.removeTunnel(); } finally { await devbox.shutdown(); } From 91a45129eac09f9e5eac523b918579962b2af104 Mon Sep 17 00:00:00 2001 From: Siddarth Chalasani Date: Tue, 24 Mar 2026 16:08:53 -0700 Subject: [PATCH 2/3] address comments --- tests/smoketests/object-oriented/devbox.test.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/smoketests/object-oriented/devbox.test.ts b/tests/smoketests/object-oriented/devbox.test.ts index 025a2b123..603128f30 100644 --- a/tests/smoketests/object-oriented/devbox.test.ts +++ b/tests/smoketests/object-oriented/devbox.test.ts @@ -284,6 +284,9 @@ describe('smoketest: object-oriented devbox', () => { expect(info.tunnel?.tunnel_key).toBe(tunnel.tunnel_key); await devbox.net.removeTunnel(); + + const tunnelAfterRemoval = await devbox.getTunnel(); + expect(tunnelAfterRemoval).toBeNull(); } finally { await devbox.shutdown(); } From a16c425cd309fd1d66d587c8a1fbdeebba91d1cc Mon Sep 17 00:00:00 2001 From: Siddarth Chalasani Date: Tue, 24 Mar 2026 16:23:52 -0700 Subject: [PATCH 3/3] address comments + cleanup --- src/sdk/devbox.ts | 1 + tests/objects/devbox.test.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sdk/devbox.ts b/src/sdk/devbox.ts index 3937f815d..df25963c9 100644 --- a/src/sdk/devbox.ts +++ b/src/sdk/devbox.ts @@ -138,6 +138,7 @@ export class DevboxNetOps { * ``` * * @param {Core.RequestOptions} [options] - Request options + * @returns {Promise} */ async removeTunnel(options?: Core.RequestOptions) { return this.client.devboxes.removeTunnel(this.devboxId, options); diff --git a/tests/objects/devbox.test.ts b/tests/objects/devbox.test.ts index 2dfc9f8f4..4a9fadfa9 100644 --- a/tests/objects/devbox.test.ts +++ b/tests/objects/devbox.test.ts @@ -378,7 +378,7 @@ describe('Devbox (New API)', () => { expect(result).toEqual(mockTunnel); }); - it('should remove legacy tunnel', async () => { + it('should remove tunnel', async () => { mockClient.devboxes.removeTunnel.mockResolvedValue(undefined); const result = await devbox.net.removeTunnel();