From 115aa05556536a505610e80152dc40f03f4dfada Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 19 Nov 2025 19:37:19 +0000 Subject: [PATCH 1/4] feat: allow get browser to paginate soft deleted browsers --- .stats.yml | 4 +- api.md | 2 +- src/client.ts | 4 + src/resources/browsers/browsers.ts | 204 ++++++++++-------- src/resources/browsers/index.ts | 2 + src/resources/index.ts | 2 + tests/api-resources/browsers/browsers.test.ts | 11 + 7 files changed, 139 insertions(+), 90 deletions(-) diff --git a/.stats.yml b/.stats.yml index 53123c9..11b820d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 66 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-d611cf8b0301a07123eab0e92498bea5ad69c5292b28aca1016c362cca0a0564.yml -openapi_spec_hash: 6d30f4ad9d61a7da8a75d543cf3d3d75 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-2af1b468584cb44aa9babbbfb82bff4055614fbb5c815084a6b7dacc1cf1a822.yml +openapi_spec_hash: 891affa2849341ea01d62011125f7edc config_hash: 9421eb86b7f3f4b274f123279da3858e diff --git a/api.md b/api.md index 216b25f..982d841 100644 --- a/api.md +++ b/api.md @@ -70,7 +70,7 @@ Methods: - client.browsers.create({ ...params }) -> BrowserCreateResponse - client.browsers.retrieve(id) -> BrowserRetrieveResponse -- client.browsers.list() -> BrowserListResponse +- client.browsers.list({ ...params }) -> BrowserListResponsesOffsetPagination - client.browsers.delete({ ...params }) -> void - client.browsers.deleteByID(id) -> void - client.browsers.loadExtensions(id, { ...params }) -> void diff --git a/src/client.ts b/src/client.ts index 847f278..a419c27 100644 --- a/src/client.ts +++ b/src/client.ts @@ -65,7 +65,9 @@ import { BrowserCreateParams, BrowserCreateResponse, BrowserDeleteParams, + BrowserListParams, BrowserListResponse, + BrowserListResponsesOffsetPagination, BrowserLoadExtensionsParams, BrowserPersistence, BrowserRetrieveResponse, @@ -902,7 +904,9 @@ export declare namespace Kernel { type BrowserCreateResponse as BrowserCreateResponse, type BrowserRetrieveResponse as BrowserRetrieveResponse, type BrowserListResponse as BrowserListResponse, + type BrowserListResponsesOffsetPagination as BrowserListResponsesOffsetPagination, type BrowserCreateParams as BrowserCreateParams, + type BrowserListParams as BrowserListParams, type BrowserDeleteParams as BrowserDeleteParams, type BrowserLoadExtensionsParams as BrowserLoadExtensionsParams, }; diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts index e3fb6c4..1c0f9bc 100644 --- a/src/resources/browsers/browsers.ts +++ b/src/resources/browsers/browsers.ts @@ -1,7 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../../core/resource'; -import * as BrowsersAPI from './browsers'; import * as ComputerAPI from './computer'; import { Computer, @@ -63,6 +62,7 @@ import { Fs, } from './fs/fs'; import { APIPromise } from '../../core/api-promise'; +import { OffsetPagination, type OffsetPaginationParams, PagePromise } from '../../core/pagination'; import { type Uploadable } from '../../core/uploads'; import { buildHeaders } from '../../internal/headers'; import { RequestOptions } from '../../internal/request-options'; @@ -107,15 +107,22 @@ export class Browsers extends APIResource { } /** - * List active browser sessions + * List all browser sessions with pagination support. Use include_deleted=true to + * include soft-deleted sessions in the results. * * @example * ```ts - * const browsers = await client.browsers.list(); + * // Automatically fetches more pages as needed. + * for await (const browserListResponse of client.browsers.list()) { + * // ... + * } * ``` */ - list(options?: RequestOptions): APIPromise { - return this._client.get('/browsers', options); + list( + query: BrowserListParams | null | undefined = {}, + options?: RequestOptions, + ): PagePromise { + return this._client.getAPIList('/browsers', OffsetPagination, { query, ...options }); } /** @@ -181,6 +188,8 @@ export class Browsers extends APIResource { } } +export type BrowserListResponsesOffsetPagination = OffsetPagination; + /** * Optional persistence configuration for the browser session. */ @@ -258,6 +267,11 @@ export interface BrowserCreateResponse { */ browser_live_view_url?: string; + /** + * When the browser session was soft-deleted. Only present for deleted sessions. + */ + deleted_at?: string; + /** * Whether the browser session is running in kiosk mode. */ @@ -358,6 +372,11 @@ export interface BrowserRetrieveResponse { */ browser_live_view_url?: string; + /** + * When the browser session was soft-deleted. Only present for deleted sessions. + */ + deleted_at?: string; + /** * Whether the browser session is running in kiosk mode. */ @@ -421,107 +440,108 @@ export namespace BrowserRetrieveResponse { } } -export type BrowserListResponse = Array; +export interface BrowserListResponse { + /** + * Websocket URL for Chrome DevTools Protocol connections to the browser session + */ + cdp_ws_url: string; -export namespace BrowserListResponse { - export interface BrowserListResponseItem { - /** - * Websocket URL for Chrome DevTools Protocol connections to the browser session - */ - cdp_ws_url: string; + /** + * When the browser session was created. + */ + created_at: string; - /** - * When the browser session was created. - */ - created_at: string; + /** + * Whether the browser session is running in headless mode. + */ + headless: boolean; - /** - * Whether the browser session is running in headless mode. - */ - headless: boolean; + /** + * Unique identifier for the browser session + */ + session_id: string; - /** - * Unique identifier for the browser session - */ - session_id: string; + /** + * Whether the browser session is running in stealth mode. + */ + stealth: boolean; - /** - * Whether the browser session is running in stealth mode. - */ - stealth: boolean; + /** + * The number of seconds of inactivity before the browser session is terminated. + */ + timeout_seconds: number; - /** - * The number of seconds of inactivity before the browser session is terminated. - */ - timeout_seconds: number; + /** + * Remote URL for live viewing the browser session. Only available for non-headless + * browsers. + */ + browser_live_view_url?: string; - /** - * Remote URL for live viewing the browser session. Only available for non-headless - * browsers. - */ - browser_live_view_url?: string; + /** + * When the browser session was soft-deleted. Only present for deleted sessions. + */ + deleted_at?: string; - /** - * Whether the browser session is running in kiosk mode. - */ - kiosk_mode?: boolean; + /** + * Whether the browser session is running in kiosk mode. + */ + kiosk_mode?: boolean; - /** - * Optional persistence configuration for the browser session. - */ - persistence?: BrowsersAPI.BrowserPersistence; + /** + * Optional persistence configuration for the browser session. + */ + persistence?: BrowserPersistence; - /** - * Browser profile metadata. - */ - profile?: BrowsersAPI.Profile; + /** + * Browser profile metadata. + */ + profile?: Profile; + + /** + * ID of the proxy associated with this browser session, if any. + */ + proxy_id?: string; + + /** + * Initial browser window size in pixels with optional refresh rate. If omitted, + * image defaults apply (commonly 1024x768@60). Only specific viewport + * configurations are supported. The server will reject unsupported combinations. + * Supported resolutions are: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1024x768@60, 1200x800@60 If refresh_rate is not provided, it will + * be automatically determined from the width and height if they match a supported + * configuration exactly. Note: Higher resolutions may affect the responsiveness of + * live view browser + */ + viewport?: BrowserListResponse.Viewport; +} +export namespace BrowserListResponse { + /** + * Initial browser window size in pixels with optional refresh rate. If omitted, + * image defaults apply (commonly 1024x768@60). Only specific viewport + * configurations are supported. The server will reject unsupported combinations. + * Supported resolutions are: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1024x768@60, 1200x800@60 If refresh_rate is not provided, it will + * be automatically determined from the width and height if they match a supported + * configuration exactly. Note: Higher resolutions may affect the responsiveness of + * live view browser + */ + export interface Viewport { /** - * ID of the proxy associated with this browser session, if any. + * Browser window height in pixels. */ - proxy_id?: string; + height: number; /** - * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (commonly 1024x768@60). Only specific viewport - * configurations are supported. The server will reject unsupported combinations. - * Supported resolutions are: 2560x1440@10, 1920x1080@25, 1920x1200@25, - * 1440x900@25, 1024x768@60, 1200x800@60 If refresh_rate is not provided, it will - * be automatically determined from the width and height if they match a supported - * configuration exactly. Note: Higher resolutions may affect the responsiveness of - * live view browser + * Browser window width in pixels. */ - viewport?: BrowserListResponseItem.Viewport; - } + width: number; - export namespace BrowserListResponseItem { /** - * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (commonly 1024x768@60). Only specific viewport - * configurations are supported. The server will reject unsupported combinations. - * Supported resolutions are: 2560x1440@10, 1920x1080@25, 1920x1200@25, - * 1440x900@25, 1024x768@60, 1200x800@60 If refresh_rate is not provided, it will - * be automatically determined from the width and height if they match a supported - * configuration exactly. Note: Higher resolutions may affect the responsiveness of - * live view browser + * Display refresh rate in Hz. If omitted, automatically determined from width and + * height. */ - export interface Viewport { - /** - * Browser window height in pixels. - */ - height: number; - - /** - * Browser window width in pixels. - */ - width: number; - - /** - * Display refresh rate in Hz. If omitted, automatically determined from width and - * height. - */ - refresh_rate?: number; - } + refresh_rate?: number; } } @@ -666,6 +686,14 @@ export namespace BrowserCreateParams { } } +export interface BrowserListParams extends OffsetPaginationParams { + /** + * When true, includes soft-deleted browser sessions in the results alongside + * active sessions. + */ + include_deleted?: boolean; +} + export interface BrowserDeleteParams { /** * Persistent browser identifier @@ -709,7 +737,9 @@ export declare namespace Browsers { type BrowserCreateResponse as BrowserCreateResponse, type BrowserRetrieveResponse as BrowserRetrieveResponse, type BrowserListResponse as BrowserListResponse, + type BrowserListResponsesOffsetPagination as BrowserListResponsesOffsetPagination, type BrowserCreateParams as BrowserCreateParams, + type BrowserListParams as BrowserListParams, type BrowserDeleteParams as BrowserDeleteParams, type BrowserLoadExtensionsParams as BrowserLoadExtensionsParams, }; diff --git a/src/resources/browsers/index.ts b/src/resources/browsers/index.ts index c4dcd77..569517a 100644 --- a/src/resources/browsers/index.ts +++ b/src/resources/browsers/index.ts @@ -8,8 +8,10 @@ export { type BrowserRetrieveResponse, type BrowserListResponse, type BrowserCreateParams, + type BrowserListParams, type BrowserDeleteParams, type BrowserLoadExtensionsParams, + type BrowserListResponsesOffsetPagination, } from './browsers'; export { Computer, diff --git a/src/resources/index.ts b/src/resources/index.ts index d7e326c..69c693d 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -15,8 +15,10 @@ export { type BrowserRetrieveResponse, type BrowserListResponse, type BrowserCreateParams, + type BrowserListParams, type BrowserDeleteParams, type BrowserLoadExtensionsParams, + type BrowserListResponsesOffsetPagination, } from './browsers/browsers'; export { Deployments, diff --git a/tests/api-resources/browsers/browsers.test.ts b/tests/api-resources/browsers/browsers.test.ts index 14ec8f8..c44ac77 100644 --- a/tests/api-resources/browsers/browsers.test.ts +++ b/tests/api-resources/browsers/browsers.test.ts @@ -66,6 +66,17 @@ describe('resource browsers', () => { expect(dataAndResponse.response).toBe(rawResponse); }); + // Prism tests are disabled + test.skip('list: request options and params are passed correctly', async () => { + // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error + await expect( + client.browsers.list( + { include_deleted: true, limit: 1, offset: 0 }, + { path: '/_stainless_unknown_path' }, + ), + ).rejects.toThrow(Kernel.NotFoundError); + }); + // Prism tests are disabled test.skip('delete: only required params', async () => { const responsePromise = client.browsers.delete({ persistent_id: 'persistent_id' }); From d6c9212fc264f4cd3ddb2858addda5fbe7b2554a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 19 Nov 2025 19:37:36 +0000 Subject: [PATCH 2/4] release: 0.20.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ package.json | 2 +- src/version.ts | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b2c706c..71e95ba 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.19.2" + ".": "0.20.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e0def9..3163723 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.20.0 (2025-11-19) + +Full Changelog: [v0.19.2...v0.20.0](https://github.com/onkernel/kernel-node-sdk/compare/v0.19.2...v0.20.0) + +### Features + +* allow get browser to paginate soft deleted browsers ([115aa05](https://github.com/onkernel/kernel-node-sdk/commit/115aa05556536a505610e80152dc40f03f4dfada)) + ## 0.19.2 (2025-11-17) Full Changelog: [v0.19.1...v0.19.2](https://github.com/onkernel/kernel-node-sdk/compare/v0.19.1...v0.19.2) diff --git a/package.json b/package.json index b5880c8..6fa7c73 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@onkernel/sdk", - "version": "0.19.2", + "version": "0.20.0", "description": "The official TypeScript library for the Kernel API", "author": "Kernel <>", "types": "dist/index.d.ts", diff --git a/src/version.ts b/src/version.ts index 2f39e96..b4e51da 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.19.2'; // x-release-please-version +export const VERSION = '0.20.0'; // x-release-please-version From da4fed499696636249fc2d49b3a41d6d2aa85e29 Mon Sep 17 00:00:00 2001 From: mateoCuervo Date: Wed, 19 Nov 2025 14:47:43 -0500 Subject: [PATCH 3/4] Apply suggestion from @mateoCuervo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3163723..2c87932 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Full Changelog: [v0.19.2...v0.20.0](https://github.com/onkernel/kernel-node-sdk/ ### Features -* allow get browser to paginate soft deleted browsers ([115aa05](https://github.com/onkernel/kernel-node-sdk/commit/115aa05556536a505610e80152dc40f03f4dfada)) +* Add pagination to get browsers and allow it to include deleted browsers when `include_deleted = true` ([115aa05](https://github.com/onkernel/kernel-node-sdk/commit/115aa05556536a505610e80152dc40f03f4dfada)) ## 0.19.2 (2025-11-17) From b59811dc71e7e30b477d5a4da07cb8339f7bba59 Mon Sep 17 00:00:00 2001 From: mateoCuervo Date: Wed, 19 Nov 2025 14:49:18 -0500 Subject: [PATCH 4/4] Apply suggestion from @mateoCuervo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c87932..e8d68b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Full Changelog: [v0.19.2...v0.20.0](https://github.com/onkernel/kernel-node-sdk/ ### Features -* Add pagination to get browsers and allow it to include deleted browsers when `include_deleted = true` ([115aa05](https://github.com/onkernel/kernel-node-sdk/commit/115aa05556536a505610e80152dc40f03f4dfada)) +* Add pagination to list browsers method and allow it to include deleted browsers when `include_deleted = true` ([115aa05](https://github.com/onkernel/kernel-node-sdk/commit/115aa05556536a505610e80152dc40f03f4dfada)) ## 0.19.2 (2025-11-17)