Skip to content

Commit 6cf4ef2

Browse files
Merge pull request #155 from kernel/release-please--branches--main--changes--next
release: 0.91.0
2 parents 9605d5c + db06ca8 commit 6cf4ef2

35 files changed

Lines changed: 1635 additions & 18 deletions

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "0.90.0"
2+
".": "0.91.0"
33
}

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
configured_endpoints: 134
1+
configured_endpoints: 139

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## [0.91.0](https://github.com/kernel/kernel-python-sdk/compare/v0.90.0...v0.91.0) (2026-08-14)
4+
5+
6+
### Features
7+
8+
* Add customer-facing OTLP destination CRUD API ([8479adf](https://github.com/kernel/kernel-python-sdk/commit/8479adff62631c996a4a9129fd8639c16d96b92b))
9+
* Expose configurable browser memory ([ccf4127](https://github.com/kernel/kernel-python-sdk/commit/ccf4127272adc749f0da75b7e2458e4a9e183423))
10+
* Require a name on credential providers and backfill unnamed rows ([0d5a4c2](https://github.com/kernel/kernel-python-sdk/commit/0d5a4c29be2e2bc0a216436cbda4bc8602784d02))
11+
312
## [0.90.0](https://github.com/kernel/kernel-python-sdk/compare/v0.89.0...v0.90.0) (2026-08-12)
413

514

api.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ Types:
8080

8181
```python
8282
from kernel.types import (
83+
BrowserMemory,
84+
BrowserMemoryRequest,
8385
BrowserNetworkConfig,
8486
BrowserPoolRef,
8587
BrowserProxy,
@@ -340,6 +342,24 @@ Methods:
340342
- <code title="post /auth/connections/{id}/submit">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">submit</a>(id, \*\*<a href="src/kernel/types/auth/connection_submit_params.py">params</a>) -> <a href="./src/kernel/types/auth/submit_fields_response.py">SubmitFieldsResponse</a></code>
341343
- <code title="get /auth/connections/{id}/timeline">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">timeline</a>(id, \*\*<a href="src/kernel/types/auth/connection_timeline_params.py">params</a>) -> <a href="./src/kernel/types/auth/managed_auth_timeline_event.py">SyncOffsetPagination[ManagedAuthTimelineEvent]</a></code>
342344

345+
# Telemetry
346+
347+
## Destinations
348+
349+
Types:
350+
351+
```python
352+
from kernel.types.telemetry import OtlpDestination
353+
```
354+
355+
Methods:
356+
357+
- <code title="post /telemetry/destinations">client.telemetry.destinations.<a href="./src/kernel/resources/telemetry/destinations.py">create</a>(\*\*<a href="src/kernel/types/telemetry/destination_create_params.py">params</a>) -> <a href="./src/kernel/types/telemetry/otlp_destination.py">OtlpDestination</a></code>
358+
- <code title="get /telemetry/destinations/{id_or_name}">client.telemetry.destinations.<a href="./src/kernel/resources/telemetry/destinations.py">retrieve</a>(id_or_name) -> <a href="./src/kernel/types/telemetry/otlp_destination.py">OtlpDestination</a></code>
359+
- <code title="patch /telemetry/destinations/{id_or_name}">client.telemetry.destinations.<a href="./src/kernel/resources/telemetry/destinations.py">update</a>(id_or_name, \*\*<a href="src/kernel/types/telemetry/destination_update_params.py">params</a>) -> <a href="./src/kernel/types/telemetry/otlp_destination.py">OtlpDestination</a></code>
360+
- <code title="get /telemetry/destinations">client.telemetry.destinations.<a href="./src/kernel/resources/telemetry/destinations.py">list</a>(\*\*<a href="src/kernel/types/telemetry/destination_list_params.py">params</a>) -> <a href="./src/kernel/types/telemetry/otlp_destination.py">SyncOffsetPagination[OtlpDestination]</a></code>
361+
- <code title="delete /telemetry/destinations/{id_or_name}">client.telemetry.destinations.<a href="./src/kernel/resources/telemetry/destinations.py">delete</a>(id_or_name) -> None</code>
362+
343363
# Proxies
344364

345365
Types:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "kernel"
3-
version = "0.90.0"
3+
version = "0.91.0"
44
description = "The official Python library for the kernel API"
55
dynamic = ["readme"]
66
license = "Apache-2.0"

src/kernel/_client.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
browsers,
5555
profiles,
5656
projects,
57+
telemetry,
5758
audit_logs,
5859
extensions,
5960
credentials,
@@ -75,6 +76,7 @@
7576
from .resources.browser_pools import BrowserPoolsResource, AsyncBrowserPoolsResource
7677
from .resources.browsers.browsers import BrowsersResource, AsyncBrowsersResource
7778
from .resources.projects.projects import ProjectsResource, AsyncProjectsResource
79+
from .resources.telemetry.telemetry import TelemetryResource, AsyncTelemetryResource
7880
from .resources.credential_providers import CredentialProvidersResource, AsyncCredentialProvidersResource
7981
from .resources.audit_logs.audit_logs import AuditLogsResource, AsyncAuditLogsResource
8082
from .resources.organization.organization import OrganizationResource, AsyncOrganizationResource
@@ -240,6 +242,12 @@ def auth(self) -> AuthResource:
240242

241243
return AuthResource(self)
242244

245+
@cached_property
246+
def telemetry(self) -> TelemetryResource:
247+
from .resources.telemetry import TelemetryResource
248+
249+
return TelemetryResource(self)
250+
243251
@cached_property
244252
def proxies(self) -> ProxiesResource:
245253
"""Create and manage proxy configurations for routing browser traffic."""
@@ -603,6 +611,12 @@ def auth(self) -> AsyncAuthResource:
603611

604612
return AsyncAuthResource(self)
605613

614+
@cached_property
615+
def telemetry(self) -> AsyncTelemetryResource:
616+
from .resources.telemetry import AsyncTelemetryResource
617+
618+
return AsyncTelemetryResource(self)
619+
606620
@cached_property
607621
def proxies(self) -> AsyncProxiesResource:
608622
"""Create and manage proxy configurations for routing browser traffic."""
@@ -870,6 +884,12 @@ def auth(self) -> auth.AuthResourceWithRawResponse:
870884

871885
return AuthResourceWithRawResponse(self._client.auth)
872886

887+
@cached_property
888+
def telemetry(self) -> telemetry.TelemetryResourceWithRawResponse:
889+
from .resources.telemetry import TelemetryResourceWithRawResponse
890+
891+
return TelemetryResourceWithRawResponse(self._client.telemetry)
892+
873893
@cached_property
874894
def proxies(self) -> proxies.ProxiesResourceWithRawResponse:
875895
"""Create and manage proxy configurations for routing browser traffic."""
@@ -984,6 +1004,12 @@ def auth(self) -> auth.AsyncAuthResourceWithRawResponse:
9841004

9851005
return AsyncAuthResourceWithRawResponse(self._client.auth)
9861006

1007+
@cached_property
1008+
def telemetry(self) -> telemetry.AsyncTelemetryResourceWithRawResponse:
1009+
from .resources.telemetry import AsyncTelemetryResourceWithRawResponse
1010+
1011+
return AsyncTelemetryResourceWithRawResponse(self._client.telemetry)
1012+
9871013
@cached_property
9881014
def proxies(self) -> proxies.AsyncProxiesResourceWithRawResponse:
9891015
"""Create and manage proxy configurations for routing browser traffic."""
@@ -1098,6 +1124,12 @@ def auth(self) -> auth.AuthResourceWithStreamingResponse:
10981124

10991125
return AuthResourceWithStreamingResponse(self._client.auth)
11001126

1127+
@cached_property
1128+
def telemetry(self) -> telemetry.TelemetryResourceWithStreamingResponse:
1129+
from .resources.telemetry import TelemetryResourceWithStreamingResponse
1130+
1131+
return TelemetryResourceWithStreamingResponse(self._client.telemetry)
1132+
11011133
@cached_property
11021134
def proxies(self) -> proxies.ProxiesResourceWithStreamingResponse:
11031135
"""Create and manage proxy configurations for routing browser traffic."""
@@ -1212,6 +1244,12 @@ def auth(self) -> auth.AsyncAuthResourceWithStreamingResponse:
12121244

12131245
return AsyncAuthResourceWithStreamingResponse(self._client.auth)
12141246

1247+
@cached_property
1248+
def telemetry(self) -> telemetry.AsyncTelemetryResourceWithStreamingResponse:
1249+
from .resources.telemetry import AsyncTelemetryResourceWithStreamingResponse
1250+
1251+
return AsyncTelemetryResourceWithStreamingResponse(self._client.telemetry)
1252+
12151253
@cached_property
12161254
def proxies(self) -> proxies.AsyncProxiesResourceWithStreamingResponse:
12171255
"""Create and manage proxy configurations for routing browser traffic."""

src/kernel/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
__title__ = "kernel"
4-
__version__ = "0.90.0" # x-release-please-version
4+
__version__ = "0.91.0" # x-release-please-version

src/kernel/resources/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@
5656
ProjectsResourceWithStreamingResponse,
5757
AsyncProjectsResourceWithStreamingResponse,
5858
)
59+
from .telemetry import (
60+
TelemetryResource,
61+
AsyncTelemetryResource,
62+
TelemetryResourceWithRawResponse,
63+
AsyncTelemetryResourceWithRawResponse,
64+
TelemetryResourceWithStreamingResponse,
65+
AsyncTelemetryResourceWithStreamingResponse,
66+
)
5967
from .audit_logs import (
6068
AuditLogsResource,
6169
AsyncAuditLogsResource,
@@ -158,6 +166,12 @@
158166
"AsyncAuthResourceWithRawResponse",
159167
"AuthResourceWithStreamingResponse",
160168
"AsyncAuthResourceWithStreamingResponse",
169+
"TelemetryResource",
170+
"AsyncTelemetryResource",
171+
"TelemetryResourceWithRawResponse",
172+
"AsyncTelemetryResourceWithRawResponse",
173+
"TelemetryResourceWithStreamingResponse",
174+
"AsyncTelemetryResourceWithStreamingResponse",
161175
"ProxiesResource",
162176
"AsyncProxiesResource",
163177
"ProxiesResourceWithRawResponse",

src/kernel/resources/browsers/browsers.py

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
AsyncFsResourceWithStreamingResponse,
2626
)
2727
from ...types import (
28+
BrowserMemoryRequest,
2829
browser_curl_params,
2930
browser_list_params,
3031
browser_create_params,
@@ -94,6 +95,7 @@
9495
async_stream_via_browser_route,
9596
async_request_via_browser_route,
9697
)
98+
from ...types.browser_memory_request import BrowserMemoryRequest
9799
from ...types.browser_create_response import BrowserCreateResponse
98100
from ...types.browser_update_response import BrowserUpdateResponse
99101
from ...types.browser_retrieve_response import BrowserRetrieveResponse
@@ -111,7 +113,9 @@ class BrowsersResource(SyncAPIResource):
111113

112114
@cached_property
113115
def telemetry(self) -> TelemetryResource:
114-
"""Stream live telemetry events from a browser session."""
116+
"""
117+
Stream live telemetry events from a browser session, and manage the destinations sessions export them to.
118+
"""
115119
return TelemetryResource(self._client)
116120

117121
@cached_property
@@ -172,6 +176,7 @@ def create(
172176
headless: bool | Omit = omit,
173177
invocation_id: str | Omit = omit,
174178
kiosk_mode: bool | Omit = omit,
179+
memory: BrowserMemoryRequest | Omit = omit,
175180
name: str | Omit = omit,
176181
network: BrowserNetworkConfigParam | Omit = omit,
177182
profile: BrowserProfile | Omit = omit,
@@ -213,6 +218,8 @@ def create(
213218
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
214219
view.
215220
221+
memory: Memory for a headful, non-GPU browser session. Defaults to 8GiB.
222+
216223
name: Optional human-readable name for the browser session, used to find it later in
217224
the dashboard. Must be unique among active sessions within the project. Can be
218225
changed later via PATCH /browsers/{id_or_name}.
@@ -295,6 +302,7 @@ def create(
295302
"headless": headless,
296303
"invocation_id": invocation_id,
297304
"kiosk_mode": kiosk_mode,
305+
"memory": memory,
298306
"name": name,
299307
"network": network,
300308
"profile": profile,
@@ -725,7 +733,9 @@ class AsyncBrowsersResource(AsyncAPIResource):
725733

726734
@cached_property
727735
def telemetry(self) -> AsyncTelemetryResource:
728-
"""Stream live telemetry events from a browser session."""
736+
"""
737+
Stream live telemetry events from a browser session, and manage the destinations sessions export them to.
738+
"""
729739
return AsyncTelemetryResource(self._client)
730740

731741
@cached_property
@@ -786,6 +796,7 @@ async def create(
786796
headless: bool | Omit = omit,
787797
invocation_id: str | Omit = omit,
788798
kiosk_mode: bool | Omit = omit,
799+
memory: BrowserMemoryRequest | Omit = omit,
789800
name: str | Omit = omit,
790801
network: BrowserNetworkConfigParam | Omit = omit,
791802
profile: BrowserProfile | Omit = omit,
@@ -827,6 +838,8 @@ async def create(
827838
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
828839
view.
829840
841+
memory: Memory for a headful, non-GPU browser session. Defaults to 8GiB.
842+
830843
name: Optional human-readable name for the browser session, used to find it later in
831844
the dashboard. Must be unique among active sessions within the project. Can be
832845
changed later via PATCH /browsers/{id_or_name}.
@@ -909,6 +922,7 @@ async def create(
909922
"headless": headless,
910923
"invocation_id": invocation_id,
911924
"kiosk_mode": kiosk_mode,
925+
"memory": memory,
912926
"name": name,
913927
"network": network,
914928
"profile": profile,
@@ -1362,7 +1376,9 @@ def __init__(self, browsers: BrowsersResource) -> None:
13621376

13631377
@cached_property
13641378
def telemetry(self) -> TelemetryResourceWithRawResponse:
1365-
"""Stream live telemetry events from a browser session."""
1379+
"""
1380+
Stream live telemetry events from a browser session, and manage the destinations sessions export them to.
1381+
"""
13661382
return TelemetryResourceWithRawResponse(self._browsers.telemetry)
13671383

13681384
@cached_property
@@ -1424,7 +1440,9 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
14241440

14251441
@cached_property
14261442
def telemetry(self) -> AsyncTelemetryResourceWithRawResponse:
1427-
"""Stream live telemetry events from a browser session."""
1443+
"""
1444+
Stream live telemetry events from a browser session, and manage the destinations sessions export them to.
1445+
"""
14281446
return AsyncTelemetryResourceWithRawResponse(self._browsers.telemetry)
14291447

14301448
@cached_property
@@ -1486,7 +1504,9 @@ def __init__(self, browsers: BrowsersResource) -> None:
14861504

14871505
@cached_property
14881506
def telemetry(self) -> TelemetryResourceWithStreamingResponse:
1489-
"""Stream live telemetry events from a browser session."""
1507+
"""
1508+
Stream live telemetry events from a browser session, and manage the destinations sessions export them to.
1509+
"""
14901510
return TelemetryResourceWithStreamingResponse(self._browsers.telemetry)
14911511

14921512
@cached_property
@@ -1548,7 +1568,9 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
15481568

15491569
@cached_property
15501570
def telemetry(self) -> AsyncTelemetryResourceWithStreamingResponse:
1551-
"""Stream live telemetry events from a browser session."""
1571+
"""
1572+
Stream live telemetry events from a browser session, and manage the destinations sessions export them to.
1573+
"""
15521574
return AsyncTelemetryResourceWithStreamingResponse(self._browsers.telemetry)
15531575

15541576
@cached_property

src/kernel/resources/browsers/telemetry.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828

2929

3030
class TelemetryResource(SyncAPIResource):
31-
"""Stream live telemetry events from a browser session."""
31+
"""
32+
Stream live telemetry events from a browser session, and manage the destinations sessions export them to.
33+
"""
3234

3335
@cached_property
3436
def with_raw_response(self) -> TelemetryResourceWithRawResponse:
@@ -202,7 +204,9 @@ def stream(
202204

203205

204206
class AsyncTelemetryResource(AsyncAPIResource):
205-
"""Stream live telemetry events from a browser session."""
207+
"""
208+
Stream live telemetry events from a browser session, and manage the destinations sessions export them to.
209+
"""
206210

207211
@cached_property
208212
def with_raw_response(self) -> AsyncTelemetryResourceWithRawResponse:

0 commit comments

Comments
 (0)