diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 12bb1a5..b611d1b 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.63.0"
+ ".": "0.64.0"
}
diff --git a/.stats.yml b/.stats.yml
index b53121e..d9e9753 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 117
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-8f84f4214a8024d8ea62ee639eeaf2fa26900fabe23c8b87accb41d529a0bf4f.yml
-openapi_spec_hash: db14f415438b3d338d9376bddc83a5cf
-config_hash: 590bf8cb85948cf1e63b7b5ef60686c8
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-9d489e3e43edfa64a754d4281241718e01c85d9a82ef3687df12bbd3c4ff5b42.yml
+openapi_spec_hash: a953cafb7f40ec8495dbd7df8bab8bad
+config_hash: bb7acce8576a50dd449b0c8f58ef0f1d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2b23c48..3d06152 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.64.0 (2026-06-05)
+
+Full Changelog: [v0.63.0...v0.64.0](https://github.com/kernel/kernel-node-sdk/compare/v0.63.0...v0.64.0)
+
+### Features
+
+* Telemetry: expose opt-in categories + full event taxonomy (public API) ([6694395](https://github.com/kernel/kernel-node-sdk/commit/66943955bff80f219199e13961315750075acc52))
+
## 0.63.0 (2026-06-05)
Full Changelog: [v0.62.0...v0.63.0](https://github.com/kernel/kernel-node-sdk/compare/v0.62.0...v0.63.0)
diff --git a/api.md b/api.md
index 337b12a..4625155 100644
--- a/api.md
+++ b/api.md
@@ -90,7 +90,11 @@ Methods:
Types:
+- BrowserAPICallEvent
- BrowserCallStack
+- BrowserCaptchaSolveResultEvent
+- BrowserCdpConnectEvent
+- BrowserCdpDisconnectEvent
- BrowserConsoleErrorEvent
- BrowserConsoleLogEvent
- BrowserEventContext
@@ -99,6 +103,8 @@ Types:
- BrowserInteractionClickEvent
- BrowserInteractionKeyEvent
- BrowserInteractionScrollSettledEvent
+- BrowserLiveViewConnectEvent
+- BrowserLiveViewDisconnectEvent
- BrowserMonitorDisconnectedEvent
- BrowserMonitorInitFailedEvent
- BrowserMonitorReconnectFailedEvent
@@ -116,6 +122,8 @@ Types:
- BrowserPageNavigationEvent
- BrowserPageNavigationSettledEvent
- BrowserPageTabOpenedEvent
+- BrowserServiceCrashedEvent
+- BrowserSystemOomKillEvent
- BrowserTelemetryCategoriesConfig
- BrowserTelemetryCategoryConfig
- BrowserTelemetryConfig
diff --git a/package.json b/package.json
index 9b031da..7d6f086 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@onkernel/sdk",
- "version": "0.63.0",
+ "version": "0.64.0",
"description": "The official TypeScript library for the Kernel API",
"author": "Kernel <>",
"types": "dist/index.d.ts",
diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts
index dfa490e..a401500 100644
--- a/src/resources/browsers/browsers.ts
+++ b/src/resources/browsers/browsers.ts
@@ -53,7 +53,11 @@ import {
} from './replays';
import * as TelemetryAPI from './telemetry';
import {
+ BrowserAPICallEvent,
BrowserCallStack,
+ BrowserCaptchaSolveResultEvent,
+ BrowserCdpConnectEvent,
+ BrowserCdpDisconnectEvent,
BrowserConsoleErrorEvent,
BrowserConsoleLogEvent,
BrowserEventContext,
@@ -62,6 +66,8 @@ import {
BrowserInteractionClickEvent,
BrowserInteractionKeyEvent,
BrowserInteractionScrollSettledEvent,
+ BrowserLiveViewConnectEvent,
+ BrowserLiveViewDisconnectEvent,
BrowserMonitorDisconnectedEvent,
BrowserMonitorInitFailedEvent,
BrowserMonitorReconnectFailedEvent,
@@ -79,6 +85,8 @@ import {
BrowserPageNavigationEvent,
BrowserPageNavigationSettledEvent,
BrowserPageTabOpenedEvent,
+ BrowserServiceCrashedEvent,
+ BrowserSystemOomKillEvent,
BrowserTelemetryCategoriesConfig,
BrowserTelemetryCategoryConfig,
BrowserTelemetryConfig,
@@ -998,17 +1006,18 @@ export namespace BrowserCreateParams {
*/
export interface Telemetry {
/**
- * Per-category enable/disable flags. If enabled is true and browser is omitted or
- * empty, the VM default category set is used. Explicitly disabling all four
- * categories stops capture on update and starts no capture on create.
+ * Per-category capture flags. Selection is opt-in: only the categories set to
+ * enabled=true are captured; anything omitted is off. If enabled is true and
+ * browser is omitted or empty, the default category set is used. A browser config
+ * that enables nothing stops capture on update and starts no capture on create.
*/
browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig;
/**
- * Request shortcut for browser telemetry capture. True enables capture using VM
- * defaults unless browser category settings are provided. False stops capture on
- * update and starts no capture on create. enabled=false cannot be combined with
- * browser category settings.
+ * Request shortcut for browser telemetry capture. True enables capture using the
+ * default category set unless browser category settings are provided. False stops
+ * capture on update and starts no capture on create. enabled=false cannot be
+ * combined with browser category settings.
*/
enabled?: boolean;
}
@@ -1065,17 +1074,18 @@ export namespace BrowserUpdateParams {
*/
export interface Telemetry {
/**
- * Per-category enable/disable flags. If enabled is true and browser is omitted or
- * empty, the VM default category set is used. Explicitly disabling all four
- * categories stops capture on update and starts no capture on create.
+ * Per-category capture flags. Selection is opt-in: only the categories set to
+ * enabled=true are captured; anything omitted is off. If enabled is true and
+ * browser is omitted or empty, the default category set is used. A browser config
+ * that enables nothing stops capture on update and starts no capture on create.
*/
browser?: TelemetryAPI.BrowserTelemetryCategoriesConfig;
/**
- * Request shortcut for browser telemetry capture. True enables capture using VM
- * defaults unless browser category settings are provided. False stops capture on
- * update and starts no capture on create. enabled=false cannot be combined with
- * browser category settings.
+ * Request shortcut for browser telemetry capture. True enables capture using the
+ * default category set unless browser category settings are provided. False stops
+ * capture on update and starts no capture on create. enabled=false cannot be
+ * combined with browser category settings.
*/
enabled?: boolean;
}
@@ -1204,7 +1214,11 @@ export declare namespace Browsers {
export {
TelemetryAPITelemetry as Telemetry,
+ type BrowserAPICallEvent as BrowserAPICallEvent,
type BrowserCallStack as BrowserCallStack,
+ type BrowserCaptchaSolveResultEvent as BrowserCaptchaSolveResultEvent,
+ type BrowserCdpConnectEvent as BrowserCdpConnectEvent,
+ type BrowserCdpDisconnectEvent as BrowserCdpDisconnectEvent,
type BrowserConsoleErrorEvent as BrowserConsoleErrorEvent,
type BrowserConsoleLogEvent as BrowserConsoleLogEvent,
type BrowserEventContext as BrowserEventContext,
@@ -1213,6 +1227,8 @@ export declare namespace Browsers {
type BrowserInteractionClickEvent as BrowserInteractionClickEvent,
type BrowserInteractionKeyEvent as BrowserInteractionKeyEvent,
type BrowserInteractionScrollSettledEvent as BrowserInteractionScrollSettledEvent,
+ type BrowserLiveViewConnectEvent as BrowserLiveViewConnectEvent,
+ type BrowserLiveViewDisconnectEvent as BrowserLiveViewDisconnectEvent,
type BrowserMonitorDisconnectedEvent as BrowserMonitorDisconnectedEvent,
type BrowserMonitorInitFailedEvent as BrowserMonitorInitFailedEvent,
type BrowserMonitorReconnectFailedEvent as BrowserMonitorReconnectFailedEvent,
@@ -1230,6 +1246,8 @@ export declare namespace Browsers {
type BrowserPageNavigationEvent as BrowserPageNavigationEvent,
type BrowserPageNavigationSettledEvent as BrowserPageNavigationSettledEvent,
type BrowserPageTabOpenedEvent as BrowserPageTabOpenedEvent,
+ type BrowserServiceCrashedEvent as BrowserServiceCrashedEvent,
+ type BrowserSystemOomKillEvent as BrowserSystemOomKillEvent,
type BrowserTelemetryCategoriesConfig as BrowserTelemetryCategoriesConfig,
type BrowserTelemetryCategoryConfig as BrowserTelemetryCategoryConfig,
type BrowserTelemetryConfig as BrowserTelemetryConfig,
diff --git a/src/resources/browsers/index.ts b/src/resources/browsers/index.ts
index 08e2fde..a95c02b 100644
--- a/src/resources/browsers/index.ts
+++ b/src/resources/browsers/index.ts
@@ -82,7 +82,11 @@ export {
} from './replays';
export {
Telemetry,
+ type BrowserAPICallEvent,
type BrowserCallStack,
+ type BrowserCaptchaSolveResultEvent,
+ type BrowserCdpConnectEvent,
+ type BrowserCdpDisconnectEvent,
type BrowserConsoleErrorEvent,
type BrowserConsoleLogEvent,
type BrowserEventContext,
@@ -91,6 +95,8 @@ export {
type BrowserInteractionClickEvent,
type BrowserInteractionKeyEvent,
type BrowserInteractionScrollSettledEvent,
+ type BrowserLiveViewConnectEvent,
+ type BrowserLiveViewDisconnectEvent,
type BrowserMonitorDisconnectedEvent,
type BrowserMonitorInitFailedEvent,
type BrowserMonitorReconnectFailedEvent,
@@ -108,6 +114,8 @@ export {
type BrowserPageNavigationEvent,
type BrowserPageNavigationSettledEvent,
type BrowserPageTabOpenedEvent,
+ type BrowserServiceCrashedEvent,
+ type BrowserSystemOomKillEvent,
type BrowserTelemetryCategoriesConfig,
type BrowserTelemetryCategoryConfig,
type BrowserTelemetryConfig,
diff --git a/src/resources/browsers/telemetry.ts b/src/resources/browsers/telemetry.ts
index 74e83d0..50909b0 100644
--- a/src/resources/browsers/telemetry.ts
+++ b/src/resources/browsers/telemetry.ts
@@ -49,6 +49,56 @@ export class Telemetry extends APIResource {
}
}
+/**
+ * An agent-driven HTTP call handled by the in-VM API server.
+ */
+export interface BrowserAPICallEvent {
+ category: 'control';
+
+ /**
+ * Provenance metadata identifying which producer emitted the event.
+ */
+ source: BrowserEventSource;
+
+ /**
+ * Event timestamp in Unix microseconds.
+ */
+ ts: number;
+
+ type: 'api_call';
+
+ data?: BrowserAPICallEvent.Data;
+
+ /**
+ * True if the data field was truncated due to size limits.
+ */
+ truncated?: boolean;
+}
+
+export namespace BrowserAPICallEvent {
+ export interface Data {
+ /**
+ * Wall-clock duration of the handler in milliseconds.
+ */
+ duration_ms: number;
+
+ /**
+ * OpenAPI operationId of the matched route (e.g. processExec, takeScreenshot).
+ */
+ operation_id: string;
+
+ /**
+ * Per-request identifier from the in-VM API request middleware.
+ */
+ request_id: string;
+
+ /**
+ * HTTP response status code.
+ */
+ status: number;
+ }
+}
+
/**
* 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
@@ -100,6 +150,151 @@ export namespace BrowserCallStack {
}
}
+/**
+ * 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;
+ }
+}
+
+/**
+ * An external client (e.g. customer SDK, Playwright, Puppeteer) connected to the
+ * CDP WebSocket proxy on this VM.
+ */
+export interface BrowserCdpConnectEvent {
+ category: 'connection';
+
+ /**
+ * Provenance metadata identifying which producer emitted the event.
+ */
+ source: BrowserEventSource;
+
+ /**
+ * Event timestamp in Unix microseconds.
+ */
+ ts: number;
+
+ type: 'cdp_connect';
+
+ /**
+ * True if the data field was truncated due to size limits.
+ */
+ truncated?: boolean;
+}
+
+/**
+ * An external client disconnected from the CDP WebSocket proxy on this VM. Pair
+ * with the immediately preceding cdp_connect on the same stream.
+ */
+export interface BrowserCdpDisconnectEvent {
+ category: 'connection';
+
+ /**
+ * Provenance metadata identifying which producer emitted the event.
+ */
+ source: BrowserEventSource;
+
+ /**
+ * Event timestamp in Unix microseconds.
+ */
+ ts: number;
+
+ type: 'cdp_disconnect';
+
+ data?: BrowserCdpDisconnectEvent.Data;
+
+ /**
+ * True if the data field was truncated due to size limits.
+ */
+ truncated?: boolean;
+}
+
+export namespace BrowserCdpDisconnectEvent {
+ export interface Data {
+ /**
+ * Wall-clock duration of the connection in milliseconds.
+ */
+ duration_ms: number;
+
+ /**
+ * Number of CDP messages relayed across the connection in either direction.
+ */
+ message_count: number;
+
+ /**
+ * Why the connection ended. client_close: the client initiated the close.
+ * upstream_changed: Chromium restarted mid-session and the proxy tore down so the
+ * client could reconnect against the new upstream. upstream_error: upstream dial
+ * or message pump errored. context_cancelled: the request context was cancelled
+ * (typically server shutdown).
+ */
+ reason: 'client_close' | 'upstream_changed' | 'upstream_error' | 'context_cancelled';
+ }
+}
+
/**
* A browser console error or uncaught JavaScript exception event. Emitted from two
* distinct CDP sources with different data shapes. Runtime.consoleAPICalled
@@ -509,13 +704,91 @@ export namespace BrowserInteractionScrollSettledEvent {
}
}
+/**
+ * A live view client connected to the headful browser's WebRTC server. Headful
+ * only; not emitted for headless images.
+ */
+export interface BrowserLiveViewConnectEvent {
+ category: 'connection';
+
+ /**
+ * Provenance metadata identifying which producer emitted the event.
+ */
+ source: BrowserEventSource;
+
+ /**
+ * Event timestamp in Unix microseconds.
+ */
+ ts: number;
+
+ type: 'live_view_connect';
+
+ data?: BrowserLiveViewConnectEvent.Data;
+
+ /**
+ * True if the data field was truncated due to size limits.
+ */
+ truncated?: boolean;
+}
+
+export namespace BrowserLiveViewConnectEvent {
+ export interface Data {
+ /**
+ * Live view session identifier. Stable across reconnects, so a transient network
+ * blip can emit two events with the same session_id.
+ */
+ session_id: string;
+ }
+}
+
+/**
+ * A live view client disconnected from the headful browser's WebRTC server. Pair
+ * with live_view_connect by session_id.
+ */
+export interface BrowserLiveViewDisconnectEvent {
+ category: 'connection';
+
+ /**
+ * Provenance metadata identifying which producer emitted the event.
+ */
+ source: BrowserEventSource;
+
+ /**
+ * Event timestamp in Unix microseconds.
+ */
+ ts: number;
+
+ type: 'live_view_disconnect';
+
+ data?: BrowserLiveViewDisconnectEvent.Data;
+
+ /**
+ * True if the data field was truncated due to size limits.
+ */
+ truncated?: boolean;
+}
+
+export namespace BrowserLiveViewDisconnectEvent {
+ export interface Data {
+ /**
+ * Wall-clock duration of the connection in milliseconds.
+ */
+ duration_ms: number;
+
+ /**
+ * Live view session identifier; matches the corresponding live_view_connect event.
+ */
+ session_id: string;
+ }
+}
+
/**
* The CDP connection to Chrome was lost. Telemetry events may be dropped until
* monitor_reconnected arrives. Treat any in-progress computed state (network_idle,
* page_layout_settled) as unreliable until then.
*/
export interface BrowserMonitorDisconnectedEvent {
- category: 'system';
+ category: 'monitor';
/**
* Provenance metadata identifying which producer emitted the event.
@@ -550,7 +823,7 @@ export namespace BrowserMonitorDisconnectedEvent {
* The CDP session could not be initialized.
*/
export interface BrowserMonitorInitFailedEvent {
- category: 'system';
+ category: 'monitor';
/**
* Provenance metadata identifying which producer emitted the event.
@@ -586,7 +859,7 @@ export namespace BrowserMonitorInitFailedEvent {
* reconnection attempts. No further telemetry events will arrive on this session.
*/
export interface BrowserMonitorReconnectFailedEvent {
- category: 'system';
+ category: 'monitor';
/**
* Provenance metadata identifying which producer emitted the event.
@@ -624,7 +897,7 @@ export namespace BrowserMonitorReconnectFailedEvent {
* so navigation and network tracking restart fresh from this point.
*/
export interface BrowserMonitorReconnectedEvent {
- category: 'system';
+ category: 'monitor';
/**
* Provenance metadata identifying which producer emitted the event.
@@ -659,7 +932,7 @@ export namespace BrowserMonitorReconnectedEvent {
* A periodic screenshot of the browser viewport.
*/
export interface BrowserMonitorScreenshotEvent {
- category: 'system';
+ category: 'screenshot';
/**
* Provenance metadata identifying which producer emitted the event.
@@ -1417,16 +1690,195 @@ export namespace BrowserPageTabOpenedEvent {
}
/**
- * Per-category telemetry capture settings.
+ * A managed service exited unexpectedly. Intentional stops do not produce this
+ * event; only unexpected exits and terminal restart-give-up transitions do.
+ */
+export interface BrowserServiceCrashedEvent {
+ category: 'system';
+
+ /**
+ * Provenance metadata identifying which producer emitted the event.
+ */
+ source: BrowserEventSource;
+
+ /**
+ * Event timestamp in Unix microseconds.
+ */
+ ts: number;
+
+ type: 'service_crashed';
+
+ data?: BrowserServiceCrashedEvent.Data;
+
+ /**
+ * True if the data field was truncated due to size limits.
+ */
+ truncated?: boolean;
+}
+
+export namespace BrowserServiceCrashedEvent {
+ export interface Data {
+ /**
+ * Lifecycle phase the crash occurred in. startup: the process died before reaching
+ * a healthy running state. running: a previously healthy process died
+ * unexpectedly. gave_up: the process manager exhausted its restart attempts and
+ * stopped trying.
+ */
+ phase: 'startup' | 'running' | 'gave_up';
+
+ /**
+ * Program name of the crashed service (e.g. chromium, mutter, kernel-images-api).
+ */
+ service_name: string;
+
+ /**
+ * PID of the crashed process. Absent when the process manager gave up after
+ * exhausting restart attempts.
+ */
+ pid?: number;
+ }
+}
+
+/**
+ * The Linux kernel OOM-killer terminated a process inside the VM. Fires for any
+ * process killed by the kernel due to memory exhaustion, including Chrome renderer
+ * subprocesses that are not supervised.
+ */
+export interface BrowserSystemOomKillEvent {
+ category: 'system';
+
+ /**
+ * Provenance metadata identifying which producer emitted the event.
+ */
+ source: BrowserEventSource;
+
+ /**
+ * Event timestamp in Unix microseconds.
+ */
+ ts: number;
+
+ type: 'system_oom_kill';
+
+ data?: BrowserSystemOomKillEvent.Data;
+
+ /**
+ * True if the data field was truncated due to size limits.
+ */
+ truncated?: boolean;
+}
+
+export namespace BrowserSystemOomKillEvent {
+ export interface Data {
+ /**
+ * PID of the killed process.
+ */
+ pid: number;
+
+ /**
+ * Comm of the killed process as reported by the kernel (max 15 chars, truncated by
+ * the kernel).
+ */
+ process_name: string;
+
+ /**
+ * Resident set size of the killed process in KiB (sum of anon-rss, file-rss, and
+ * shmem-rss).
+ */
+ rss_kb: number;
+
+ /**
+ * Why the kernel decided to OOM-kill. none means global memory exhaustion; memcg
+ * means a cgroup memory limit was hit; cpuset / memory_policy are
+ * NUMA/policy-driven kills. Absent on kernels older than 5.0.
+ */
+ constraint?: 'none' | 'memcg' | 'cpuset' | 'memory_policy';
+
+ /**
+ * Free system memory in KiB at the time of the kill. Assumes a 4 KiB page size.
+ * Does not include reclaimable caches. Absent if the kernel did not emit a
+ * parseable Mem-Info section.
+ */
+ mem_free_kb?: number;
+
+ /**
+ * Total system memory in KiB at the time of the kill. Assumes a 4 KiB page size.
+ * Absent if the kernel did not emit a parseable Mem-Info section.
+ */
+ mem_total_kb?: number;
+
+ /**
+ * Top processes by resident-set-size at the moment of the kill, sorted descending.
+ * Empty if the kernel did not emit the Tasks state table. Capped at 5 entries.
+ */
+ top_tasks?: Array;
+
+ /**
+ * PID of the triggering process. Absent if the kernel did not emit the standard
+ * header line.
+ */
+ trigger_pid?: number;
+
+ /**
+ * Comm of the process whose allocation request caused the kernel to invoke the
+ * OOM-killer. Often the same as process_name but can differ. Max 15 chars.
+ */
+ trigger_process_name?: string;
+ }
+
+ export namespace Data {
+ export interface TopTask {
+ /**
+ * Comm of the process (max 15 chars, truncated by the kernel).
+ */
+ name: string;
+
+ /**
+ * PID of the process.
+ */
+ pid: number;
+
+ /**
+ * Resident set size in KiB at the moment of the kill.
+ */
+ rss_kb: number;
+ }
+ }
+}
+
+/**
+ * Per-category telemetry capture settings. Selection is opt-in: set a category to
+ * enabled=true to capture it; anything omitted is off. The default set (used by
+ * enabled=true with no per-category settings) is the lightweight operational
+ * signals: control, connection, system, captcha. The CDP categories (console,
+ * network, page, interaction) and screenshot are off by default and must be opted
+ * into.
*/
export interface BrowserTelemetryCategoriesConfig {
/**
- * Console output (log, warn, error) and uncaught exceptions.
+ * Captcha solve attempt outcomes. On by default.
+ */
+ captcha?: BrowserTelemetryCategoryConfig;
+
+ /**
+ * Client attach/detach lifecycle for the CDP proxy and live view. On by default.
+ */
+ connection?: BrowserTelemetryCategoryConfig;
+
+ /**
+ * Console output (log, warn, error) and uncaught exceptions. CDP category; off by
+ * default.
*/
console?: BrowserTelemetryCategoryConfig;
+ /**
+ * Agent-driven actions against the browser, such as inbound calls to the in-VM
+ * API. On by default.
+ */
+ control?: BrowserTelemetryCategoryConfig;
+
/**
* User interaction events including clicks, keydowns, and scroll-settled events.
+ * CDP category; off by default.
*/
interaction?: BrowserTelemetryCategoryConfig;
@@ -1434,15 +1886,28 @@ export interface BrowserTelemetryCategoriesConfig {
* HTTP request and response metadata including URL, method, status code, and
* timing. Request post data is forwarded as-is from CDP. Text response bodies are
* truncated at 8 KB for structured types (JSON, XML, form data) and 4 KB for other
- * text types. Binary responses (images, fonts, media) are excluded.
+ * text types. Binary responses (images, fonts, media) are excluded. CDP category;
+ * off by default.
*/
network?: BrowserTelemetryCategoryConfig;
/**
* Page lifecycle events including navigation, DOMContentLoaded, load, layout
- * shifts, and LCP.
+ * shifts, and LCP. CDP category; off by default.
*/
page?: BrowserTelemetryCategoryConfig;
+
+ /**
+ * Periodic base64-encoded viewport screenshots. High volume; off by default and
+ * must be opted into.
+ */
+ screenshot?: BrowserTelemetryCategoryConfig;
+
+ /**
+ * Browser VM health, such as out-of-memory kills and managed-service crashes. On
+ * by default.
+ */
+ system?: BrowserTelemetryCategoryConfig;
}
/**
@@ -1450,7 +1915,8 @@ export interface BrowserTelemetryCategoriesConfig {
*/
export interface BrowserTelemetryCategoryConfig {
/**
- * Whether this category is captured. Defaults to true if omitted.
+ * Whether this category is captured. Selection is opt-in, so an omitted category
+ * is not captured.
*/
enabled?: boolean;
}
@@ -1467,10 +1933,13 @@ export interface BrowserTelemetryConfig {
/**
* Union type representing any browser telemetry event. Discriminated on `type`.
- * Events with a `monitor_` prefix (monitor_screenshot, monitor_disconnected,
- * monitor_reconnected, monitor_reconnect_failed, monitor_init_failed) are always
- * emitted regardless of the category configuration in BrowserTelemetryConfig. All
- * other event types are controlled by the per-category enable/disable flags.
+ * Each event's `category` determines when it is captured. The CDP collector-health
+ * events (monitor_disconnected, monitor_reconnected, monitor_reconnect_failed,
+ * monitor_init_failed) use the `monitor` category, which is not user-configurable:
+ * it flows automatically whenever any CDP category (console, network, page,
+ * interaction) is captured, and is silent otherwise. monitor_screenshot uses the
+ * opt-in `screenshot` category. All other event types are controlled by their
+ * per-category enable/disable flags.
*/
export type BrowserTelemetryEvent =
| BrowserConsoleLogEvent
@@ -1494,7 +1963,15 @@ export type BrowserTelemetryEvent =
| BrowserMonitorDisconnectedEvent
| BrowserMonitorReconnectedEvent
| BrowserMonitorReconnectFailedEvent
- | BrowserMonitorInitFailedEvent;
+ | BrowserMonitorInitFailedEvent
+ | BrowserAPICallEvent
+ | BrowserCdpConnectEvent
+ | BrowserCdpDisconnectEvent
+ | BrowserLiveViewConnectEvent
+ | BrowserLiveViewDisconnectEvent
+ | BrowserCaptchaSolveResultEvent
+ | BrowserSystemOomKillEvent
+ | BrowserServiceCrashedEvent;
/**
* Envelope wrapping a browser telemetry event with its monotonic sequence number.
@@ -1504,10 +1981,13 @@ export type BrowserTelemetryEvent =
export interface TelemetryStreamResponse {
/**
* Union type representing any browser telemetry event. Discriminated on `type`.
- * Events with a `monitor_` prefix (monitor_screenshot, monitor_disconnected,
- * monitor_reconnected, monitor_reconnect_failed, monitor_init_failed) are always
- * emitted regardless of the category configuration in BrowserTelemetryConfig. All
- * other event types are controlled by the per-category enable/disable flags.
+ * Each event's `category` determines when it is captured. The CDP collector-health
+ * events (monitor_disconnected, monitor_reconnected, monitor_reconnect_failed,
+ * monitor_init_failed) use the `monitor` category, which is not user-configurable:
+ * it flows automatically whenever any CDP category (console, network, page,
+ * interaction) is captured, and is silent otherwise. monitor_screenshot uses the
+ * opt-in `screenshot` category. All other event types are controlled by their
+ * per-category enable/disable flags.
*/
event: BrowserTelemetryEvent;
@@ -1529,7 +2009,11 @@ export interface TelemetryStreamParams {
export declare namespace Telemetry {
export {
+ type BrowserAPICallEvent as BrowserAPICallEvent,
type BrowserCallStack as BrowserCallStack,
+ type BrowserCaptchaSolveResultEvent as BrowserCaptchaSolveResultEvent,
+ type BrowserCdpConnectEvent as BrowserCdpConnectEvent,
+ type BrowserCdpDisconnectEvent as BrowserCdpDisconnectEvent,
type BrowserConsoleErrorEvent as BrowserConsoleErrorEvent,
type BrowserConsoleLogEvent as BrowserConsoleLogEvent,
type BrowserEventContext as BrowserEventContext,
@@ -1538,6 +2022,8 @@ export declare namespace Telemetry {
type BrowserInteractionClickEvent as BrowserInteractionClickEvent,
type BrowserInteractionKeyEvent as BrowserInteractionKeyEvent,
type BrowserInteractionScrollSettledEvent as BrowserInteractionScrollSettledEvent,
+ type BrowserLiveViewConnectEvent as BrowserLiveViewConnectEvent,
+ type BrowserLiveViewDisconnectEvent as BrowserLiveViewDisconnectEvent,
type BrowserMonitorDisconnectedEvent as BrowserMonitorDisconnectedEvent,
type BrowserMonitorInitFailedEvent as BrowserMonitorInitFailedEvent,
type BrowserMonitorReconnectFailedEvent as BrowserMonitorReconnectFailedEvent,
@@ -1555,6 +2041,8 @@ export declare namespace Telemetry {
type BrowserPageNavigationEvent as BrowserPageNavigationEvent,
type BrowserPageNavigationSettledEvent as BrowserPageNavigationSettledEvent,
type BrowserPageTabOpenedEvent as BrowserPageTabOpenedEvent,
+ type BrowserServiceCrashedEvent as BrowserServiceCrashedEvent,
+ type BrowserSystemOomKillEvent as BrowserSystemOomKillEvent,
type BrowserTelemetryCategoriesConfig as BrowserTelemetryCategoriesConfig,
type BrowserTelemetryCategoryConfig as BrowserTelemetryCategoryConfig,
type BrowserTelemetryConfig as BrowserTelemetryConfig,
diff --git a/src/version.ts b/src/version.ts
index 3abb4d1..40872bf 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.63.0'; // x-release-please-version
+export const VERSION = '0.64.0'; // x-release-please-version
diff --git a/tests/api-resources/browsers/browsers.test.ts b/tests/api-resources/browsers/browsers.test.ts
index 0d2e506..689bf85 100644
--- a/tests/api-resources/browsers/browsers.test.ts
+++ b/tests/api-resources/browsers/browsers.test.ts
@@ -44,10 +44,15 @@ describe('resource browsers', () => {
tags: { team: 'backend', env: 'staging' },
telemetry: {
browser: {
+ captcha: { enabled: true },
+ connection: { enabled: true },
console: { enabled: true },
+ control: { enabled: true },
interaction: { enabled: true },
network: { enabled: true },
page: { enabled: true },
+ screenshot: { enabled: true },
+ system: { enabled: true },
},
enabled: true,
},