Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "0.93.0"
".": "0.94.0"
}
2 changes: 1 addition & 1 deletion .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
configured_endpoints: 140
configured_endpoints: 145
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
# Changelog

## [0.94.0](https://github.com/kernel/kernel-python-sdk/compare/v0.93.0...v0.94.0) (2026-08-24)


### Features

* Mirror the control/platform telemetry split into the public API ([27c5a0a](https://github.com/kernel/kernel-python-sdk/commit/27c5a0a75ade568f1feb7e058070771ae1f6db60))
* site configs: report proxy-restricted analyses ([7afcfc4](https://github.com/kernel/kernel-python-sdk/commit/7afcfc499d7008407c872d75bcc4d8a1604f7954))

## [0.93.0](https://github.com/kernel/kernel-python-sdk/compare/v0.92.0...v0.93.0) (2026-08-19)


Expand Down
37 changes: 37 additions & 0 deletions api.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -74,6 +74,37 @@ Methods:
- <code title="get /invocations/{id}/events">client.invocations.<a href="./src/kernel/resources/invocations.py">follow</a>(id, \*\*<a href="src/kernel/types/invocation_follow_params.py">params</a>) -> <a href="./src/kernel/types/invocation_follow_response.py">InvocationFollowResponse</a></code>
- <code title="get /invocations/{id}/browsers">client.invocations.<a href="./src/kernel/resources/invocations.py">list_browsers</a>(id) -> <a href="./src/kernel/types/invocation_list_browsers_response.py">InvocationListBrowsersResponse</a></code>

# SiteConfigs

Types:

```python
from kernel.types import (
Analysis,
AnalysisSummary,
Browser,
Evidence,
LookupRequest,
LookupResponse,
NoRecommendation,
Proxy,
Recommendation,
RecommendationResult,
RecommendationSummary,
ResolveRequest,
SiteConfigResponse,
Target,
)
```

Methods:

- <code title="get /site-configs/{id}">client.site_configs.<a href="./src/kernel/resources/site_configs.py">retrieve</a>(id) -> <a href="./src/kernel/types/site_config_response.py">SiteConfigResponse</a></code>
- <code title="get /site-configs">client.site_configs.<a href="./src/kernel/resources/site_configs.py">list</a>(\*\*<a href="src/kernel/types/site_config_list_params.py">params</a>) -> <a href="./src/kernel/types/analysis_summary.py">SyncOffsetPagination[AnalysisSummary]</a></code>
- <code title="get /site-configs/recommendations">client.site_configs.<a href="./src/kernel/resources/site_configs.py">list_recommendations</a>(\*\*<a href="src/kernel/types/site_config_list_recommendations_params.py">params</a>) -> <a href="./src/kernel/types/recommendation_summary.py">SyncOffsetPagination[RecommendationSummary]</a></code>
- <code title="post /site-configs/lookup">client.site_configs.<a href="./src/kernel/resources/site_configs.py">lookup</a>(\*\*<a href="src/kernel/types/site_config_lookup_params.py">params</a>) -> <a href="./src/kernel/types/lookup_response.py">LookupResponse</a></code>
- <code title="post /site-configs/resolve">client.site_configs.<a href="./src/kernel/resources/site_configs.py">resolve</a>(\*\*<a href="src/kernel/types/site_config_resolve_params.py">params</a>) -> <a href="./src/kernel/types/site_config_response.py">SiteConfigResponse</a></code>

# Browsers

Types:
Expand DownExpand Up@@ -117,6 +148,8 @@ from kernel.types.browsers import (
BrowserAPICallEvent,
BrowserCallStack,
BrowserCaptchaSolveResultEvent,
BrowserCdpCommandEvent,
BrowserCdpCommandMethod,
BrowserCdpConnectEvent,
BrowserCdpDisconnectEvent,
BrowserConsoleErrorEvent,
Expand All@@ -138,6 +171,7 @@ from kernel.types.browsers import (
BrowserNetworkLoadingFailedEvent,
BrowserNetworkRequestEvent,
BrowserNetworkResponseEvent,
BrowserPageCrashedEvent,
BrowserPageDomContentLoadedEvent,
BrowserPageLayoutSettledEvent,
BrowserPageLayoutShiftEvent,
Expand All@@ -146,12 +180,15 @@ from kernel.types.browsers import (
BrowserPageNavigationEvent,
BrowserPageNavigationSettledEvent,
BrowserPageTabOpenedEvent,
BrowserPlatformAPICallEvent,
BrowserProxyErrorEvent,
BrowserServiceCrashedEvent,
BrowserSystemOomKillEvent,
BrowserTelemetryCategoriesConfig,
BrowserTelemetryCategoryConfig,
BrowserTelemetryCdpControlConfig,
BrowserTelemetryConfig,
BrowserTelemetryControlConfig,
BrowserTelemetryEvent,
BrowserTelemetryExportConfig,
BrowserTelemetryOtlpExportConfig,
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
[project]
name = "kernel"
version = "0.93.0"
version = "0.94.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
44 changes: 44 additions & 0 deletions src/kernel/_client.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,6 +62,7 @@
deployments,
invocations,
organization,
site_configs,
browser_pools,
credential_providers,
)
Expand All@@ -74,6 +75,7 @@
from .resources.credentials import CredentialsResource, AsyncCredentialsResource
from .resources.deployments import DeploymentsResource, AsyncDeploymentsResource
from .resources.invocations import InvocationsResource, AsyncInvocationsResource
from .resources.site_configs import SiteConfigsResource, AsyncSiteConfigsResource
from .resources.browser_pools import BrowserPoolsResource, AsyncBrowserPoolsResource
from .resources.browsers.browsers import BrowsersResource, AsyncBrowsersResource
from .resources.projects.projects import ProjectsResource, AsyncProjectsResource
Expand DownExpand Up@@ -223,6 +225,13 @@ def invocations(self) -> InvocationsResource:

return InvocationsResource(self)

@cached_property
def site_configs(self) -> SiteConfigsResource:
"""Resolve browser and proxy recommendations for bot-protected sites."""
from .resources.site_configs import SiteConfigsResource

return SiteConfigsResource(self)

@cached_property
def browsers(self) -> BrowsersResource:
"""Create and manage browser sessions."""
Expand DownExpand Up@@ -599,6 +608,13 @@ def invocations(self) -> AsyncInvocationsResource:

return AsyncInvocationsResource(self)

@cached_property
def site_configs(self) -> AsyncSiteConfigsResource:
"""Resolve browser and proxy recommendations for bot-protected sites."""
from .resources.site_configs import AsyncSiteConfigsResource

return AsyncSiteConfigsResource(self)

@cached_property
def browsers(self) -> AsyncBrowsersResource:
"""Create and manage browser sessions."""
Expand DownExpand Up@@ -879,6 +895,13 @@ def invocations(self) -> invocations.InvocationsResourceWithRawResponse:

return InvocationsResourceWithRawResponse(self._client.invocations)

@cached_property
def site_configs(self) -> site_configs.SiteConfigsResourceWithRawResponse:
"""Resolve browser and proxy recommendations for bot-protected sites."""
from .resources.site_configs import SiteConfigsResourceWithRawResponse

return SiteConfigsResourceWithRawResponse(self._client.site_configs)

@cached_property
def browsers(self) -> browsers.BrowsersResourceWithRawResponse:
"""Create and manage browser sessions."""
Expand DownExpand Up@@ -999,6 +1022,13 @@ def invocations(self) -> invocations.AsyncInvocationsResourceWithRawResponse:

return AsyncInvocationsResourceWithRawResponse(self._client.invocations)

@cached_property
def site_configs(self) -> site_configs.AsyncSiteConfigsResourceWithRawResponse:
"""Resolve browser and proxy recommendations for bot-protected sites."""
from .resources.site_configs import AsyncSiteConfigsResourceWithRawResponse

return AsyncSiteConfigsResourceWithRawResponse(self._client.site_configs)

@cached_property
def browsers(self) -> browsers.AsyncBrowsersResourceWithRawResponse:
"""Create and manage browser sessions."""
Expand DownExpand Up@@ -1119,6 +1149,13 @@ def invocations(self) -> invocations.InvocationsResourceWithStreamingResponse:

return InvocationsResourceWithStreamingResponse(self._client.invocations)

@cached_property
def site_configs(self) -> site_configs.SiteConfigsResourceWithStreamingResponse:
"""Resolve browser and proxy recommendations for bot-protected sites."""
from .resources.site_configs import SiteConfigsResourceWithStreamingResponse

return SiteConfigsResourceWithStreamingResponse(self._client.site_configs)

@cached_property
def browsers(self) -> browsers.BrowsersResourceWithStreamingResponse:
"""Create and manage browser sessions."""
Expand DownExpand Up@@ -1239,6 +1276,13 @@ def invocations(self) -> invocations.AsyncInvocationsResourceWithStreamingRespon

return AsyncInvocationsResourceWithStreamingResponse(self._client.invocations)

@cached_property
def site_configs(self) -> site_configs.AsyncSiteConfigsResourceWithStreamingResponse:
"""Resolve browser and proxy recommendations for bot-protected sites."""
from .resources.site_configs import AsyncSiteConfigsResourceWithStreamingResponse

return AsyncSiteConfigsResourceWithStreamingResponse(self._client.site_configs)

@cached_property
def browsers(self) -> browsers.AsyncBrowsersResourceWithStreamingResponse:
"""Create and manage browser sessions."""
Expand Down
2 changes: 1 addition & 1 deletion src/kernel/_version.py
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "kernel"
__version__ = "0.93.0" # x-release-please-version
__version__ = "0.94.0" # x-release-please-version
14 changes: 14 additions & 0 deletions src/kernel/resources/__init__.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -112,6 +112,14 @@
OrganizationResourceWithStreamingResponse,
AsyncOrganizationResourceWithStreamingResponse,
)
from .site_configs import (
SiteConfigsResource,
AsyncSiteConfigsResource,
SiteConfigsResourceWithRawResponse,
AsyncSiteConfigsResourceWithRawResponse,
SiteConfigsResourceWithStreamingResponse,
AsyncSiteConfigsResourceWithStreamingResponse,
)
from .browser_pools import (
BrowserPoolsResource,
AsyncBrowserPoolsResource,
Expand DownExpand Up@@ -148,6 +156,12 @@
"AsyncInvocationsResourceWithRawResponse",
"InvocationsResourceWithStreamingResponse",
"AsyncInvocationsResourceWithStreamingResponse",
"SiteConfigsResource",
"AsyncSiteConfigsResource",
"SiteConfigsResourceWithRawResponse",
"AsyncSiteConfigsResourceWithRawResponse",
"SiteConfigsResourceWithStreamingResponse",
"AsyncSiteConfigsResourceWithStreamingResponse",
"BrowsersResource",
"AsyncBrowsersResource",
"BrowsersResourceWithRawResponse",
Expand Down
4 changes: 2 additions & 2 deletions src/kernel/resources/browsers/browsers.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -208,7 +208,7 @@ def create(
extensions: List of browser extensions to load into the session. Provide each by id or name.

gpu: 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.

headless: If true, launches the browser using a headless image (no VNC/GUI). Defaults to
false.
Expand DownExpand Up@@ -828,7 +828,7 @@ async def create(
extensions: List of browser extensions to load into the session. Provide each by id or name.

gpu: 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.

headless: If true, launches the browser using a headless image (no VNC/GUI). Defaults to
false.
Expand Down
2 changes: 2 additions & 0 deletions src/kernel/resources/browsers/telemetry.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,6 +62,7 @@ def events(
"page",
"interaction",
"control",
"platform",
"connection",
"system",
"screenshot",
Expand DownExpand Up@@ -238,6 +239,7 @@ def events(
"page",
"interaction",
"control",
"platform",
"connection",
"system",
"screenshot",
Expand Down
10 changes: 8 additions & 2 deletions src/kernel/resources/proxies.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -252,7 +252,10 @@ def delete(
) -> None:
"""Soft delete a proxy.

Sessions referencing it are not modified.
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.

Args:
extra_headers: Send extra headers
Expand DownExpand Up@@ -553,7 +556,10 @@ async def delete(
) -> None:
"""Soft delete a proxy.

Sessions referencing it are not modified.
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.

Args:
extra_headers: Send extra headers
Expand Down
Loading
Loading