From a5d4e3ef1de188ba337d5256b58294d22bc2b464 Mon Sep 17 00:00:00 2001 From: "kernel-internal[bot]" <260533166+kernel-internal[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 15:13:55 +0000 Subject: [PATCH 1/2] feat: Mirror the control/platform telemetry split into the public API Stainless-Generated-From: c17d27f28be9726725d27bdae8d21b267c649f2c --- api.md | 6 + src/resources/auth/connections.ts | 84 +- src/resources/browser-pools.ts | 36 +- src/resources/browsers/browsers.ts | 38 +- src/resources/browsers/index.ts | 6 + src/resources/browsers/telemetry.ts | 2577 ++++++++++++++++- src/resources/proxies.ts | 5 +- tests/api-resources/auth/connections.test.ts | 24 +- tests/api-resources/browser-pools.test.ts | 6 +- tests/api-resources/browsers/browsers.test.ts | 6 +- 10 files changed, 2634 insertions(+), 154 deletions(-) diff --git a/api.md b/api.md index fcf19cc0..cbad6cae 100644 --- a/api.md +++ b/api.md @@ -99,6 +99,8 @@ Types: - BrowserAPICallEvent - BrowserCallStack - BrowserCaptchaSolveResultEvent +- BrowserCdpCommandEvent +- BrowserCdpCommandMethod - BrowserCdpConnectEvent - BrowserCdpDisconnectEvent - BrowserConsoleErrorEvent @@ -120,6 +122,7 @@ Types: - BrowserNetworkLoadingFailedEvent - BrowserNetworkRequestEvent - BrowserNetworkResponseEvent +- BrowserPageCrashedEvent - BrowserPageDomContentLoadedEvent - BrowserPageLayoutSettledEvent - BrowserPageLayoutShiftEvent @@ -128,12 +131,15 @@ Types: - BrowserPageNavigationEvent - BrowserPageNavigationSettledEvent - BrowserPageTabOpenedEvent +- BrowserPlatformAPICallEvent - BrowserProxyErrorEvent - BrowserServiceCrashedEvent - BrowserSystemOomKillEvent - BrowserTelemetryCategoriesConfig - BrowserTelemetryCategoryConfig +- BrowserTelemetryCdpControlConfig - BrowserTelemetryConfig +- BrowserTelemetryControlConfig - BrowserTelemetryEvent - BrowserTelemetryExportConfig - BrowserTelemetryOtlpExportConfig diff --git a/src/resources/auth/connections.ts b/src/resources/auth/connections.ts index 04111399..c82652b6 100644 --- a/src/resources/auth/connections.ts +++ b/src/resources/auth/connections.ts @@ -549,12 +549,12 @@ export namespace ManagedAuth { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -920,12 +920,12 @@ export namespace ManagedAuthBrowserConfig { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -1121,12 +1121,12 @@ export namespace ManagedAuthCreateRequest { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -1417,12 +1417,12 @@ export namespace ManagedAuthUpdateRequest { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -2072,12 +2072,12 @@ export namespace ConnectionCreateParams { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -2280,12 +2280,12 @@ export namespace ConnectionUpdateParams { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -2458,12 +2458,12 @@ export namespace ConnectionLoginParams { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; diff --git a/src/resources/browser-pools.ts b/src/resources/browser-pools.ts index 6726c7a9..b789b8dd 100644 --- a/src/resources/browser-pools.ts +++ b/src/resources/browser-pools.ts @@ -679,12 +679,12 @@ export namespace BrowserPoolCreateParams { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -930,12 +930,12 @@ export namespace BrowserPoolUpdateParams { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -1098,12 +1098,12 @@ export namespace BrowserPoolAcquireParams { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts index fece76f4..70c7aecf 100644 --- a/src/resources/browsers/browsers.ts +++ b/src/resources/browsers/browsers.ts @@ -56,6 +56,8 @@ import { BrowserAPICallEvent, BrowserCallStack, BrowserCaptchaSolveResultEvent, + BrowserCdpCommandEvent, + BrowserCdpCommandMethod, BrowserCdpConnectEvent, BrowserCdpDisconnectEvent, BrowserConsoleErrorEvent, @@ -77,6 +79,7 @@ import { BrowserNetworkLoadingFailedEvent, BrowserNetworkRequestEvent, BrowserNetworkResponseEvent, + BrowserPageCrashedEvent, BrowserPageDomContentLoadedEvent, BrowserPageLayoutSettledEvent, BrowserPageLayoutShiftEvent, @@ -85,12 +88,15 @@ import { BrowserPageNavigationEvent, BrowserPageNavigationSettledEvent, BrowserPageTabOpenedEvent, + BrowserPlatformAPICallEvent, BrowserProxyErrorEvent, BrowserServiceCrashedEvent, BrowserSystemOomKillEvent, BrowserTelemetryCategoriesConfig, BrowserTelemetryCategoryConfig, + BrowserTelemetryCdpControlConfig, BrowserTelemetryConfig, + BrowserTelemetryControlConfig, BrowserTelemetryEvent, BrowserTelemetryExportConfig, BrowserTelemetryOtlpExportConfig, @@ -1130,7 +1136,7 @@ export interface BrowserCreateParams { /** * If true, enables GPU acceleration for the browser session. Requires Start-Up or - * Enterprise plan and headless=false. + * Enterprise plan, headless=false, and region=us-east. */ gpu?: boolean; @@ -1270,12 +1276,12 @@ export namespace BrowserCreateParams { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -1428,12 +1434,12 @@ export namespace BrowserUpdateParams { * Per-category capture flags. The operational categories (control, connection, * system, captcha) are captured whenever telemetry is enabled; set one to * enabled=false to opt out. The CDP categories (console, network, page, - * interaction) and screenshot are off by default; set enabled=true to opt in. On - * create, provided categories layer onto the default set. On update, provided - * categories merge onto the session's current config; when no telemetry is active - * this falls back to the default set (matching create). If browser is omitted or - * empty, the default set is used. A browser config that disables every category - * stops capture on update and starts no capture on create. + * interaction), screenshot and platform are off by default; set enabled=true to + * opt in. On create, provided categories layer onto the default set. On update, + * provided categories merge onto the session's current config; when no telemetry + * is active this falls back to the default set (matching create). If browser is + * omitted or empty, the default set is used. A browser config that disables every + * category stops capture on update and starts no capture on create. */ browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig; @@ -1645,6 +1651,8 @@ export declare namespace Browsers { type BrowserAPICallEvent as BrowserAPICallEvent, type BrowserCallStack as BrowserCallStack, type BrowserCaptchaSolveResultEvent as BrowserCaptchaSolveResultEvent, + type BrowserCdpCommandEvent as BrowserCdpCommandEvent, + type BrowserCdpCommandMethod as BrowserCdpCommandMethod, type BrowserCdpConnectEvent as BrowserCdpConnectEvent, type BrowserCdpDisconnectEvent as BrowserCdpDisconnectEvent, type BrowserConsoleErrorEvent as BrowserConsoleErrorEvent, @@ -1666,6 +1674,7 @@ export declare namespace Browsers { type BrowserNetworkLoadingFailedEvent as BrowserNetworkLoadingFailedEvent, type BrowserNetworkRequestEvent as BrowserNetworkRequestEvent, type BrowserNetworkResponseEvent as BrowserNetworkResponseEvent, + type BrowserPageCrashedEvent as BrowserPageCrashedEvent, type BrowserPageDomContentLoadedEvent as BrowserPageDomContentLoadedEvent, type BrowserPageLayoutSettledEvent as BrowserPageLayoutSettledEvent, type BrowserPageLayoutShiftEvent as BrowserPageLayoutShiftEvent, @@ -1674,12 +1683,15 @@ export declare namespace Browsers { type BrowserPageNavigationEvent as BrowserPageNavigationEvent, type BrowserPageNavigationSettledEvent as BrowserPageNavigationSettledEvent, type BrowserPageTabOpenedEvent as BrowserPageTabOpenedEvent, + type BrowserPlatformAPICallEvent as BrowserPlatformAPICallEvent, type BrowserProxyErrorEvent as BrowserProxyErrorEvent, type BrowserServiceCrashedEvent as BrowserServiceCrashedEvent, type BrowserSystemOomKillEvent as BrowserSystemOomKillEvent, type BrowserTelemetryCategoriesConfig as BrowserTelemetryCategoriesConfig, type BrowserTelemetryCategoryConfig as BrowserTelemetryCategoryConfig, + type BrowserTelemetryCdpControlConfig as BrowserTelemetryCdpControlConfig, type BrowserTelemetryConfig as BrowserTelemetryConfig, + type BrowserTelemetryControlConfig as BrowserTelemetryControlConfig, type BrowserTelemetryEvent as BrowserTelemetryEvent, type BrowserTelemetryExportConfig as BrowserTelemetryExportConfig, type BrowserTelemetryOtlpExportConfig as BrowserTelemetryOtlpExportConfig, diff --git a/src/resources/browsers/index.ts b/src/resources/browsers/index.ts index 70e772f4..7bd92100 100644 --- a/src/resources/browsers/index.ts +++ b/src/resources/browsers/index.ts @@ -91,6 +91,8 @@ export { type BrowserAPICallEvent, type BrowserCallStack, type BrowserCaptchaSolveResultEvent, + type BrowserCdpCommandEvent, + type BrowserCdpCommandMethod, type BrowserCdpConnectEvent, type BrowserCdpDisconnectEvent, type BrowserConsoleErrorEvent, @@ -112,6 +114,7 @@ export { type BrowserNetworkLoadingFailedEvent, type BrowserNetworkRequestEvent, type BrowserNetworkResponseEvent, + type BrowserPageCrashedEvent, type BrowserPageDomContentLoadedEvent, type BrowserPageLayoutSettledEvent, type BrowserPageLayoutShiftEvent, @@ -120,12 +123,15 @@ export { type BrowserPageNavigationEvent, type BrowserPageNavigationSettledEvent, type BrowserPageTabOpenedEvent, + type BrowserPlatformAPICallEvent, type BrowserProxyErrorEvent, type BrowserServiceCrashedEvent, type BrowserSystemOomKillEvent, type BrowserTelemetryCategoriesConfig, type BrowserTelemetryCategoryConfig, + type BrowserTelemetryCdpControlConfig, type BrowserTelemetryConfig, + type BrowserTelemetryControlConfig, type BrowserTelemetryEvent, type BrowserTelemetryExportConfig, type BrowserTelemetryOtlpExportConfig, diff --git a/src/resources/browsers/telemetry.ts b/src/resources/browsers/telemetry.ts index 42517e42..609a11dd 100644 --- a/src/resources/browsers/telemetry.ts +++ b/src/resources/browsers/telemetry.ts @@ -83,7 +83,8 @@ export class Telemetry extends APIResource { export type TelemetryEventsResponsesOffsetPagination = OffsetPagination; /** - * An agent-driven HTTP call handled by the in-VM API server. + * An agent-driven HTTP call that drives the browser, handled by the in-VM API + * server. Calls that manage the VM instead emit platform_api_call. */ export interface BrowserAPICallEvent { category: 'control'; @@ -116,7 +117,8 @@ export namespace BrowserAPICallEvent { duration_ms: number; /** - * OpenAPI operationId of the matched route (e.g. processExec, takeScreenshot). + * Matched route's operation, named as the in-VM API names its handler (e.g. + * ProcessExec, TakeScreenshot). */ operation_id: string; @@ -129,130 +131,2363 @@ export namespace BrowserAPICallEvent { * HTTP response status code. */ status: number; + + /** + * Source submitted to the Playwright code-execution endpoint, capped at 8192 bytes + * like every other captured string. A capped value is cut on a character boundary + * and ends in `...[truncated]`. Absent for every other operation. + */ + code?: string; + } +} + +/** + * CDP Runtime.StackTrace representing the JavaScript call stack at the time of an + * event. Fields use CDP naming conventions rather than snake_case to match the + * Chrome DevTools Protocol wire format. + */ +export interface BrowserCallStack { + /** + * Ordered list of call frames, outermost first. + */ + callFrames: Array; + + /** + * Optional label for the stack trace (e.g. async cause). + */ + description?: string; + + /** + * Parent stack trace for async stacks. + */ + parent?: BrowserCallStack; +} + +export namespace BrowserCallStack { + export interface CallFrame { + /** + * Zero-based column number within the line. + */ + columnNumber: number; + + /** + * JavaScript function name, or empty string for anonymous functions. + */ + functionName: string; + + /** + * Zero-based line number within the script. + */ + lineNumber: number; + + /** + * CDP script identifier. + */ + scriptId: string; + + /** + * URL or name of the script file. + */ + url: string; + } +} + +/** + * A captcha solve attempt reached a terminal outcome. + */ +export interface BrowserCaptchaSolveResultEvent { + category: 'captcha'; + + /** + * Provenance metadata identifying which producer emitted the event. + */ + source: BrowserEventSource; + + /** + * Event timestamp in Unix microseconds. + */ + ts: number; + + type: 'captcha_solve_result'; + + data?: BrowserCaptchaSolveResultEvent.Data; + + /** + * True if the data field was truncated due to size limits. + */ + truncated?: boolean; +} + +export namespace BrowserCaptchaSolveResultEvent { + export interface Data { + /** + * Captcha vendor family. Provider-specific task names are normalized into this + * set; anything not covered is reported as other. + */ + captcha_type: 'hcaptcha' | 'recaptcha_v2' | 'recaptcha_v3' | 'turnstile' | 'geetest' | 'other'; + + /** + * Wall-clock duration from solve start to terminal outcome. + */ + duration_ms: number; + + /** + * Terminal outcome. success: solver returned a usable solution. failure: solver + * returned an error (see error_code). timeout: solver did not return within the + * caller's wait budget. abandoned: caller cancelled or the page navigated away + * mid-solve. + */ + status: 'success' | 'failure' | 'timeout' | 'abandoned'; + + /** + * Solver-specific error code on failure (e.g. ERROR_CAPTCHA_UNSOLVABLE). Absent on + * success. + */ + error_code?: string; + + /** + * Solver-assigned identifier. Opaque, useful for support cross-references. + */ + task_id?: string; + + /** + * Host of the page where the captcha was solved. + */ + website_host?: string; + + /** + * Path of the page where the captcha was solved. Query string excluded. + */ + website_path?: string; + } +} + +/** + * A browser-control command a client sent over the CDP WebSocket proxy: input + * gestures, navigation, dialog handling, file selection and screenshots. + * Configuration commands and the DOM/Runtime traffic a client library issues on + * the caller's behalf are not reported. One event per browser-control command that + * reached the browser. The command stream is not sampled, coalesced or reordered. + * An event is lost only when the method is excluded by telemetry configuration, + * when the command's arguments do not decode, or when classification cannot keep + * up. Exclusions are counted in `cdp_disconnect.telemetry_excluded`; the rest in + * `cdp_disconnect.telemetry_dropped`. + */ +export interface BrowserCdpCommandEvent { + category: 'control'; + + /** + * Per-command payload for `cdp_command` events, discriminated by `method`. Each + * variant carries only the arguments approved for that command: values that could + * hold a secret — typed and composition text, URLs, referrers, scripts, templates, + * file paths, drag contents and autofill values — are replaced by a length, a + * count, a presence flag, an enum or a URL scheme and host. + */ + data: + | BrowserCdpCommandEvent.BrowserCdpInputDispatchMouseEventCommandData + | BrowserCdpCommandEvent.BrowserCdpInputDispatchKeyEventCommandData + | BrowserCdpCommandEvent.BrowserCdpInputInsertTextCommandData + | BrowserCdpCommandEvent.BrowserCdpInputImeSetCompositionCommandData + | BrowserCdpCommandEvent.BrowserCdpInputDispatchTouchEventCommandData + | BrowserCdpCommandEvent.BrowserCdpInputDispatchDragEventCommandData + | BrowserCdpCommandEvent.BrowserCdpInputCancelDraggingCommandData + | BrowserCdpCommandEvent.BrowserCdpInputEmulateTouchFromMouseEventCommandData + | BrowserCdpCommandEvent.BrowserCdpInputSynthesizePinchGestureCommandData + | BrowserCdpCommandEvent.BrowserCdpInputSynthesizeScrollGestureCommandData + | BrowserCdpCommandEvent.BrowserCdpInputSynthesizeTapGestureCommandData + | BrowserCdpCommandEvent.BrowserCdpDomSetFileInputFilesCommandData + | BrowserCdpCommandEvent.BrowserCdpDomFocusCommandData + | BrowserCdpCommandEvent.BrowserCdpDomScrollIntoViewIfNeededCommandData + | BrowserCdpCommandEvent.BrowserCdpPageBringToFrontCommandData + | BrowserCdpCommandEvent.BrowserCdpPageCaptureScreenshotCommandData + | BrowserCdpCommandEvent.BrowserCdpPageCaptureSnapshotCommandData + | BrowserCdpCommandEvent.BrowserCdpPageHandleJavaScriptDialogCommandData + | BrowserCdpCommandEvent.BrowserCdpPageNavigateCommandData + | BrowserCdpCommandEvent.BrowserCdpPageNavigateToHistoryEntryCommandData + | BrowserCdpCommandEvent.BrowserCdpPageReloadCommandData + | BrowserCdpCommandEvent.BrowserCdpPagePrintToPdfCommandData + | BrowserCdpCommandEvent.BrowserCdpPageStartScreencastCommandData + | BrowserCdpCommandEvent.BrowserCdpPageStopScreencastCommandData + | BrowserCdpCommandEvent.BrowserCdpPageStopLoadingCommandData + | BrowserCdpCommandEvent.BrowserCdpPageCloseCommandData + | BrowserCdpCommandEvent.BrowserCdpPageSetWebLifecycleStateCommandData + | BrowserCdpCommandEvent.BrowserCdpTargetActivateTargetCommandData + | BrowserCdpCommandEvent.BrowserCdpTargetCloseTargetCommandData + | BrowserCdpCommandEvent.BrowserCdpTargetCreateTargetCommandData + | BrowserCdpCommandEvent.BrowserCdpTargetCreateBrowserContextCommandData + | BrowserCdpCommandEvent.BrowserCdpTargetDisposeBrowserContextCommandData + | BrowserCdpCommandEvent.BrowserCdpTargetOpenDevToolsCommandData + | BrowserCdpCommandEvent.BrowserCdpBrowserCancelDownloadCommandData + | BrowserCdpCommandEvent.BrowserCdpBrowserCloseCommandData + | BrowserCdpCommandEvent.BrowserCdpBrowserSetWindowBoundsCommandData + | BrowserCdpCommandEvent.BrowserCdpBrowserSetContentsSizeCommandData + | BrowserCdpCommandEvent.BrowserCdpAutofillTriggerCommandData; + + /** + * Provenance metadata identifying which producer emitted the event. + */ + source: BrowserEventSource; + + /** + * Event timestamp in Unix microseconds. + */ + ts: number; + + type: 'cdp_command'; + + /** + * True if the data field was truncated due to size limits. + */ + truncated?: boolean; +} + +export namespace BrowserCdpCommandEvent { + /** + * Sanitized `Input.dispatchMouseEvent` arguments. Canonical input: + * `Input.dispatchMouseEvent` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputDispatchMouseEventCommandData { + /** + * Mouse event phase: `mousePressed`, `mouseReleased`, `mouseMoved` or + * `mouseWheel`. A value the protocol does not define is reported as `other`. + */ + event_type: 'mousePressed' | 'mouseReleased' | 'mouseMoved' | 'mouseWheel' | 'other'; + + method: 'Input.dispatchMouseEvent'; + + /** + * Button named by the command (`none`, `left`, `middle`, `right`, `back`, + * `forward`). A value the protocol does not define is reported as `other`. + */ + button?: 'none' | 'left' | 'middle' | 'right' | 'back' | 'forward' | 'other'; + + /** + * Bit field of buttons held down. Non-zero on a `mouseMoved` means the move is a + * drag path. + */ + buttons?: number; + + /** + * Number of times the button was clicked (2 is a double click). + */ + click_count?: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Horizontal scroll delta, for `mouseWheel`. + */ + delta_x?: number; + + /** + * Vertical scroll delta, for `mouseWheel`. + */ + delta_y?: number; + + /** + * Normalized pressure, 0 to 1. + */ + force?: number; + + /** + * Bit field of held modifier keys (1=Alt, 2=Ctrl, 4=Meta, 8=Shift). + */ + modifiers?: number; + + /** + * Pointer that generated the event (`mouse` or `pen`). A value the protocol does + * not define is reported as `other`. + */ + pointer_type?: 'mouse' | 'pen' | 'other'; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Normalized tangential pressure, -1 to 1. + */ + tangential_pressure?: number; + + /** + * Pen tilt from the Y-Z plane, in degrees. + */ + tilt_x?: number; + + /** + * Pen tilt from the X-Z plane, in degrees. + */ + tilt_y?: number; + + /** + * Pen clockwise rotation, in degrees. + */ + twist?: number; + + /** + * Viewport x coordinate in CSS pixels. + */ + x?: number; + + /** + * Viewport y coordinate in CSS pixels. + */ + y?: number; + } + + /** + * Sanitized `Input.dispatchKeyEvent` arguments. Canonical input: + * `Input.dispatchKeyEvent` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputDispatchKeyEventCommandData { + /** + * Key event phase: `keyDown`, `keyUp`, `rawKeyDown` or `char`. A value the + * protocol does not define is reported as `other`. + */ + event_type: 'keyDown' | 'keyUp' | 'rawKeyDown' | 'char' | 'other'; + + method: 'Input.dispatchKeyEvent'; + + /** + * Whether the event was generated by key repeat. + */ + auto_repeat?: boolean; + + /** + * Number of editing commands (e.g. `selectAll`) carried by the event. + */ + command_count?: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Whether the key is on the numeric keypad. + */ + is_keypad?: boolean; + + /** + * Whether the event is a system key event. + */ + is_system_key?: boolean; + + /** + * Keyboard location (1=left, 2=right, 3=numpad). + */ + location?: number; + + /** + * Bit field of held modifier keys (1=Alt, 2=Ctrl, 4=Meta, 8=Shift). + */ + modifiers?: number; + + /** + * Key that commands the page rather than typing into it (e.g. `Enter`, `Tab`, + * `ArrowDown`, `F5`). Keys that produce a character are never captured; those are + * counted by `text_length`. + */ + named_key?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Number of characters the command submitted. The text itself is never captured. + */ + text_length?: number; + } + + /** + * Sanitized `Input.insertText` arguments. Canonical input: `Input.insertText` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputInsertTextCommandData { + method: 'Input.insertText'; + + /** + * Number of characters inserted. The text itself is never captured. + */ + text_length: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Input.imeSetComposition` arguments. Canonical input: + * `Input.imeSetComposition` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputImeSetCompositionCommandData { + method: 'Input.imeSetComposition'; + + /** + * Number of characters in the composition. The text itself is never captured. + */ + text_length: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Replacement range end offset. + */ + replacement_end?: number; + + /** + * Replacement range start offset. + */ + replacement_start?: number; + + /** + * Selection end offset within the composition. + */ + selection_end?: number; + + /** + * Selection start offset within the composition. + */ + selection_start?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Input.dispatchTouchEvent` arguments. Canonical input: + * `Input.dispatchTouchEvent` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputDispatchTouchEventCommandData { + /** + * Touch event phase: `touchStart`, `touchEnd`, `touchMove` or `touchCancel`. A + * value the protocol does not define is reported as `other`. + */ + event_type: 'touchStart' | 'touchEnd' | 'touchMove' | 'touchCancel' | 'other'; + + method: 'Input.dispatchTouchEvent'; + + /** + * Number of active touch points the command carried. + */ + touch_point_count: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Normalized pressure of the first touch point, 0 to 1. + */ + force?: number; + + /** + * Bit field of held modifier keys (1=Alt, 2=Ctrl, 4=Meta, 8=Shift). + */ + modifiers?: number; + + /** + * Horizontal radius of the first touch point. + */ + radius_x?: number; + + /** + * Vertical radius of the first touch point. + */ + radius_y?: number; + + /** + * Rotation of the first touch point, in degrees. + */ + rotation_angle?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Normalized tangential pressure of the first touch point, -1 to 1. + */ + tangential_pressure?: number; + + /** + * Tilt of the first touch point from the Y-Z plane, in degrees. + */ + tilt_x?: number; + + /** + * Tilt of the first touch point from the X-Z plane, in degrees. + */ + tilt_y?: number; + + /** + * Clockwise rotation of the first touch point, in degrees. + */ + twist?: number; + + /** + * Viewport x coordinate of the first touch point. Touch coordinates live inside + * `touchPoints`, so this is the primary point rather than a command-level + * argument. + */ + x?: number; + + /** + * Viewport y coordinate of the first touch point. + */ + y?: number; + } + + /** + * Sanitized `Input.dispatchDragEvent` arguments. Canonical input: + * `Input.dispatchDragEvent` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputDispatchDragEventCommandData { + /** + * Drag event phase: `dragEnter`, `dragOver`, `drop` or `dragCancel`. A value the + * protocol does not define is reported as `other`. + */ + event_type: 'dragEnter' | 'dragOver' | 'drop' | 'dragCancel' | 'other'; + + method: 'Input.dispatchDragEvent'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Number of files in the drag payload. File paths are never captured. + */ + drag_file_count?: number; + + /** + * Number of items in the drag payload. Item contents are never captured. + */ + drag_item_count?: number; + + /** + * Distinct top-level MIME categories of the drag items (e.g. `text`, `image`, + * `application`). Subtypes and contents are never captured. A value the protocol + * does not define is reported as `other`. + */ + drag_mime_categories?: Array< + | 'text' + | 'image' + | 'audio' + | 'video' + | 'application' + | 'font' + | 'model' + | 'multipart' + | 'message' + | 'other' + >; + + /** + * Bit field of allowed drag operations (1=copy, 2=link, 16=move). + */ + drag_operations_mask?: number; + + /** + * Bit field of held modifier keys (1=Alt, 2=Ctrl, 4=Meta, 8=Shift). + */ + modifiers?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Viewport x coordinate in CSS pixels. + */ + x?: number; + + /** + * Viewport y coordinate in CSS pixels. + */ + y?: number; + } + + /** + * Sanitized `Input.cancelDragging` arguments. Canonical input: + * `Input.cancelDragging` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputCancelDraggingCommandData { + method: 'Input.cancelDragging'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Input.emulateTouchFromMouseEvent` arguments. Canonical input: + * `Input.emulateTouchFromMouseEvent` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputEmulateTouchFromMouseEventCommandData { + /** + * Mouse event phase being emulated as touch. A value the protocol does not define + * is reported as `other`. + */ + event_type: 'mousePressed' | 'mouseReleased' | 'mouseMoved' | 'mouseWheel' | 'other'; + + method: 'Input.emulateTouchFromMouseEvent'; + + /** + * Button named by the command. A value the protocol does not define is reported as + * `other`. + */ + button?: 'none' | 'left' | 'middle' | 'right' | 'back' | 'forward' | 'other'; + + /** + * Number of times the button was clicked. + */ + click_count?: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Horizontal scroll delta. + */ + delta_x?: number; + + /** + * Vertical scroll delta. + */ + delta_y?: number; + + /** + * Bit field of held modifier keys (1=Alt, 2=Ctrl, 4=Meta, 8=Shift). + */ + modifiers?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Viewport x coordinate in CSS pixels. + */ + x?: number; + + /** + * Viewport y coordinate in CSS pixels. + */ + y?: number; + } + + /** + * Sanitized `Input.synthesizePinchGesture` arguments. Canonical input: + * `Input.synthesizePinchGesture` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputSynthesizePinchGestureCommandData { + method: 'Input.synthesizePinchGesture'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Input source the synthesized gesture emulates. A value the protocol does not + * define is reported as `other`. + */ + gesture_source_type?: 'default' | 'touch' | 'mouse' | 'other'; + + /** + * Relative pointer speed, in pixels per second. + */ + relative_speed?: number; + + /** + * Relative scale of the pinch (>1 zooms in). + */ + scale_factor?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Viewport x coordinate in CSS pixels. + */ + x?: number; + + /** + * Viewport y coordinate in CSS pixels. + */ + y?: number; + } + + /** + * Sanitized `Input.synthesizeScrollGesture` arguments. Canonical input: + * `Input.synthesizeScrollGesture` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputSynthesizeScrollGestureCommandData { + method: 'Input.synthesizeScrollGesture'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Input source the synthesized gesture emulates. A value the protocol does not + * define is reported as `other`. + */ + gesture_source_type?: 'default' | 'touch' | 'mouse' | 'other'; + + /** + * Whether fling was suppressed. + */ + prevent_fling?: boolean; + + /** + * Number of additional repeats of the scroll. + */ + repeat_count?: number; + + /** + * Delay between repeats, in milliseconds. + */ + repeat_delay_ms?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Swipe speed in pixels per second. + */ + speed?: number; + + /** + * Viewport x coordinate in CSS pixels. + */ + x?: number; + + /** + * Horizontal scroll distance in CSS pixels; positive scrolls left. + */ + x_distance?: number; + + /** + * Additional horizontal distance scrolled past the end. + */ + x_overscroll?: number; + + /** + * Viewport y coordinate in CSS pixels. + */ + y?: number; + + /** + * Vertical scroll distance in CSS pixels; positive scrolls up. + */ + y_distance?: number; + + /** + * Additional vertical distance scrolled past the end. + */ + y_overscroll?: number; + } + + /** + * Sanitized `Input.synthesizeTapGesture` arguments. Canonical input: + * `Input.synthesizeTapGesture` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpInputSynthesizeTapGestureCommandData { + method: 'Input.synthesizeTapGesture'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Duration between touchdown and touchup, in milliseconds. + */ + duration?: number; + + /** + * Input source the synthesized gesture emulates. A value the protocol does not + * define is reported as `other`. + */ + gesture_source_type?: 'default' | 'touch' | 'mouse' | 'other'; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Number of times to tap (2 is a double tap). + */ + tap_count?: number; + + /** + * Viewport x coordinate in CSS pixels. + */ + x?: number; + + /** + * Viewport y coordinate in CSS pixels. + */ + y?: number; + } + + /** + * Sanitized `DOM.setFileInputFiles` arguments. Canonical input: + * `DOM.setFileInputFiles` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpDomSetFileInputFilesCommandData { + /** + * Number of files handed to the input. File paths are never captured. + */ + file_count: number; + + method: 'DOM.setFileInputFiles'; + + /** + * Opaque backend DOM node identifier the command targeted. + */ + backend_node_id?: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Opaque DOM node identifier the command targeted. + */ + node_id?: number; + + /** + * Opaque Runtime remote object identifier the command targeted. Clipped to 128 + * characters; a longer value is not a real identifier. + */ + object_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `DOM.focus` arguments. Canonical input: `DOM.focus` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpDomFocusCommandData { + method: 'DOM.focus'; + + /** + * Opaque backend DOM node identifier the command targeted. + */ + backend_node_id?: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Opaque DOM node identifier the command targeted. + */ + node_id?: number; + + /** + * Opaque Runtime remote object identifier the command targeted. Clipped to 128 + * characters; a longer value is not a real identifier. + */ + object_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `DOM.scrollIntoViewIfNeeded` arguments. Canonical input: + * `DOM.scrollIntoViewIfNeeded` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpDomScrollIntoViewIfNeededCommandData { + method: 'DOM.scrollIntoViewIfNeeded'; + + /** + * Opaque backend DOM node identifier the command targeted. + */ + backend_node_id?: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Opaque DOM node identifier the command targeted. + */ + node_id?: number; + + /** + * Opaque Runtime remote object identifier the command targeted. Clipped to 128 + * characters; a longer value is not a real identifier. + */ + object_id?: string; + + /** + * Height of the rect the command scrolled to. + */ + rect_height?: number; + + /** + * Width of the rect the command scrolled to. + */ + rect_width?: number; + + /** + * X offset of the rect the command scrolled to, relative to the node. + */ + rect_x?: number; + + /** + * Y offset of the rect the command scrolled to, relative to the node. + */ + rect_y?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.bringToFront` arguments. Canonical input: `Page.bringToFront` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageBringToFrontCommandData { + method: 'Page.bringToFront'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.captureScreenshot` arguments. Canonical input: + * `Page.captureScreenshot` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageCaptureScreenshotCommandData { + method: 'Page.captureScreenshot'; + + /** + * Whether the capture extended past the viewport. + */ + capture_beyond_viewport?: boolean; + + /** + * Clip region height in CSS pixels. + */ + clip_height?: number; + + /** + * Clip region page scale factor. + */ + clip_scale?: number; + + /** + * Clip region width in CSS pixels. + */ + clip_width?: number; + + /** + * Clip region x offset in CSS pixels. + */ + clip_x?: number; + + /** + * Clip region y offset in CSS pixels. + */ + clip_y?: number; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Image format requested (`jpeg`, `png` or `webp`). A value the protocol does not + * define is reported as `other`. + */ + format?: 'jpeg' | 'png' | 'webp' | 'other'; + + /** + * Whether the capture was taken from the surface rather than the view. + */ + from_surface?: boolean; + + /** + * Whether encoding favored speed over size. + */ + optimize_for_speed?: boolean; + + /** + * Compression quality, 0 to 100, for lossy formats. + */ + quality?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.captureSnapshot` arguments. Canonical input: + * `Page.captureSnapshot` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageCaptureSnapshotCommandData { + method: 'Page.captureSnapshot'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Snapshot format requested (`mhtml`). A value the protocol does not define is + * reported as `other`. + */ + format?: 'mhtml' | 'other'; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.handleJavaScriptDialog` arguments. Canonical input: + * `Page.handleJavaScriptDialog` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageHandleJavaScriptDialogCommandData { + /** + * Whether the dialog was accepted or dismissed. + */ + accept: boolean; + + method: 'Page.handleJavaScriptDialog'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Number of characters entered into a prompt dialog. The text itself is never + * captured. + */ + prompt_text_length?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.navigate` arguments. Canonical input: `Page.navigate` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageNavigateCommandData { + method: 'Page.navigate'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Opaque frame identifier. Clipped to 128 characters; a longer value is not a real + * identifier. + */ + frame_id?: string; + + /** + * Referrer policy named by the command. A value the protocol does not define is + * reported as `other`. + */ + referrer_policy?: + | 'noReferrer' + | 'noReferrerWhenDowngrade' + | 'origin' + | 'originWhenCrossOrigin' + | 'sameOrigin' + | 'strictOrigin' + | 'strictOriginWhenCrossOrigin' + | 'unsafeUrl' + | 'other'; + + /** + * Whether the command carried a referrer. The referrer itself is never captured. + */ + referrer_present?: boolean; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Navigation reason reported by the caller (e.g. `link`, `typed`, `reload`). A + * value the protocol does not define is reported as `other`. + */ + transition_type?: + | 'link' + | 'typed' + | 'address_bar' + | 'auto_bookmark' + | 'auto_subframe' + | 'manual_subframe' + | 'generated' + | 'auto_toplevel' + | 'form_submit' + | 'reload' + | 'keyword' + | 'keyword_generated' + | 'other'; + + /** + * Scheme of the destination URL (e.g. `https`, `about`, `data`). The rest of the + * URL is never captured. + */ + url_scheme?: string; + } + + /** + * Sanitized `Page.navigateToHistoryEntry` arguments. Canonical input: + * `Page.navigateToHistoryEntry` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageNavigateToHistoryEntryCommandData { + /** + * History entry the command navigated to. + */ + entry_id: number; + + method: 'Page.navigateToHistoryEntry'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.reload` arguments. Canonical input: `Page.reload` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageReloadCommandData { + method: 'Page.reload'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Whether the reload bypassed the cache. + */ + ignore_cache?: boolean; + + /** + * Opaque document loader identifier. Clipped to 128 characters; a longer value is + * not a real identifier. + */ + loader_id?: string; + + /** + * Number of characters in the injected script. + */ + script_length?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.printToPDF` arguments. Canonical input: `Page.printToPDF` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPagePrintToPdfCommandData { + method: 'Page.printToPDF'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Whether a header and footer were rendered. + */ + display_header_footer?: boolean; + + /** + * Whether a footer template was supplied. The template itself is never captured. + */ + footer_template_present?: boolean; + + /** + * Whether a document outline was embedded. + */ + generate_document_outline?: boolean; + + /** + * Whether a tagged (accessible) PDF was requested. + */ + generate_tagged_pdf?: boolean; + + /** + * Whether a header template was supplied. The template itself is never captured. + */ + header_template_present?: boolean; + + /** + * Whether the page was laid out in landscape. + */ + landscape?: boolean; + + /** + * Bottom margin in inches. + */ + margin_bottom?: number; + + /** + * Left margin in inches. + */ + margin_left?: number; + + /** + * Right margin in inches. + */ + margin_right?: number; + + /** + * Top margin in inches. + */ + margin_top?: number; + + /** + * Whether a page range was supplied. + */ + page_ranges_present?: boolean; + + /** + * Paper height in inches. + */ + paper_height?: number; + + /** + * Paper width in inches. + */ + paper_width?: number; + + /** + * Whether the CSS page size was preferred over the paper size. + */ + prefer_css_page_size?: boolean; + + /** + * Whether background graphics were printed. + */ + print_background?: boolean; + + /** + * Page render scale. + */ + scale?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * How the PDF was returned (`ReturnAsBase64` or `ReturnAsStream`). A value the + * protocol does not define is reported as `other`. + */ + transfer_mode?: 'ReturnAsBase64' | 'ReturnAsStream' | 'other'; + } + + /** + * Sanitized `Page.startScreencast` arguments. Canonical input: + * `Page.startScreencast` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageStartScreencastCommandData { + method: 'Page.startScreencast'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Frame sampling interval. + */ + every_nth_frame?: number; + + /** + * Frame format requested (`jpeg` or `png`). A value the protocol does not define + * is reported as `other`. + */ + format?: 'jpeg' | 'png' | 'other'; + + /** + * Maximum frame height in pixels. + */ + max_height?: number; + + /** + * Maximum frame width in pixels. + */ + max_width?: number; + + /** + * Compression quality, 0 to 100. + */ + quality?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.stopScreencast` arguments. Canonical input: + * `Page.stopScreencast` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageStopScreencastCommandData { + method: 'Page.stopScreencast'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.stopLoading` arguments. Canonical input: `Page.stopLoading` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageStopLoadingCommandData { + method: 'Page.stopLoading'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.close` arguments. Canonical input: `Page.close` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageCloseCommandData { + method: 'Page.close'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Page.setWebLifecycleState` arguments. Canonical input: + * `Page.setWebLifecycleState` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpPageSetWebLifecycleStateCommandData { + method: 'Page.setWebLifecycleState'; + + /** + * Lifecycle state applied (`frozen` or `active`). A value the protocol does not + * define is reported as `other`. + */ + state: 'frozen' | 'active' | 'other'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Target.activateTarget` arguments. Canonical input: + * `Target.activateTarget` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpTargetActivateTargetCommandData { + method: 'Target.activateTarget'; + + /** + * Opaque target identifier. Clipped to 128 characters; a longer value is not a + * real identifier. + */ + target_id: string; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Target.closeTarget` arguments. Canonical input: `Target.closeTarget` + * in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpTargetCloseTargetCommandData { + method: 'Target.closeTarget'; + + /** + * Opaque target identifier. Clipped to 128 characters; a longer value is not a + * real identifier. + */ + target_id: string; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Target.createTarget` arguments. Canonical input: + * `Target.createTarget` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpTargetCreateTargetCommandData { + method: 'Target.createTarget'; + + /** + * Whether the target was created in the background. + */ + background?: boolean; + + /** + * Opaque browser context identifier. Clipped to 128 characters; a longer value is + * not a real identifier. + */ + browser_context_id?: string; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Whether BeginFrame control was enabled (headless only). + */ + enable_begin_frame_control?: boolean; + + /** + * Whether the new target was focused. + */ + focus?: boolean; + + /** + * Whether a tab target rather than a page target was created. + */ + for_tab?: boolean; + + /** + * Window height in DIP. + */ + height?: number; + + /** + * Whether the target was created hidden. + */ + hidden?: boolean; + + /** + * Window x position in screen coordinates. + */ + left?: number; + + /** + * Whether a new window was requested. + */ + new_window?: boolean; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Window y position in screen coordinates. + */ + top?: number; + + /** + * Scheme of the destination URL (e.g. `https`, `about`, `data`). The rest of the + * URL is never captured. + */ + url_scheme?: string; + + /** + * Window width in DIP. + */ + width?: number; + + /** + * Window state requested (`normal`, `minimized`, `maximized`, `fullscreen`). A + * value the protocol does not define is reported as `other`. + */ + window_state?: 'normal' | 'minimized' | 'maximized' | 'fullscreen' | 'other'; + } + + /** + * Sanitized `Target.createBrowserContext` arguments. Canonical input: + * `Target.createBrowserContext` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpTargetCreateBrowserContextCommandData { + method: 'Target.createBrowserContext'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Whether the context is disposed when the debugging session detaches. + */ + dispose_on_detach?: boolean; + + /** + * Whether a proxy bypass list was configured. + */ + proxy_bypass_list_present?: boolean; + + /** + * Whether a proxy was configured. The proxy address is never captured. + */ + proxy_server_present?: boolean; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Number of origins granted universal network access. The origins themselves are + * never captured. + */ + universal_network_access_origin_count?: number; + } + + /** + * Sanitized `Target.disposeBrowserContext` arguments. Canonical input: + * `Target.disposeBrowserContext` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpTargetDisposeBrowserContextCommandData { + /** + * Opaque browser context identifier. Clipped to 128 characters; a longer value is + * not a real identifier. + */ + browser_context_id: string; + + method: 'Target.disposeBrowserContext'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } + + /** + * Sanitized `Target.openDevTools` arguments. Canonical input: + * `Target.openDevTools` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. + */ + export interface BrowserCdpTargetOpenDevToolsCommandData { + method: 'Target.openDevTools'; + + /** + * Opaque target identifier. Clipped to 128 characters; a longer value is not a + * real identifier. + */ + target_id: string; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * DevTools panel opened. Clipped to 128 characters; a longer value is not a real + * identifier. + */ + panel_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; } -} -/** - * CDP Runtime.StackTrace representing the JavaScript call stack at the time of an - * event. Fields use CDP naming conventions rather than snake_case to match the - * Chrome DevTools Protocol wire format. - */ -export interface BrowserCallStack { /** - * Ordered list of call frames, outermost first. + * Sanitized `Browser.cancelDownload` arguments. Canonical input: + * `Browser.cancelDownload` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. */ - callFrames: Array; + export interface BrowserCdpBrowserCancelDownloadCommandData { + /** + * Opaque identifier of the download that was cancelled. Clipped to 128 characters; + * a longer value is not a real identifier. + */ + download_guid: string; + + method: 'Browser.cancelDownload'; + + /** + * Opaque browser context identifier. Clipped to 128 characters; a longer value is + * not a real identifier. + */ + browser_context_id?: string; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } /** - * Optional label for the stack trace (e.g. async cause). + * Sanitized `Browser.close` arguments. Canonical input: `Browser.close` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. */ - description?: string; + export interface BrowserCdpBrowserCloseCommandData { + method: 'Browser.close'; + + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + } /** - * Parent stack trace for async stacks. + * Sanitized `Browser.setWindowBounds` arguments. Canonical input: + * `Browser.setWindowBounds` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. */ - parent?: BrowserCallStack; -} + export interface BrowserCdpBrowserSetWindowBoundsCommandData { + method: 'Browser.setWindowBounds'; -export namespace BrowserCallStack { - export interface CallFrame { /** - * Zero-based column number within the line. + * Browser window identifier. */ - columnNumber: number; + window_id: number; /** - * JavaScript function name, or empty string for anonymous functions. + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. */ - functionName: string; + command_id?: number; /** - * Zero-based line number within the script. + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. */ - lineNumber: number; + connection_id?: string; /** - * CDP script identifier. + * Window height in DIP. */ - scriptId: string; + height?: number; /** - * URL or name of the script file. + * Window x position in screen coordinates. */ - url: string; - } -} + left?: number; -/** - * A captcha solve attempt reached a terminal outcome. - */ -export interface BrowserCaptchaSolveResultEvent { - category: 'captcha'; + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; - /** - * Provenance metadata identifying which producer emitted the event. - */ - source: BrowserEventSource; + /** + * Window y position in screen coordinates. + */ + top?: number; + + /** + * Window width in DIP. + */ + width?: number; + + /** + * Window state requested (`normal`, `minimized`, `maximized`, `fullscreen`). A + * value the protocol does not define is reported as `other`. + */ + window_state?: 'normal' | 'minimized' | 'maximized' | 'fullscreen' | 'other'; + } /** - * Event timestamp in Unix microseconds. + * Sanitized `Browser.setContentsSize` arguments. Canonical input: + * `Browser.setContentsSize` in devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. */ - ts: number; + export interface BrowserCdpBrowserSetContentsSizeCommandData { + method: 'Browser.setContentsSize'; - type: 'captcha_solve_result'; + /** + * Browser window identifier. + */ + window_id: number; - data?: BrowserCaptchaSolveResultEvent.Data; + /** + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. + */ + command_id?: number; + + /** + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Contents height in DIP. + */ + height?: number; + + /** + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. + */ + session_id?: string; + + /** + * Contents width in DIP. + */ + width?: number; + } /** - * True if the data field was truncated due to size limits. + * Sanitized `Autofill.trigger` arguments. Canonical input: `Autofill.trigger` in + * devtools-protocol@2d019e73, pinned at + * https://github.com/ChromeDevTools/devtools-protocol/blob/2d019e73eb371d1d6985d26d395d78bd8f8a22ba/json/browser_protocol.json. + * Every argument of this command has a retained or redacted decision in + * lib/devtoolsproxy/testdata/cdp_arguments.yaml. */ - truncated?: boolean; -} - -export namespace BrowserCaptchaSolveResultEvent { - export interface Data { + export interface BrowserCdpAutofillTriggerCommandData { /** - * Captcha vendor family. Provider-specific task names are normalized into this - * set; anything not covered is reported as other. + * Opaque backend node identifier of the field that was autofilled. */ - captcha_type: 'hcaptcha' | 'recaptcha_v2' | 'recaptcha_v3' | 'turnstile' | 'geetest' | 'other'; + field_id: number; + + method: 'Autofill.trigger'; /** - * Wall-clock duration from solve start to terminal outcome. + * Number of address fields the command filled. Their names and values are never + * captured. */ - duration_ms: number; + address_field_count?: number; /** - * Terminal outcome. success: solver returned a usable solution. failure: solver - * returned an error (see error_code). timeout: solver did not return within the - * caller's wait budget. abandoned: caller cancelled or the page navigated away - * mid-solve. + * The command's JSON-RPC id, so the command can be joined to the result the + * browser returned for it. Absent when the client sent none. */ - status: 'success' | 'failure' | 'timeout' | 'abandoned'; + command_id?: number; /** - * Solver-specific error code on failure (e.g. ERROR_CAPTCHA_UNSOLVABLE). Absent on - * success. + * Identifies the CDP proxy connection the command arrived on, matching + * `cdp_connect` and `cdp_disconnect`. Two clients driving the same browser are + * told apart by this. */ - error_code?: string; + connection_id?: string; /** - * Solver-assigned identifier. Opaque, useful for support cross-references. + * Opaque frame identifier. Clipped to 128 characters; a longer value is not a real + * identifier. */ - task_id?: string; + frame_id?: string; /** - * Host of the page where the captcha was solved. + * What was filled: `card` or `address`. The values themselves are never captured. */ - website_host?: string; + mode?: 'card' | 'address'; /** - * Path of the page where the captcha was solved. Query string excluded. + * CDP session identifier the command was addressed to. Absent for browser-level + * commands. Clipped to 128 characters. */ - website_path?: string; + session_id?: string; } } +/** + * A browser-control CDP method the proxy reports. The set covers the commands an + * agent drives the browser with; configuration, DOM and Runtime bookkeeping, and + * Chrome-specific UI commands are outside it. Canonical definitions: + * devtools-protocol@2d019e73. + */ +export type BrowserCdpCommandMethod = + | 'Input.dispatchMouseEvent' + | 'Input.dispatchKeyEvent' + | 'Input.insertText' + | 'Input.imeSetComposition' + | 'Input.dispatchTouchEvent' + | 'Input.dispatchDragEvent' + | 'Input.cancelDragging' + | 'Input.emulateTouchFromMouseEvent' + | 'Input.synthesizePinchGesture' + | 'Input.synthesizeScrollGesture' + | 'Input.synthesizeTapGesture' + | 'DOM.setFileInputFiles' + | 'DOM.focus' + | 'DOM.scrollIntoViewIfNeeded' + | 'Page.bringToFront' + | 'Page.captureScreenshot' + | 'Page.captureSnapshot' + | 'Page.handleJavaScriptDialog' + | 'Page.navigate' + | 'Page.navigateToHistoryEntry' + | 'Page.reload' + | 'Page.printToPDF' + | 'Page.startScreencast' + | 'Page.stopScreencast' + | 'Page.stopLoading' + | 'Page.close' + | 'Page.setWebLifecycleState' + | 'Target.activateTarget' + | 'Target.closeTarget' + | 'Target.createTarget' + | 'Target.createBrowserContext' + | 'Target.disposeBrowserContext' + | 'Target.openDevTools' + | 'Browser.cancelDownload' + | 'Browser.close' + | 'Browser.setWindowBounds' + | 'Browser.setContentsSize' + | 'Autofill.trigger'; + /** * An external client (e.g. customer SDK, Playwright, Puppeteer) connected to the * CDP WebSocket proxy on this VM. @@ -272,12 +2507,25 @@ export interface BrowserCdpConnectEvent { type: 'cdp_connect'; + data?: BrowserCdpConnectEvent.Data; + /** * True if the data field was truncated due to size limits. */ truncated?: boolean; } +export namespace BrowserCdpConnectEvent { + export interface Data { + /** + * Identifies this CDP proxy connection, matching the connection_id on the + * cdp_command events that arrived on it. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + } +} + /** * An external client disconnected from the CDP WebSocket proxy on this VM. Pair * with the immediately preceding cdp_connect on the same stream. @@ -325,6 +2573,30 @@ export namespace BrowserCdpDisconnectEvent { * (typically server shutdown). */ reason: 'client_close' | 'upstream_changed' | 'upstream_error' | 'context_cancelled'; + + /** + * Identifies this CDP proxy connection, matching the connection_id on the + * cdp_command events that arrived on it. Two clients driving the same browser are + * told apart by this. + */ + connection_id?: string; + + /** + * Number of forwarded client frames the classifier never saw, because it could not + * keep up or because classification failed. An upper bound on lost commands rather + * than a count: a saturated queue turns away whatever arrives next, which may be + * library traffic that would have produced no event. Telemetry loss only; every + * command was still relayed to the browser. Absent on events from a browser image + * predating the field, which is not the same as zero. + */ + telemetry_dropped?: number; + + /** + * Number of forwarded client commands that produced no cdp_command event because + * their method is listed in control.cdp.excluded_methods. Configuration rather + * than loss, so it is counted apart from telemetry_dropped. + */ + telemetry_excluded?: number; } } @@ -1267,6 +3539,54 @@ export namespace BrowserNetworkResponseEvent { } } +/** + * A page's renderer process crashed (an "Aw, Snap!" failure) while the browser + * process itself stayed alive. Reported on the crashed page's session, with the + * session and target ids on `source.metadata`. Captured only while the `page` + * category is enabled. + */ +export interface BrowserPageCrashedEvent { + category: 'page'; + + /** + * Provenance metadata identifying which producer emitted the event. + */ + source: BrowserEventSource; + + /** + * Event timestamp in Unix microseconds. + */ + ts: number; + + type: 'page_crashed'; + + data?: BrowserPageCrashedEvent.Data; + + /** + * True if the data field was truncated due to size limits. + */ + truncated?: boolean; +} + +export namespace BrowserPageCrashedEvent { + export interface Data { + /** + * CDP target identifier of the crashed page. + */ + target_id: string; + + /** + * CDP target type of the page that produced the event. + */ + target_type: 'page' | 'background_page' | 'service_worker' | 'shared_worker' | 'other'; + + /** + * URL the page was on when its renderer process crashed. + */ + url: string; + } +} + /** * A browser DOMContentLoaded event (CDP Page.domContentEventFired). */ @@ -1725,6 +4045,60 @@ export namespace BrowserPageTabOpenedEvent { } } +/** + * An HTTP call that manages the browser VM rather than driving the browser, + * handled by the in-VM API server — recording lifecycle, filesystem and process + * management, telemetry and browser configuration. Mostly platform-induced (e.g. + * profile save, replay capture) rather than agent actions. + */ +export interface BrowserPlatformAPICallEvent { + category: 'platform'; + + /** + * Provenance metadata identifying which producer emitted the event. + */ + source: BrowserEventSource; + + /** + * Event timestamp in Unix microseconds. + */ + ts: number; + + type: 'platform_api_call'; + + data?: BrowserPlatformAPICallEvent.Data; + + /** + * True if the data field was truncated due to size limits. + */ + truncated?: boolean; +} + +export namespace BrowserPlatformAPICallEvent { + export interface Data { + /** + * Wall-clock duration of the handler in milliseconds. + */ + duration_ms: number; + + /** + * Matched route's operation, named as the in-VM API names its handler (e.g. + * ProcessExec, StartRecording). + */ + operation_id: string; + + /** + * Per-request identifier from the in-VM API request middleware. + */ + request_id: string; + + /** + * HTTP response status code. + */ + status: number; + } +} + /** * A branded proxy-layer failure observed by the browser. Emitted when the metro * egress host-proxy serves a branded 5xx error page whose response carries the @@ -1967,8 +4341,8 @@ export namespace BrowserSystemOomKillEvent { * Per-category telemetry capture settings layered onto the default set. The * operational signals (control, connection, system, captcha) are on by default and * are opt-out: set one to enabled=false to stop capturing it. The CDP categories - * (console, network, page, interaction) and screenshot are off by default and are - * opt-in: set enabled=true to capture them. + * (console, network, page, interaction), screenshot and platform are off by + * default and are opt-in: set enabled=true to capture them. */ export interface BrowserTelemetryCategoriesConfig { /** @@ -1988,10 +4362,11 @@ export interface BrowserTelemetryCategoriesConfig { console?: BrowserTelemetryCategoryConfig; /** - * Agent-driven actions against the browser, such as inbound calls to the in-VM - * API. On by default. + * Agent-driven actions against the browser — computer-control calls, Playwright + * code execution, screenshots, clipboard access, and browser-control commands sent + * over the CDP proxy. On by default. */ - control?: BrowserTelemetryCategoryConfig; + control?: BrowserTelemetryControlConfig; /** * User interaction events including clicks, keydowns, and scroll-settled events. @@ -2014,6 +4389,13 @@ export interface BrowserTelemetryCategoriesConfig { */ page?: BrowserTelemetryCategoryConfig; + /** + * In-VM API calls that manage the browser VM rather than drive the browser + * (recording, filesystem, process, telemetry and browser configuration). Mostly + * platform-induced; off by default and must be opted into. + */ + platform?: BrowserTelemetryCategoryConfig; + /** * Periodic base64-encoded viewport screenshots. High volume; off by default and * must be opted into. @@ -2034,11 +4416,29 @@ export interface BrowserTelemetryCategoryConfig { /** * Whether this category is captured. Operational categories (control, connection, * system, captcha) default to true; set false to opt out. CDP categories (console, - * network, page, interaction) and screenshot default to false; set true to opt in. + * network, page, interaction), screenshot and platform default to false; set true + * to opt in. */ enabled?: boolean; } +/** + * Settings for the cdp_command events the CDP proxy reports. + */ +export interface BrowserTelemetryCdpControlConfig { + /** + * Methods to leave out of the cdp_command stream. Omit the list to keep the + * current one; send an empty list to report every supported method again. + * Exclusion is a telemetry setting only: an excluded command is still relayed to + * the browser unchanged, it simply produces no event. Use it to drop the + * highest-volume methods — Input.dispatchMouseEvent during a humanized cursor + * path, or Page.captureScreenshot under a screencast — without turning the whole + * category off. Excluded commands are counted in + * cdp_disconnect.telemetry_excluded. + */ + excluded_methods?: Array; +} + /** * Active telemetry configuration for a browser session. */ @@ -2055,6 +4455,25 @@ export interface BrowserTelemetryConfig { export?: BrowserTelemetryExportConfig; } +/** + * Configuration for the control category. Same enabled semantics as any other + * category, plus settings for the browser-control commands the CDP proxy reports. + */ +export interface BrowserTelemetryControlConfig { + /** + * Settings for the cdp_command events the CDP proxy reports. Merged independently + * of enabled, so a later update that only sets enabled keeps the current exclusion + * list. + */ + cdp?: BrowserTelemetryCdpControlConfig; + + /** + * Whether this category is captured. Control is on by default; set false to opt + * out. + */ + enabled?: boolean; +} + /** * Union type representing any browser telemetry event. Discriminated on `type`. * Each event's `category` determines when it is captured. The CDP collector-health @@ -2077,6 +4496,7 @@ export type BrowserTelemetryEvent = | BrowserPageDomContentLoadedEvent | BrowserPageLoadEvent | BrowserPageTabOpenedEvent + | BrowserPageCrashedEvent | BrowserPageLayoutShiftEvent | BrowserPageLcpEvent | BrowserPageLayoutSettledEvent @@ -2090,6 +4510,8 @@ export type BrowserTelemetryEvent = | BrowserMonitorReconnectFailedEvent | BrowserMonitorInitFailedEvent | BrowserAPICallEvent + | BrowserPlatformAPICallEvent + | BrowserCdpCommandEvent | BrowserCdpConnectEvent | BrowserCdpDisconnectEvent | BrowserLiveViewConnectEvent @@ -2187,6 +4609,7 @@ export interface TelemetryEventsParams extends OffsetPaginationParams { | 'page' | 'interaction' | 'control' + | 'platform' | 'connection' | 'system' | 'screenshot' @@ -2238,6 +4661,8 @@ export declare namespace Telemetry { type BrowserAPICallEvent as BrowserAPICallEvent, type BrowserCallStack as BrowserCallStack, type BrowserCaptchaSolveResultEvent as BrowserCaptchaSolveResultEvent, + type BrowserCdpCommandEvent as BrowserCdpCommandEvent, + type BrowserCdpCommandMethod as BrowserCdpCommandMethod, type BrowserCdpConnectEvent as BrowserCdpConnectEvent, type BrowserCdpDisconnectEvent as BrowserCdpDisconnectEvent, type BrowserConsoleErrorEvent as BrowserConsoleErrorEvent, @@ -2259,6 +4684,7 @@ export declare namespace Telemetry { type BrowserNetworkLoadingFailedEvent as BrowserNetworkLoadingFailedEvent, type BrowserNetworkRequestEvent as BrowserNetworkRequestEvent, type BrowserNetworkResponseEvent as BrowserNetworkResponseEvent, + type BrowserPageCrashedEvent as BrowserPageCrashedEvent, type BrowserPageDomContentLoadedEvent as BrowserPageDomContentLoadedEvent, type BrowserPageLayoutSettledEvent as BrowserPageLayoutSettledEvent, type BrowserPageLayoutShiftEvent as BrowserPageLayoutShiftEvent, @@ -2267,12 +4693,15 @@ export declare namespace Telemetry { type BrowserPageNavigationEvent as BrowserPageNavigationEvent, type BrowserPageNavigationSettledEvent as BrowserPageNavigationSettledEvent, type BrowserPageTabOpenedEvent as BrowserPageTabOpenedEvent, + type BrowserPlatformAPICallEvent as BrowserPlatformAPICallEvent, type BrowserProxyErrorEvent as BrowserProxyErrorEvent, type BrowserServiceCrashedEvent as BrowserServiceCrashedEvent, type BrowserSystemOomKillEvent as BrowserSystemOomKillEvent, type BrowserTelemetryCategoriesConfig as BrowserTelemetryCategoriesConfig, type BrowserTelemetryCategoryConfig as BrowserTelemetryCategoryConfig, + type BrowserTelemetryCdpControlConfig as BrowserTelemetryCdpControlConfig, type BrowserTelemetryConfig as BrowserTelemetryConfig, + type BrowserTelemetryControlConfig as BrowserTelemetryControlConfig, type BrowserTelemetryEvent as BrowserTelemetryEvent, type BrowserTelemetryExportConfig as BrowserTelemetryExportConfig, type BrowserTelemetryOtlpExportConfig as BrowserTelemetryOtlpExportConfig, diff --git a/src/resources/proxies.ts b/src/resources/proxies.ts index 0ccef512..9b1dfff9 100644 --- a/src/resources/proxies.ts +++ b/src/resources/proxies.ts @@ -73,7 +73,10 @@ export class Proxies extends APIResource { } /** - * Soft delete a proxy. Sessions referencing it are not modified. + * Soft delete a proxy. Session records referencing it are not modified. If egress + * binding polling is enabled, existing tunnels for active sessions using the proxy + * are terminated within one polling interval; subsequent connections through the + * deleted proxy are rejected. * * @example * ```ts diff --git a/tests/api-resources/auth/connections.test.ts b/tests/api-resources/auth/connections.test.ts index 94cad027..af260de3 100644 --- a/tests/api-resources/auth/connections.test.ts +++ b/tests/api-resources/auth/connections.test.ts @@ -42,10 +42,14 @@ describe('resource connections', () => { captcha: { enabled: true }, connection: { enabled: true }, console: { enabled: true }, - control: { enabled: true }, + control: { + cdp: { excluded_methods: ['Input.dispatchMouseEvent'] }, + enabled: true, + }, interaction: { enabled: true }, network: { enabled: true }, page: { enabled: true }, + platform: { enabled: true }, screenshot: { enabled: true }, system: { enabled: true }, }, @@ -63,10 +67,14 @@ describe('resource connections', () => { captcha: { enabled: true }, connection: { enabled: true }, console: { enabled: true }, - control: { enabled: true }, + control: { + cdp: { excluded_methods: ['Input.dispatchMouseEvent'] }, + enabled: true, + }, interaction: { enabled: true }, network: { enabled: true }, page: { enabled: true }, + platform: { enabled: true }, screenshot: { enabled: true }, system: { enabled: true }, }, @@ -201,10 +209,14 @@ describe('resource connections', () => { captcha: { enabled: true }, connection: { enabled: true }, console: { enabled: true }, - control: { enabled: true }, + control: { + cdp: { excluded_methods: ['Input.dispatchMouseEvent'] }, + enabled: true, + }, interaction: { enabled: true }, network: { enabled: true }, page: { enabled: true }, + platform: { enabled: true }, screenshot: { enabled: true }, system: { enabled: true }, }, @@ -222,10 +234,14 @@ describe('resource connections', () => { captcha: { enabled: true }, connection: { enabled: true }, console: { enabled: true }, - control: { enabled: true }, + control: { + cdp: { excluded_methods: ['Input.dispatchMouseEvent'] }, + enabled: true, + }, interaction: { enabled: true }, network: { enabled: true }, page: { enabled: true }, + platform: { enabled: true }, screenshot: { enabled: true }, system: { enabled: true }, }, diff --git a/tests/api-resources/browser-pools.test.ts b/tests/api-resources/browser-pools.test.ts index 1c0f4e42..1b27e325 100644 --- a/tests/api-resources/browser-pools.test.ts +++ b/tests/api-resources/browser-pools.test.ts @@ -42,10 +42,14 @@ describe('resource browserPools', () => { captcha: { enabled: true }, connection: { enabled: true }, console: { enabled: true }, - control: { enabled: true }, + control: { + cdp: { excluded_methods: ['Input.dispatchMouseEvent'] }, + enabled: true, + }, interaction: { enabled: true }, network: { enabled: true }, page: { enabled: true }, + platform: { enabled: true }, screenshot: { enabled: true }, system: { enabled: true }, }, diff --git a/tests/api-resources/browsers/browsers.test.ts b/tests/api-resources/browsers/browsers.test.ts index 6d64f5e2..b9dfeb5f 100644 --- a/tests/api-resources/browsers/browsers.test.ts +++ b/tests/api-resources/browsers/browsers.test.ts @@ -55,10 +55,14 @@ describe('resource browsers', () => { captcha: { enabled: true }, connection: { enabled: true }, console: { enabled: true }, - control: { enabled: true }, + control: { + cdp: { excluded_methods: ['Input.dispatchMouseEvent'] }, + enabled: true, + }, interaction: { enabled: true }, network: { enabled: true }, page: { enabled: true }, + platform: { enabled: true }, screenshot: { enabled: true }, system: { enabled: true }, }, From fecc8353fb13589c8bce4dc4500fce9770cc93f5 Mon Sep 17 00:00:00 2001 From: "kernel-internal[bot]" <260533166+kernel-internal[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 17:37:44 +0000 Subject: [PATCH 2/2] release: 0.94.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ package.json | 2 +- src/version.ts | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b34659af..2ad9e208 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.93.0" + ".": "0.94.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 36f3c12f..9c67371e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.94.0](https://github.com/kernel/kernel-node-sdk/compare/v0.93.0...v0.94.0) (2026-08-21) + + +### Features + +* Mirror the control/platform telemetry split into the public API ([a5d4e3e](https://github.com/kernel/kernel-node-sdk/commit/a5d4e3ef1de188ba337d5256b58294d22bc2b464)) + ## [0.93.0](https://github.com/kernel/kernel-node-sdk/compare/v0.92.0...v0.93.0) (2026-08-19) diff --git a/package.json b/package.json index e315a4fa..9c16133c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@onkernel/sdk", - "version": "0.93.0", + "version": "0.94.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 37e6f5a8..a914c676 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.93.0'; // x-release-please-version +export const VERSION = '0.94.0'; // x-release-please-version