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/.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/CHANGELOG.md b/CHANGELOG.md
index 6e0def9..e8d68b2 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
+
+* 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)
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/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/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/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/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
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' });