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, },