diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 727e2be..7b5cb64 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.14.0"
+ ".": "0.14.1"
}
diff --git a/.stats.yml b/.stats.yml
index f577dd0..9960955 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 57
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-936db268b3dcae5d64bd5d590506d8134304ffcbf67389eb9b1555b3febfd4cb.yml
-openapi_spec_hash: 145485087adf1b28c052bacb4df68462
-config_hash: 15cd063f8e308686ac71bf9ee9634625
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-1cd328ccf61f0e888d6df27b091c30b38c392ab9ca8ce7fd0ead8f10aaf71ffa.yml
+openapi_spec_hash: af761c48d1955f11822f3b95f9c46750
+config_hash: deadfc4d2b0a947673bcf559b5db6e1b
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ea0274..1176c64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
# Changelog
+## 0.14.1 (2025-10-13)
+
+Full Changelog: [v0.14.0...v0.14.1](https://github.com/onkernel/kernel-node-sdk/compare/v0.14.0...v0.14.1)
+
+### Features
+
+* Hide and deprecate mobile proxy type ([54dae63](https://github.com/onkernel/kernel-node-sdk/commit/54dae631f02ce14c75222677ffa171895f4cb0ca))
+* WIP: Configurable Viewport ([2a85d81](https://github.com/onkernel/kernel-node-sdk/commit/2a85d8110a918d62a528401e278758cf5eeb9b82))
+
## 0.14.0 (2025-10-07)
Full Changelog: [v0.13.0...v0.14.0](https://github.com/onkernel/kernel-node-sdk/compare/v0.13.0...v0.14.0)
diff --git a/api.md b/api.md
index 9bf2b7d..92e5d8d 100644
--- a/api.md
+++ b/api.md
@@ -73,7 +73,7 @@ Methods:
- client.browsers.list() -> BrowserListResponse
- client.browsers.delete({ ...params }) -> void
- client.browsers.deleteByID(id) -> void
-- client.browsers.uploadExtensions(id, { ...params }) -> void
+- client.browsers.loadExtensions(id, { ...params }) -> void
## Replays
diff --git a/package.json b/package.json
index eebd87b..9d66def 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@onkernel/sdk",
- "version": "0.14.0",
+ "version": "0.14.1",
"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 2b74698..5497543 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -66,9 +66,9 @@ import {
BrowserCreateResponse,
BrowserDeleteParams,
BrowserListResponse,
+ BrowserLoadExtensionsParams,
BrowserPersistence,
BrowserRetrieveResponse,
- BrowserUploadExtensionsParams,
Browsers,
Profile,
} from './resources/browsers/browsers';
@@ -899,7 +899,7 @@ export declare namespace Kernel {
type BrowserListResponse as BrowserListResponse,
type BrowserCreateParams as BrowserCreateParams,
type BrowserDeleteParams as BrowserDeleteParams,
- type BrowserUploadExtensionsParams as BrowserUploadExtensionsParams,
+ type BrowserLoadExtensionsParams as BrowserLoadExtensionsParams,
};
export {
diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts
index 32681da..2971650 100644
--- a/src/resources/browsers/browsers.ts
+++ b/src/resources/browsers/browsers.ts
@@ -143,7 +143,7 @@ export class Browsers extends APIResource {
*
* @example
* ```ts
- * await client.browsers.uploadExtensions('id', {
+ * await client.browsers.loadExtensions('id', {
* extensions: [
* {
* name: 'name',
@@ -153,11 +153,7 @@ export class Browsers extends APIResource {
* });
* ```
*/
- uploadExtensions(
- id: string,
- body: BrowserUploadExtensionsParams,
- options?: RequestOptions,
- ): APIPromise {
+ loadExtensions(id: string, body: BrowserLoadExtensionsParams, options?: RequestOptions): APIPromise {
return this._client.post(
path`/browsers/${id}/extensions`,
multipartFormRequestOptions(
@@ -259,6 +255,48 @@ export interface BrowserCreateResponse {
* 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 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?: BrowserCreateResponse.Viewport;
+}
+
+export namespace BrowserCreateResponse {
+ /**
+ * 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 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 {
+ /**
+ * 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;
+ }
}
export interface BrowserRetrieveResponse {
@@ -312,6 +350,48 @@ export interface BrowserRetrieveResponse {
* 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 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?: BrowserRetrieveResponse.Viewport;
+}
+
+export namespace BrowserRetrieveResponse {
+ /**
+ * 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 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 {
+ /**
+ * 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;
+ }
}
export type BrowserListResponse = Array;
@@ -368,6 +448,48 @@ export namespace BrowserListResponse {
* 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 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?: BrowserListResponseItem.Viewport;
+ }
+
+ 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 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 {
+ /**
+ * 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;
+ }
}
}
@@ -421,6 +543,18 @@ export interface BrowserCreateParams {
* specified value.
*/
timeout_seconds?: 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 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?: BrowserCreateParams.Viewport;
}
export namespace BrowserCreateParams {
@@ -464,6 +598,34 @@ export namespace BrowserCreateParams {
*/
save_changes?: boolean;
}
+
+ /**
+ * 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 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 {
+ /**
+ * 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;
+ }
}
export interface BrowserDeleteParams {
@@ -473,14 +635,14 @@ export interface BrowserDeleteParams {
persistent_id: string;
}
-export interface BrowserUploadExtensionsParams {
+export interface BrowserLoadExtensionsParams {
/**
* List of extensions to upload and activate
*/
- extensions: Array;
+ extensions: Array;
}
-export namespace BrowserUploadExtensionsParams {
+export namespace BrowserLoadExtensionsParams {
export interface Extension {
/**
* Folder name to place the extension under /home/kernel/extensions/
@@ -509,7 +671,7 @@ export declare namespace Browsers {
type BrowserListResponse as BrowserListResponse,
type BrowserCreateParams as BrowserCreateParams,
type BrowserDeleteParams as BrowserDeleteParams,
- type BrowserUploadExtensionsParams as BrowserUploadExtensionsParams,
+ type BrowserLoadExtensionsParams as BrowserLoadExtensionsParams,
};
export {
diff --git a/src/resources/browsers/index.ts b/src/resources/browsers/index.ts
index 71eab3b..53bb8a9 100644
--- a/src/resources/browsers/index.ts
+++ b/src/resources/browsers/index.ts
@@ -9,7 +9,7 @@ export {
type BrowserListResponse,
type BrowserCreateParams,
type BrowserDeleteParams,
- type BrowserUploadExtensionsParams,
+ type BrowserLoadExtensionsParams,
} from './browsers';
export {
Fs,
diff --git a/src/resources/index.ts b/src/resources/index.ts
index 37026ae..83e4312 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -11,7 +11,7 @@ export {
type BrowserListResponse,
type BrowserCreateParams,
type BrowserDeleteParams,
- type BrowserUploadExtensionsParams,
+ type BrowserLoadExtensionsParams,
} from './browsers/browsers';
export {
Deployments,
diff --git a/src/resources/proxies.ts b/src/resources/proxies.ts
index 9aaaf84..e6841d7 100644
--- a/src/resources/proxies.ts
+++ b/src/resources/proxies.ts
@@ -88,7 +88,7 @@ export namespace ProxyCreateResponse {
*/
export interface DatacenterProxyConfig {
/**
- * ISO 3166 country code or EU for the proxy exit node.
+ * ISO 3166 country code.
*/
country: string;
}
@@ -98,7 +98,7 @@ export namespace ProxyCreateResponse {
*/
export interface IspProxyConfig {
/**
- * ISO 3166 country code or EU for the proxy exit node.
+ * ISO 3166 country code.
*/
country: string;
}
@@ -119,13 +119,12 @@ export namespace ProxyCreateResponse {
city?: string;
/**
- * ISO 3166 country code or EU for the proxy exit node. Required if `city` is
- * provided.
+ * ISO 3166 country code.
*/
country?: string;
/**
- * Operating system of the residential device.
+ * @deprecated Operating system of the residential device.
*/
os?: 'windows' | 'macos' | 'android';
@@ -219,8 +218,7 @@ export namespace ProxyCreateResponse {
city?: string;
/**
- * ISO 3166 country code or EU for the proxy exit node. Required if `city` is
- * provided.
+ * ISO 3166 country code
*/
country?: string;
@@ -310,7 +308,7 @@ export namespace ProxyRetrieveResponse {
*/
export interface DatacenterProxyConfig {
/**
- * ISO 3166 country code or EU for the proxy exit node.
+ * ISO 3166 country code.
*/
country: string;
}
@@ -320,7 +318,7 @@ export namespace ProxyRetrieveResponse {
*/
export interface IspProxyConfig {
/**
- * ISO 3166 country code or EU for the proxy exit node.
+ * ISO 3166 country code.
*/
country: string;
}
@@ -341,13 +339,12 @@ export namespace ProxyRetrieveResponse {
city?: string;
/**
- * ISO 3166 country code or EU for the proxy exit node. Required if `city` is
- * provided.
+ * ISO 3166 country code.
*/
country?: string;
/**
- * Operating system of the residential device.
+ * @deprecated Operating system of the residential device.
*/
os?: 'windows' | 'macos' | 'android';
@@ -441,8 +438,7 @@ export namespace ProxyRetrieveResponse {
city?: string;
/**
- * ISO 3166 country code or EU for the proxy exit node. Required if `city` is
- * provided.
+ * ISO 3166 country code
*/
country?: string;
@@ -535,7 +531,7 @@ export namespace ProxyListResponse {
*/
export interface DatacenterProxyConfig {
/**
- * ISO 3166 country code or EU for the proxy exit node.
+ * ISO 3166 country code.
*/
country: string;
}
@@ -545,7 +541,7 @@ export namespace ProxyListResponse {
*/
export interface IspProxyConfig {
/**
- * ISO 3166 country code or EU for the proxy exit node.
+ * ISO 3166 country code.
*/
country: string;
}
@@ -566,13 +562,12 @@ export namespace ProxyListResponse {
city?: string;
/**
- * ISO 3166 country code or EU for the proxy exit node. Required if `city` is
- * provided.
+ * ISO 3166 country code.
*/
country?: string;
/**
- * Operating system of the residential device.
+ * @deprecated Operating system of the residential device.
*/
os?: 'windows' | 'macos' | 'android';
@@ -666,8 +661,7 @@ export namespace ProxyListResponse {
city?: string;
/**
- * ISO 3166 country code or EU for the proxy exit node. Required if `city` is
- * provided.
+ * ISO 3166 country code
*/
country?: string;
@@ -743,7 +737,7 @@ export namespace ProxyCreateParams {
*/
export interface DatacenterProxyConfig {
/**
- * ISO 3166 country code or EU for the proxy exit node.
+ * ISO 3166 country code.
*/
country: string;
}
@@ -753,7 +747,7 @@ export namespace ProxyCreateParams {
*/
export interface IspProxyConfig {
/**
- * ISO 3166 country code or EU for the proxy exit node.
+ * ISO 3166 country code.
*/
country: string;
}
@@ -774,13 +768,12 @@ export namespace ProxyCreateParams {
city?: string;
/**
- * ISO 3166 country code or EU for the proxy exit node. Required if `city` is
- * provided.
+ * ISO 3166 country code.
*/
country?: string;
/**
- * Operating system of the residential device.
+ * @deprecated Operating system of the residential device.
*/
os?: 'windows' | 'macos' | 'android';
@@ -874,8 +867,7 @@ export namespace ProxyCreateParams {
city?: string;
/**
- * ISO 3166 country code or EU for the proxy exit node. Required if `city` is
- * provided.
+ * ISO 3166 country code
*/
country?: string;
diff --git a/src/version.ts b/src/version.ts
index e2b0672..85966e2 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.14.0'; // x-release-please-version
+export const VERSION = '0.14.1'; // x-release-please-version
diff --git a/tests/api-resources/browsers/browsers.test.ts b/tests/api-resources/browsers/browsers.test.ts
index 8d573b6..9c96f46 100644
--- a/tests/api-resources/browsers/browsers.test.ts
+++ b/tests/api-resources/browsers/browsers.test.ts
@@ -34,6 +34,7 @@ describe('resource browsers', () => {
proxy_id: 'proxy_id',
stealth: true,
timeout_seconds: 10,
+ viewport: { height: 800, width: 1280, refresh_rate: 60 },
},
{ path: '/_stainless_unknown_path' },
),
@@ -94,8 +95,8 @@ describe('resource browsers', () => {
});
// Prism tests are disabled
- test.skip('uploadExtensions: only required params', async () => {
- const responsePromise = client.browsers.uploadExtensions('id', {
+ test.skip('loadExtensions: only required params', async () => {
+ const responsePromise = client.browsers.loadExtensions('id', {
extensions: [{ name: 'name', zip_file: await toFile(Buffer.from('# my file contents'), 'README.md') }],
});
const rawResponse = await responsePromise.asResponse();
@@ -108,8 +109,8 @@ describe('resource browsers', () => {
});
// Prism tests are disabled
- test.skip('uploadExtensions: required and optional params', async () => {
- const response = await client.browsers.uploadExtensions('id', {
+ test.skip('loadExtensions: required and optional params', async () => {
+ const response = await client.browsers.loadExtensions('id', {
extensions: [{ name: 'name', zip_file: await toFile(Buffer.from('# my file contents'), 'README.md') }],
});
});