From b9911dd1c37610192c9ef70e1344f7b93a191f24 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 22:02:48 +0000 Subject: [PATCH 1/8] feat: expose smooth drag mouse movement via public API --- .stats.yml | 4 ++-- src/resources/browsers/computer.ts | 24 +++++++++++++++++++ tests/api-resources/browsers/computer.test.ts | 4 ++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index ae22a71..8140743 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 103 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-bda5e58fa0bbd08761f27a1e0edbc602c44141ac9483bf6c96d52b7f4d10d9a7.yml -openapi_spec_hash: 10833b36358e8cda023e5bb0abeab0ba +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-e6936890166ce5b11abaccd511a43a8807e2abf96c1f542d4f8d94655ef27d1f.yml +openapi_spec_hash: 0146ecaea96d8136ef4a35cd04aacf22 config_hash: cff4d43372b6fa66b64e2d4150f6aa76 diff --git a/src/resources/browsers/computer.ts b/src/resources/browsers/computer.ts index f5ed4d3..b40f55a 100644 --- a/src/resources/browsers/computer.ts +++ b/src/resources/browsers/computer.ts @@ -353,11 +353,23 @@ export namespace ComputerBatchParams { */ delay?: number; + /** + * Target total duration in milliseconds for the entire drag movement when + * smooth=true. Omit for automatic timing based on total path length. + */ + duration_ms?: number; + /** * Modifier keys to hold during the drag */ hold_keys?: Array; + /** + * Use human-like Bezier curves between path waypoints instead of linear + * interpolation. When true, steps_per_segment and step_delay_ms are ignored. + */ + smooth?: boolean; + /** * Delay in milliseconds between relative steps while dragging (not the initial * delay). @@ -554,11 +566,23 @@ export interface ComputerDragMouseParams { */ delay?: number; + /** + * Target total duration in milliseconds for the entire drag movement when + * smooth=true. Omit for automatic timing based on total path length. + */ + duration_ms?: number; + /** * Modifier keys to hold during the drag */ hold_keys?: Array; + /** + * Use human-like Bezier curves between path waypoints instead of linear + * interpolation. When true, steps_per_segment and step_delay_ms are ignored. + */ + smooth?: boolean; + /** * Delay in milliseconds between relative steps while dragging (not the initial * delay). diff --git a/tests/api-resources/browsers/computer.test.ts b/tests/api-resources/browsers/computer.test.ts index ffb2b7d..807834d 100644 --- a/tests/api-resources/browsers/computer.test.ts +++ b/tests/api-resources/browsers/computer.test.ts @@ -41,7 +41,9 @@ describe('resource computer', () => { ], button: 'left', delay: 0, + duration_ms: 50, hold_keys: ['string'], + smooth: true, step_delay_ms: 0, steps_per_segment: 1, }, @@ -141,7 +143,9 @@ describe('resource computer', () => { ], button: 'left', delay: 0, + duration_ms: 50, hold_keys: ['string'], + smooth: true, step_delay_ms: 0, steps_per_segment: 1, }); From 693e4f6cdd4d2db7524c2ff22ec99c2013cf6279 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 20:04:42 +0000 Subject: [PATCH 2/8] feat: Add GPU viewport presets and GPU encoder defaults --- .stats.yml | 4 +-- src/resources/browser-pools.ts | 40 +++++++++++++++++------- src/resources/browsers/browsers.ts | 50 +++++++++++++++++++++--------- src/resources/invocations.ts | 10 ++++-- src/resources/shared.ts | 10 ++++-- 5 files changed, 79 insertions(+), 35 deletions(-) diff --git a/.stats.yml b/.stats.yml index 8140743..904cb96 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 103 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-e6936890166ce5b11abaccd511a43a8807e2abf96c1f542d4f8d94655ef27d1f.yml -openapi_spec_hash: 0146ecaea96d8136ef4a35cd04aacf22 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-95bb1cbe27cbed0339067fa133590e675b99cda4a9c04fad802a5b14563eb572.yml +openapi_spec_hash: 3a24e61711eedb9ea7bb7589a7df956f config_hash: cff4d43372b6fa66b64e2d4150f6aa76 diff --git a/src/resources/browser-pools.ts b/src/resources/browser-pools.ts index 16a8c72..bee14be 100644 --- a/src/resources/browser-pools.ts +++ b/src/resources/browser-pools.ts @@ -243,9 +243,13 @@ export namespace BrowserPool { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep @@ -342,9 +346,13 @@ export interface BrowserPoolAcquireResponse { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep @@ -414,9 +422,13 @@ export interface BrowserPoolCreateParams { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep @@ -492,9 +504,13 @@ export interface BrowserPoolUpdateParams { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts index 756dbdd..14256b8 100644 --- a/src/resources/browsers/browsers.ts +++ b/src/resources/browsers/browsers.ts @@ -367,9 +367,13 @@ export interface BrowserCreateResponse { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep @@ -463,9 +467,13 @@ export interface BrowserRetrieveResponse { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep @@ -559,9 +567,13 @@ export interface BrowserUpdateResponse { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep @@ -655,9 +667,13 @@ export interface BrowserListResponse { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep @@ -731,9 +747,13 @@ export interface BrowserCreateParams { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep diff --git a/src/resources/invocations.ts b/src/resources/invocations.ts index 8699ffe..389f357 100644 --- a/src/resources/invocations.ts +++ b/src/resources/invocations.ts @@ -502,9 +502,13 @@ export namespace InvocationListBrowsersResponse { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep diff --git a/src/resources/shared.ts b/src/resources/shared.ts index 0c26a74..8666f8a 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -65,9 +65,13 @@ export interface BrowserProfile { /** * Initial browser window size in pixels with optional refresh rate. If omitted, - * image defaults apply (1920x1080@25). Arbitrary viewport dimensions are accepted, - * but the following configurations are known-good and fully tested: 2560x1440@10, - * 1920x1080@25, 1920x1200@25, 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. + * image defaults apply (1920x1080@25). For GPU images, the default is + * 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted. + * Known-good presets include: 2560x1440@10, 1920x1080@25, 1920x1200@25, + * 1440x900@25, 1280x800@60, 1024x768@60, 1200x800@60. For GPU images, recommended + * presets use one of these resolutions with refresh rates 60, 30, 25, or 10: + * 800x600, 960x720, 1024x576, 1024x768, 1152x648, 1200x800, 1280x720, 1368x768, + * 1440x900, 1600x900, 1920x1080, 1920x1200, 390x844, 360x250, 768x1024, 800x1600. * Viewports outside this list may exhibit unstable live view or recording * behavior. If refresh_rate is not provided, it will be automatically determined * based on the resolution (higher resolutions use lower refresh rates to keep From 7aa9d1eed6890de62f92edac3bbccff8565b1d57 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 13:26:11 +0000 Subject: [PATCH 3/8] feat: Adds description to OAS spec for docs about delta_x, delta_y --- .stats.yml | 4 ++-- src/resources/browsers/computer.ts | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.stats.yml b/.stats.yml index 904cb96..c129c7d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 103 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-95bb1cbe27cbed0339067fa133590e675b99cda4a9c04fad802a5b14563eb572.yml -openapi_spec_hash: 3a24e61711eedb9ea7bb7589a7df956f +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-aa981bcc44bf8382844c53b705f75eeac53fdc7cd828a9260755c5b4537ed966.yml +openapi_spec_hash: e78521a8956dc87b25c076e30600a95e config_hash: cff4d43372b6fa66b64e2d4150f6aa76 diff --git a/src/resources/browsers/computer.ts b/src/resources/browsers/computer.ts index b40f55a..d67dac6 100644 --- a/src/resources/browsers/computer.ts +++ b/src/resources/browsers/computer.ts @@ -443,12 +443,14 @@ export namespace ComputerBatchParams { y: number; /** - * Horizontal scroll amount. Positive scrolls right, negative scrolls left. + * Horizontal scroll amount in xdotool "wheel units." Positive scrolls right, + * negative scrolls left. */ delta_x?: number; /** - * Vertical scroll amount. Positive scrolls down, negative scrolls up. + * Vertical scroll amount in xdotool "wheel units." Positive scrolls down, negative + * scrolls up. */ delta_y?: number; @@ -656,12 +658,14 @@ export interface ComputerScrollParams { y: number; /** - * Horizontal scroll amount. Positive scrolls right, negative scrolls left. + * Horizontal scroll amount in xdotool "wheel units." Positive scrolls right, + * negative scrolls left. */ delta_x?: number; /** - * Vertical scroll amount. Positive scrolls down, negative scrolls up. + * Vertical scroll amount in xdotool "wheel units." Positive scrolls down, negative + * scrolls up. */ delta_y?: number; From 1d22910d61a9baec560384fd0485fc0bb9216371 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:33:46 +0000 Subject: [PATCH 4/8] feat: Rename hardware acceleration UI/docs wording to GPU acceleration --- .stats.yml | 4 ++-- src/resources/browser-pools.ts | 2 +- src/resources/browsers/browsers.ts | 12 ++++++------ src/resources/invocations.ts | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.stats.yml b/.stats.yml index c129c7d..663d1ab 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 103 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-aa981bcc44bf8382844c53b705f75eeac53fdc7cd828a9260755c5b4537ed966.yml -openapi_spec_hash: e78521a8956dc87b25c076e30600a95e +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-f57c1468805aef5055a41e942a1ec374df98d58f1071b07c31e6496045e0d902.yml +openapi_spec_hash: a4848d54211d6c6330b5ddd08992035a config_hash: cff4d43372b6fa66b64e2d4150f6aa76 diff --git a/src/resources/browser-pools.ts b/src/resources/browser-pools.ts index bee14be..17d36d3 100644 --- a/src/resources/browser-pools.ts +++ b/src/resources/browser-pools.ts @@ -309,7 +309,7 @@ export interface BrowserPoolAcquireResponse { deleted_at?: string; /** - * Whether the browser session has hardware-accelerated GPU rendering. + * Whether GPU acceleration is enabled for the browser session. */ gpu?: boolean; diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts index 14256b8..0fa1308 100644 --- a/src/resources/browsers/browsers.ts +++ b/src/resources/browsers/browsers.ts @@ -330,7 +330,7 @@ export interface BrowserCreateResponse { deleted_at?: string; /** - * Whether the browser session has hardware-accelerated GPU rendering. + * Whether GPU acceleration is enabled for the browser session. */ gpu?: boolean; @@ -430,7 +430,7 @@ export interface BrowserRetrieveResponse { deleted_at?: string; /** - * Whether the browser session has hardware-accelerated GPU rendering. + * Whether GPU acceleration is enabled for the browser session. */ gpu?: boolean; @@ -530,7 +530,7 @@ export interface BrowserUpdateResponse { deleted_at?: string; /** - * Whether the browser session has hardware-accelerated GPU rendering. + * Whether GPU acceleration is enabled for the browser session. */ gpu?: boolean; @@ -630,7 +630,7 @@ export interface BrowserListResponse { deleted_at?: string; /** - * Whether the browser session has hardware-accelerated GPU rendering. + * Whether GPU acceleration is enabled for the browser session. */ gpu?: boolean; @@ -689,8 +689,8 @@ export interface BrowserCreateParams { extensions?: Array; /** - * If true, launches a hardware-accelerated browser with GPU rendering. Requires - * Start-Up or Enterprise plan. + * If true, enables GPU acceleration for the browser session. Requires Start-Up or + * Enterprise plan. */ gpu?: boolean; diff --git a/src/resources/invocations.ts b/src/resources/invocations.ts index 389f357..ab5f543 100644 --- a/src/resources/invocations.ts +++ b/src/resources/invocations.ts @@ -465,7 +465,7 @@ export namespace InvocationListBrowsersResponse { deleted_at?: string; /** - * Whether the browser session has hardware-accelerated GPU rendering. + * Whether GPU acceleration is enabled for the browser session. */ gpu?: boolean; From 256d3ff87c9744a8017a4fa93e21ec05118dbfca Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 17 Mar 2026 05:06:36 +0000 Subject: [PATCH 5/8] chore(internal): tweak CI branches --- .github/workflows/ci.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 95e91fd..129e87b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,12 +1,14 @@ name: CI on: push: - branches-ignore: - - 'generated' - - 'codegen/**' - - 'integrated/**' - - 'stl-preview-head/**' - - 'stl-preview-base/**' + branches: + - '**' + - '!integrated/**' + - '!stl-preview-head/**' + - '!stl-preview-base/**' + - '!generated' + - '!codegen/**' + - 'codegen/stl/**' pull_request: branches-ignore: - 'stl-preview-head/**' From 762670ef4e3c6126a4c541eb67f49b2565504e40 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 17 Mar 2026 17:15:00 +0000 Subject: [PATCH 6/8] feat: Drop headless GPU support and disable pooling --- .stats.yml | 4 ++-- src/resources/browser-pools.ts | 3 ++- src/resources/browsers/browsers.ts | 14 +++++++++----- src/resources/invocations.ts | 3 ++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.stats.yml b/.stats.yml index 663d1ab..ad84265 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 103 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-f57c1468805aef5055a41e942a1ec374df98d58f1071b07c31e6496045e0d902.yml -openapi_spec_hash: a4848d54211d6c6330b5ddd08992035a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-17e50cf93d8052ff655c160fc0f156621d9029b041526d4e2e3317b13f80822f.yml +openapi_spec_hash: f7dadc8d93e77983936eb18a8080ce15 config_hash: cff4d43372b6fa66b64e2d4150f6aa76 diff --git a/src/resources/browser-pools.ts b/src/resources/browser-pools.ts index 17d36d3..adae577 100644 --- a/src/resources/browser-pools.ts +++ b/src/resources/browser-pools.ts @@ -309,7 +309,8 @@ export interface BrowserPoolAcquireResponse { deleted_at?: string; /** - * Whether GPU acceleration is enabled for the browser session. + * Whether GPU acceleration is enabled for the browser session (only supported for + * headful sessions). */ gpu?: boolean; diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts index 0fa1308..99b9d28 100644 --- a/src/resources/browsers/browsers.ts +++ b/src/resources/browsers/browsers.ts @@ -330,7 +330,8 @@ export interface BrowserCreateResponse { deleted_at?: string; /** - * Whether GPU acceleration is enabled for the browser session. + * Whether GPU acceleration is enabled for the browser session (only supported for + * headful sessions). */ gpu?: boolean; @@ -430,7 +431,8 @@ export interface BrowserRetrieveResponse { deleted_at?: string; /** - * Whether GPU acceleration is enabled for the browser session. + * Whether GPU acceleration is enabled for the browser session (only supported for + * headful sessions). */ gpu?: boolean; @@ -530,7 +532,8 @@ export interface BrowserUpdateResponse { deleted_at?: string; /** - * Whether GPU acceleration is enabled for the browser session. + * Whether GPU acceleration is enabled for the browser session (only supported for + * headful sessions). */ gpu?: boolean; @@ -630,7 +633,8 @@ export interface BrowserListResponse { deleted_at?: string; /** - * Whether GPU acceleration is enabled for the browser session. + * Whether GPU acceleration is enabled for the browser session (only supported for + * headful sessions). */ gpu?: boolean; @@ -690,7 +694,7 @@ export interface BrowserCreateParams { /** * If true, enables GPU acceleration for the browser session. Requires Start-Up or - * Enterprise plan. + * Enterprise plan and headless=false. */ gpu?: boolean; diff --git a/src/resources/invocations.ts b/src/resources/invocations.ts index ab5f543..e567574 100644 --- a/src/resources/invocations.ts +++ b/src/resources/invocations.ts @@ -465,7 +465,8 @@ export namespace InvocationListBrowsersResponse { deleted_at?: string; /** - * Whether GPU acceleration is enabled for the browser session. + * Whether GPU acceleration is enabled for the browser session (only supported for + * headful sessions). */ gpu?: boolean; From 2d89c683d2cb4249dfea19407bc5064dd8bb9131 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 20 Mar 2026 19:33:16 +0000 Subject: [PATCH 7/8] feat: Enhance managed authentication with CUA support and new features --- .stats.yml | 8 +- api.md | 2 + src/resources/auth/auth.ts | 4 + src/resources/auth/connections.ts | 279 ++++++++++++++++++- src/resources/auth/index.ts | 2 + tests/api-resources/auth/connections.test.ts | 12 + 6 files changed, 297 insertions(+), 10 deletions(-) diff --git a/.stats.yml b/.stats.yml index ad84265..be60802 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 103 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-17e50cf93d8052ff655c160fc0f156621d9029b041526d4e2e3317b13f80822f.yml -openapi_spec_hash: f7dadc8d93e77983936eb18a8080ce15 -config_hash: cff4d43372b6fa66b64e2d4150f6aa76 +configured_endpoints: 104 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-bb2ac8e0d3a1c08e8afcbcbad7cb733d0f84bd22a8d233c1ec3100a01ee078ae.yml +openapi_spec_hash: a83f7d1c422c85d6dc6158af7afe1d09 +config_hash: 16e4457a0bb26e98a335a1c2a572290a diff --git a/api.md b/api.md index efe009c..383b68b 100644 --- a/api.md +++ b/api.md @@ -214,6 +214,7 @@ Types: - LoginResponse - ManagedAuth - ManagedAuthCreateRequest +- ManagedAuthUpdateRequest - SubmitFieldsRequest - SubmitFieldsResponse - ConnectionFollowResponse @@ -222,6 +223,7 @@ Methods: - client.auth.connections.create({ ...params }) -> ManagedAuth - client.auth.connections.retrieve(id) -> ManagedAuth +- client.auth.connections.update(id, { ...params }) -> ManagedAuth - client.auth.connections.list({ ...params }) -> ManagedAuthsOffsetPagination - client.auth.connections.delete(id) -> void - client.auth.connections.follow(id) -> ConnectionFollowResponse diff --git a/src/resources/auth/auth.ts b/src/resources/auth/auth.ts index ee5d2fa..ad3d8de 100644 --- a/src/resources/auth/auth.ts +++ b/src/resources/auth/auth.ts @@ -8,10 +8,12 @@ import { ConnectionListParams, ConnectionLoginParams, ConnectionSubmitParams, + ConnectionUpdateParams, Connections, LoginResponse, ManagedAuth, ManagedAuthCreateRequest, + ManagedAuthUpdateRequest, ManagedAuthsOffsetPagination, SubmitFieldsRequest, SubmitFieldsResponse, @@ -29,11 +31,13 @@ export declare namespace Auth { type LoginResponse as LoginResponse, type ManagedAuth as ManagedAuth, type ManagedAuthCreateRequest as ManagedAuthCreateRequest, + type ManagedAuthUpdateRequest as ManagedAuthUpdateRequest, type SubmitFieldsRequest as SubmitFieldsRequest, type SubmitFieldsResponse as SubmitFieldsResponse, type ConnectionFollowResponse as ConnectionFollowResponse, type ManagedAuthsOffsetPagination as ManagedAuthsOffsetPagination, type ConnectionCreateParams as ConnectionCreateParams, + type ConnectionUpdateParams as ConnectionUpdateParams, type ConnectionListParams as ConnectionListParams, type ConnectionLoginParams as ConnectionLoginParams, type ConnectionSubmitParams as ConnectionSubmitParams, diff --git a/src/resources/auth/connections.ts b/src/resources/auth/connections.ts index 6f4dc1b..55f35bf 100644 --- a/src/resources/auth/connections.ts +++ b/src/resources/auth/connections.ts @@ -44,6 +44,21 @@ export class Connections extends APIResource { return this._client.get(path`/auth/connections/${id}`, options); } + /** + * Update an auth connection's configuration. Only the fields provided will be + * updated. + * + * @example + * ```ts + * const managedAuth = await client.auth.connections.update( + * 'id', + * ); + * ``` + */ + update(id: string, body: ConnectionUpdateParams, options?: RequestOptions): APIPromise { + return this._client.patch(path`/auth/connections/${id}`, { body, ...options }); + } + /** * List auth connections with optional filters for profile_name and domain. * @@ -340,6 +355,12 @@ export interface ManagedAuth { */ proxy_id?: string; + /** + * Non-MFA choices presented during the auth flow, such as account selection or org + * pickers (present when flow_step=awaiting_input). + */ + sign_in_options?: Array | null; + /** * SSO provider being used (e.g., google, github, microsoft) */ @@ -467,6 +488,27 @@ export namespace ManagedAuth { */ selector: string; } + + /** + * A non-MFA choice presented during the auth flow (e.g. account selection, org + * picker) + */ + export interface SignInOption { + /** + * Unique identifier for this option (used to submit selection back) + */ + id: string; + + /** + * Display text for the option + */ + label: string; + + /** + * Additional context such as email address or org name + */ + description?: string | null; + } } /** @@ -588,8 +630,96 @@ export namespace ManagedAuthCreateRequest { } /** - * Request to submit field values, click an SSO button, or select an MFA method. - * Provide exactly one of fields, sso_button_selector, or mfa_option_id. + * Request to update an auth connection's configuration + */ +export interface ManagedAuthUpdateRequest { + /** + * Additional domains valid for this auth flow (replaces existing list) + */ + allowed_domains?: Array; + + /** + * Reference to credentials for the auth connection. Use one of: + * + * - { name } for Kernel credentials + * - { provider, path } for external provider item + * - { provider, auto: true } for external provider domain lookup + */ + credential?: ManagedAuthUpdateRequest.Credential; + + /** + * Interval in seconds between automatic health checks + */ + health_check_interval?: number; + + /** + * Login page URL. Set to empty string to clear. + */ + login_url?: string; + + /** + * Proxy selection. Provide either id or name. The proxy must belong to the + * caller's org. + */ + proxy?: ManagedAuthUpdateRequest.Proxy; + + /** + * Whether to save credentials after every successful login + */ + save_credentials?: boolean; +} + +export namespace ManagedAuthUpdateRequest { + /** + * Reference to credentials for the auth connection. Use one of: + * + * - { name } for Kernel credentials + * - { provider, path } for external provider item + * - { provider, auto: true } for external provider domain lookup + */ + export interface Credential { + /** + * If true, lookup by domain from the specified provider + */ + auto?: boolean; + + /** + * Kernel credential name + */ + name?: string; + + /** + * Provider-specific path (e.g., "VaultName/ItemName" for 1Password) + */ + path?: string; + + /** + * External provider name (e.g., "my-1p") + */ + provider?: string; + } + + /** + * Proxy selection. Provide either id or name. The proxy must belong to the + * caller's org. + */ + export interface Proxy { + /** + * Proxy ID + */ + id?: string; + + /** + * Proxy name + */ + name?: string; + } +} + +/** + * Request to submit field values, click an SSO button, select an MFA method, or + * select a sign-in option. Provide exactly one of fields, sso_button_selector, + * sso_provider, mfa_option_id, or sign_in_option_id. */ export interface SubmitFieldsRequest { /** @@ -598,14 +728,26 @@ export interface SubmitFieldsRequest { fields?: { [key: string]: string }; /** - * Optional MFA option ID if user selected an MFA method + * The MFA method type to select (when mfa_options were returned) */ mfa_option_id?: string; /** - * Optional XPath selector if user chose to click an SSO button instead + * The sign-in option ID to select (when sign_in_options were returned) + */ + sign_in_option_id?: string; + + /** + * XPath selector for the SSO button to click (ODA). Use sso_provider instead for + * CUA. */ sso_button_selector?: string; + + /** + * SSO provider to click, matching the provider field from pending_sso_buttons + * (e.g., "google", "github"). Cannot be used with sso_button_selector. + */ + sso_provider?: string; } /** @@ -703,6 +845,12 @@ export namespace ConnectionFollowResponse { */ post_login_url?: string; + /** + * Non-MFA choices presented during the auth flow, such as account selection or org + * pickers (present when flow_step=AWAITING_INPUT). + */ + sign_in_options?: Array; + /** * Visible error message from the website (e.g., 'Incorrect password'). Present * when the website displays an error during login. @@ -796,6 +944,27 @@ export namespace ConnectionFollowResponse { */ selector: string; } + + /** + * A non-MFA choice presented during the auth flow (e.g. account selection, org + * picker) + */ + export interface SignInOption { + /** + * Unique identifier for this option (used to submit selection back) + */ + id: string; + + /** + * Display text for the option + */ + label: string; + + /** + * Additional context such as email address or org name + */ + description?: string | null; + } } } @@ -914,6 +1083,90 @@ export namespace ConnectionCreateParams { } } +export interface ConnectionUpdateParams { + /** + * Additional domains valid for this auth flow (replaces existing list) + */ + allowed_domains?: Array; + + /** + * Reference to credentials for the auth connection. Use one of: + * + * - { name } for Kernel credentials + * - { provider, path } for external provider item + * - { provider, auto: true } for external provider domain lookup + */ + credential?: ConnectionUpdateParams.Credential; + + /** + * Interval in seconds between automatic health checks + */ + health_check_interval?: number; + + /** + * Login page URL. Set to empty string to clear. + */ + login_url?: string; + + /** + * Proxy selection. Provide either id or name. The proxy must belong to the + * caller's org. + */ + proxy?: ConnectionUpdateParams.Proxy; + + /** + * Whether to save credentials after every successful login + */ + save_credentials?: boolean; +} + +export namespace ConnectionUpdateParams { + /** + * Reference to credentials for the auth connection. Use one of: + * + * - { name } for Kernel credentials + * - { provider, path } for external provider item + * - { provider, auto: true } for external provider domain lookup + */ + export interface Credential { + /** + * If true, lookup by domain from the specified provider + */ + auto?: boolean; + + /** + * Kernel credential name + */ + name?: string; + + /** + * Provider-specific path (e.g., "VaultName/ItemName" for 1Password) + */ + path?: string; + + /** + * External provider name (e.g., "my-1p") + */ + provider?: string; + } + + /** + * Proxy selection. Provide either id or name. The proxy must belong to the + * caller's org. + */ + export interface Proxy { + /** + * Proxy ID + */ + id?: string; + + /** + * Proxy name + */ + name?: string; + } +} + export interface ConnectionListParams extends OffsetPaginationParams { /** * Filter by domain @@ -959,14 +1212,26 @@ export interface ConnectionSubmitParams { fields?: { [key: string]: string }; /** - * Optional MFA option ID if user selected an MFA method + * The MFA method type to select (when mfa_options were returned) */ mfa_option_id?: string; /** - * Optional XPath selector if user chose to click an SSO button instead + * The sign-in option ID to select (when sign_in_options were returned) + */ + sign_in_option_id?: string; + + /** + * XPath selector for the SSO button to click (ODA). Use sso_provider instead for + * CUA. */ sso_button_selector?: string; + + /** + * SSO provider to click, matching the provider field from pending_sso_buttons + * (e.g., "google", "github"). Cannot be used with sso_button_selector. + */ + sso_provider?: string; } export declare namespace Connections { @@ -974,11 +1239,13 @@ export declare namespace Connections { type LoginResponse as LoginResponse, type ManagedAuth as ManagedAuth, type ManagedAuthCreateRequest as ManagedAuthCreateRequest, + type ManagedAuthUpdateRequest as ManagedAuthUpdateRequest, type SubmitFieldsRequest as SubmitFieldsRequest, type SubmitFieldsResponse as SubmitFieldsResponse, type ConnectionFollowResponse as ConnectionFollowResponse, type ManagedAuthsOffsetPagination as ManagedAuthsOffsetPagination, type ConnectionCreateParams as ConnectionCreateParams, + type ConnectionUpdateParams as ConnectionUpdateParams, type ConnectionListParams as ConnectionListParams, type ConnectionLoginParams as ConnectionLoginParams, type ConnectionSubmitParams as ConnectionSubmitParams, diff --git a/src/resources/auth/index.ts b/src/resources/auth/index.ts index d71236b..a8a6bfe 100644 --- a/src/resources/auth/index.ts +++ b/src/resources/auth/index.ts @@ -6,10 +6,12 @@ export { type LoginResponse, type ManagedAuth, type ManagedAuthCreateRequest, + type ManagedAuthUpdateRequest, type SubmitFieldsRequest, type SubmitFieldsResponse, type ConnectionFollowResponse, type ConnectionCreateParams, + type ConnectionUpdateParams, type ConnectionListParams, type ConnectionLoginParams, type ConnectionSubmitParams, diff --git a/tests/api-resources/auth/connections.test.ts b/tests/api-resources/auth/connections.test.ts index 1c60d63..1d08c5c 100644 --- a/tests/api-resources/auth/connections.test.ts +++ b/tests/api-resources/auth/connections.test.ts @@ -54,6 +54,18 @@ describe('resource connections', () => { expect(dataAndResponse.response).toBe(rawResponse); }); + // Mock server tests are disabled + test.skip('update', async () => { + const responsePromise = client.auth.connections.update('id', {}); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + // Mock server tests are disabled test.skip('list', async () => { const responsePromise = client.auth.connections.list(); From 849fb872d0283785d2821efa9fe493c067df4ba0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 20 Mar 2026 19:34:00 +0000 Subject: [PATCH 8/8] release: 0.44.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 18 ++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- src/version.ts | 2 +- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2ff8218..b470c2a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.43.0" + ".": "0.44.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ae0911..079c2d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## 0.44.0 (2026-03-20) + +Full Changelog: [v0.43.0...v0.44.0](https://github.com/kernel/kernel-node-sdk/compare/v0.43.0...v0.44.0) + +### Features + +* Add GPU viewport presets and GPU encoder defaults ([693e4f6](https://github.com/kernel/kernel-node-sdk/commit/693e4f6cdd4d2db7524c2ff22ec99c2013cf6279)) +* Adds description to OAS spec for docs about delta_x, delta_y ([7aa9d1e](https://github.com/kernel/kernel-node-sdk/commit/7aa9d1eed6890de62f92edac3bbccff8565b1d57)) +* Drop headless GPU support and disable pooling ([762670e](https://github.com/kernel/kernel-node-sdk/commit/762670ef4e3c6126a4c541eb67f49b2565504e40)) +* Enhance managed authentication with CUA support and new features ([2d89c68](https://github.com/kernel/kernel-node-sdk/commit/2d89c683d2cb4249dfea19407bc5064dd8bb9131)) +* expose smooth drag mouse movement via public API ([b9911dd](https://github.com/kernel/kernel-node-sdk/commit/b9911dd1c37610192c9ef70e1344f7b93a191f24)) +* Rename hardware acceleration UI/docs wording to GPU acceleration ([1d22910](https://github.com/kernel/kernel-node-sdk/commit/1d22910d61a9baec560384fd0485fc0bb9216371)) + + +### Chores + +* **internal:** tweak CI branches ([256d3ff](https://github.com/kernel/kernel-node-sdk/commit/256d3ff87c9744a8017a4fa93e21ec05118dbfca)) + ## 0.43.0 (2026-03-10) Full Changelog: [v0.42.1...v0.43.0](https://github.com/kernel/kernel-node-sdk/compare/v0.42.1...v0.43.0) diff --git a/package-lock.json b/package-lock.json index 6efba2a..dd614ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@onkernel/sdk", - "version": "0.43.0", + "version": "0.44.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@onkernel/sdk", - "version": "0.43.0", + "version": "0.44.0", "license": "Apache-2.0", "devDependencies": { "@arethetypeswrong/cli": "^0.17.0", diff --git a/package.json b/package.json index af7875f..de4caad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@onkernel/sdk", - "version": "0.43.0", + "version": "0.44.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 771efed..6a69b90 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.43.0'; // x-release-please-version +export const VERSION = '0.44.0'; // x-release-please-version