Skip to content

Commit 5973ab6

Browse files
feat: Add proxy_error to browser telemetry event schema
Stainless-Generated-From: 8c74ee1f6b517af4d7473832f1448514bfc9ef5b
1 parent 63fb060 commit 5973ab6

4 files changed

Lines changed: 77 additions & 0 deletions

File tree

api.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ from kernel.types.browsers import (
146146
BrowserPageNavigationEvent,
147147
BrowserPageNavigationSettledEvent,
148148
BrowserPageTabOpenedEvent,
149+
BrowserProxyErrorEvent,
149150
BrowserServiceCrashedEvent,
150151
BrowserSystemOomKillEvent,
151152
BrowserTelemetryCategoriesConfig,

src/kernel/types/browsers/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
from .browser_telemetry_config import BrowserTelemetryConfig as BrowserTelemetryConfig
4343
from .browser_cdp_connect_event import BrowserCdpConnectEvent as BrowserCdpConnectEvent
4444
from .browser_console_log_event import BrowserConsoleLogEvent as BrowserConsoleLogEvent
45+
from .browser_proxy_error_event import BrowserProxyErrorEvent as BrowserProxyErrorEvent
4546
from .computer_press_key_params import ComputerPressKeyParams as ComputerPressKeyParams
4647
from .computer_type_text_params import ComputerTypeTextParams as ComputerTypeTextParams
4748
from .f_create_directory_params import FCreateDirectoryParams as FCreateDirectoryParams
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from typing import Optional
4+
from typing_extensions import Literal
5+
6+
from ..._models import BaseModel
7+
from .browser_event_source import BrowserEventSource
8+
from .browser_event_context import BrowserEventContext
9+
10+
__all__ = ["BrowserProxyErrorEvent", "Data"]
11+
12+
13+
class Data(BrowserEventContext):
14+
"""Browser event context stamped by the browser monitor onto all CDP-sourced events.
15+
16+
Identifies the target, frame, and navigation epoch in which the event occurred.
17+
"""
18+
19+
code: Literal[
20+
"destination_blocked",
21+
"provider_blacklisted",
22+
"provider_unreachable",
23+
"proxy_unavailable",
24+
"upstream_timeout",
25+
"upstream_dns_failure",
26+
"upstream_connect_failed",
27+
]
28+
"""
29+
Proxy-layer error code: the X-Kernel-Proxy-Error response header value from a
30+
branded 5xx error page served by the metro egress host-proxy. Values mirror what
31+
the proxy emits: destination_blocked, provider_blacklisted,
32+
provider_unreachable, proxy_unavailable, upstream_timeout, upstream_dns_failure,
33+
upstream_connect_failed. Unknown header values are dropped.
34+
"""
35+
36+
request_id: str
37+
"""CDP request identifier matching the originating request."""
38+
39+
status: int
40+
"""HTTP response status of the branded error page (502)."""
41+
42+
method: Optional[str] = None
43+
"""HTTP method of the failed request, when known."""
44+
45+
resource_type: Optional[str] = None
46+
"""CDP Network.ResourceType for the request, when known."""
47+
48+
49+
class BrowserProxyErrorEvent(BaseModel):
50+
"""A branded proxy-layer failure observed by the browser.
51+
52+
Emitted when the metro egress host-proxy serves a branded 5xx error page whose response carries the X-Kernel-Proxy-Error header. Low-volume and carries a typed code. Its value is per-session and per-URL attribution for sessions that already capture the network stream: proxy failures are only observable while the CDP network collector is running, so this is an opt-in refinement of the raw network events rather than a default-on alerting signal.
53+
"""
54+
55+
category: Literal["network"]
56+
57+
source: BrowserEventSource
58+
"""Provenance metadata identifying which producer emitted the event."""
59+
60+
ts: int
61+
"""Event timestamp in Unix microseconds."""
62+
63+
type: Literal["proxy_error"]
64+
65+
data: Optional[Data] = None
66+
"""Browser event context stamped by the browser monitor onto all CDP-sourced
67+
events.
68+
69+
Identifies the target, frame, and navigation epoch in which the event occurred.
70+
"""
71+
72+
truncated: Optional[bool] = None
73+
"""True if the data field was truncated due to size limits."""

src/kernel/types/browsers/browser_telemetry_event.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from .browser_page_load_event import BrowserPageLoadEvent
1212
from .browser_cdp_connect_event import BrowserCdpConnectEvent
1313
from .browser_console_log_event import BrowserConsoleLogEvent
14+
from .browser_proxy_error_event import BrowserProxyErrorEvent
1415
from .browser_network_idle_event import BrowserNetworkIdleEvent
1516
from .browser_console_error_event import BrowserConsoleErrorEvent
1617
from .browser_cdp_disconnect_event import BrowserCdpDisconnectEvent
@@ -47,6 +48,7 @@
4748
BrowserNetworkResponseEvent,
4849
BrowserNetworkLoadingFailedEvent,
4950
BrowserNetworkIdleEvent,
51+
BrowserProxyErrorEvent,
5052
BrowserPageNavigationEvent,
5153
BrowserPageDomContentLoadedEvent,
5254
BrowserPageLoadEvent,

0 commit comments

Comments
 (0)