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 number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.146.0"
".": "0.147.0"
}
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## [0.147.0](https://github.com/kernel/kernel-python-sdk/compare/v0.146.0...v0.147.0) (2026-11-12)


### Features

* Prepare native OAuth for MCP: path resource, exchange targets, static exchange client, retention, Clerk OAuth cutoff ([5976b83](https://github.com/kernel/kernel-python-sdk/commit/5976b838d244effe63464f64a35a8671a7624426))

## [0.146.0](https://github.com/kernel/kernel-python-sdk/compare/v0.145.0...v0.146.0) (2026-11-10)


Expand Down
1 change: 1 addition & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,7 @@ from kernel.types.auth import (
LoginResponse,
ManagedAuth,
ManagedAuthBrowserConfig,
ManagedAuthBrowserLocation,
ManagedAuthCreateRequest,
ManagedAuthTimelineEvent,
ManagedAuthUpdateRequest,
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "kernel"
version = "0.146.0"
version = "0.147.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/kernel/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "kernel"
__version__ = "0.146.0" # x-release-please-version
__version__ = "0.147.0" # x-release-please-version
2 changes: 2 additions & 0 deletions src/kernel/types/auth/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@
from .connection_timeline_params import ConnectionTimelineParams as ConnectionTimelineParams
from .managed_auth_browser_config import ManagedAuthBrowserConfig as ManagedAuthBrowserConfig
from .managed_auth_timeline_event import ManagedAuthTimelineEvent as ManagedAuthTimelineEvent
from .managed_auth_browser_location import ManagedAuthBrowserLocation as ManagedAuthBrowserLocation
from .managed_auth_browser_config_param import ManagedAuthBrowserConfigParam as ManagedAuthBrowserConfigParam
from .managed_auth_browser_location_param import ManagedAuthBrowserLocationParam as ManagedAuthBrowserLocationParam
7 changes: 7 additions & 0 deletions src/kernel/types/auth/managed_auth_browser_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from ..._models import BaseModel
from ..browser_proxy_config import BrowserProxyConfig
from .managed_auth_browser_location import ManagedAuthBrowserLocation
from ..browsers.browser_telemetry_categories_config import BrowserTelemetryCategoriesConfig

__all__ = [
Expand Down Expand Up @@ -117,6 +118,12 @@ class ManagedAuthBrowserConfig(BaseModel):
Browser configuration applied to browser sessions created for a managed auth connection. Managed auth controls the profile, headless mode, timeout, start URL, kiosk mode, and viewport.
"""

location: Optional[ManagedAuthBrowserLocation] = None
"""
Browser locale for the connection's login, reauthentication, and health-check
sessions. Set on create or update; not supported on login.
"""

proxy: Optional[BrowserProxyConfig] = None
"""Proxy configuration for managed auth browser sessions.
Expand Down
7 changes: 7 additions & 0 deletions src/kernel/types/auth/managed_auth_browser_config_param.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from typing_extensions import Literal, TypedDict

from ..browser_proxy_config_param import BrowserProxyConfigParam
from .managed_auth_browser_location_param import ManagedAuthBrowserLocationParam
from ..browsers.browser_telemetry_categories_config_param import BrowserTelemetryCategoriesConfigParam

__all__ = [
Expand Down Expand Up @@ -118,6 +119,12 @@ class ManagedAuthBrowserConfigParam(TypedDict, total=False):
Browser configuration applied to browser sessions created for a managed auth connection. Managed auth controls the profile, headless mode, timeout, start URL, kiosk mode, and viewport.
"""

location: ManagedAuthBrowserLocationParam
"""
Browser locale for the connection's login, reauthentication, and health-check
sessions. Set on create or update; not supported on login.
"""

proxy: BrowserProxyConfigParam
"""Proxy configuration for managed auth browser sessions.
Expand Down
20 changes: 20 additions & 0 deletions src/kernel/types/auth/managed_auth_browser_location.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import Optional

from ..._models import BaseModel

__all__ = ["ManagedAuthBrowserLocation"]


class ManagedAuthBrowserLocation(BaseModel):
"""
Browser locale applied to browser sessions created for a managed auth connection.
"""

locale: Optional[str] = None
"""
Supported canonical BCP 47 locale for the browser's language and Accept-Language
header. Omit to use the default for the browser's region, or omit on update to
keep the current locale. Null clears it on update.
"""
21 changes: 21 additions & 0 deletions src/kernel/types/auth/managed_auth_browser_location_param.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from __future__ import annotations

from typing import Optional
from typing_extensions import TypedDict

__all__ = ["ManagedAuthBrowserLocationParam"]


class ManagedAuthBrowserLocationParam(TypedDict, total=False):
"""
Browser locale applied to browser sessions created for a managed auth connection.
"""

locale: Optional[str]
"""
Supported canonical BCP 47 locale for the browser's language and Accept-Language
header. Omit to use the default for the browser's region, or omit on update to
keep the current locale. Null clears it on update.
"""
27 changes: 26 additions & 1 deletion src/kernel/types/browser_create_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,25 @@
from .shared.browser_viewport import BrowserViewport
from .browsers.browser_telemetry_config import BrowserTelemetryConfig

__all__ = ["BrowserCreateResponse"]
__all__ = ["BrowserCreateResponse", "Replay"]


class Replay(BaseModel):
"""
Replay recording started by `start_replay` when this browser was created or acquired. Omitted otherwise; list replays with `GET /browsers/{id_or_name}/replays`.
"""

replay_id: str
"""Unique identifier for the replay recording."""

finished_at: Optional[datetime] = None
"""Timestamp when replay finished"""

replay_view_url: Optional[str] = None
"""URL for viewing the replay recording."""

started_at: Optional[datetime] = None
"""Timestamp when replay started"""


class BrowserCreateResponse(BaseModel):
Expand Down Expand Up @@ -116,6 +134,13 @@ class BrowserCreateResponse(BaseModel):
Deprecated in favor of proxy.
"""

replay: Optional[Replay] = None
"""
Replay recording started by `start_replay` when this browser was created or
acquired. Omitted otherwise; list replays with
`GET /browsers/{id_or_name}/replays`.
"""

start_url: Optional[str] = None
"""URL the session was most recently asked to navigate to, if any.
Expand Down
27 changes: 26 additions & 1 deletion src/kernel/types/browser_list_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,25 @@
from .shared.browser_viewport import BrowserViewport
from .browsers.browser_telemetry_config import BrowserTelemetryConfig

__all__ = ["BrowserListResponse"]
__all__ = ["BrowserListResponse", "Replay"]


class Replay(BaseModel):
"""
Replay recording started by `start_replay` when this browser was created or acquired. Omitted otherwise; list replays with `GET /browsers/{id_or_name}/replays`.
"""

replay_id: str
"""Unique identifier for the replay recording."""

finished_at: Optional[datetime] = None
"""Timestamp when replay finished"""

replay_view_url: Optional[str] = None
"""URL for viewing the replay recording."""

started_at: Optional[datetime] = None
"""Timestamp when replay started"""


class BrowserListResponse(BaseModel):
Expand Down Expand Up @@ -116,6 +134,13 @@ class BrowserListResponse(BaseModel):
Deprecated in favor of proxy.
"""

replay: Optional[Replay] = None
"""
Replay recording started by `start_replay` when this browser was created or
acquired. Omitted otherwise; list replays with
`GET /browsers/{id_or_name}/replays`.
"""

start_url: Optional[str] = None
"""URL the session was most recently asked to navigate to, if any.
Expand Down
27 changes: 26 additions & 1 deletion src/kernel/types/browser_pool_acquire_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,25 @@
from .shared.browser_viewport import BrowserViewport
from .browsers.browser_telemetry_config import BrowserTelemetryConfig

__all__ = ["BrowserPoolAcquireResponse"]
__all__ = ["BrowserPoolAcquireResponse", "Replay"]


class Replay(BaseModel):
"""
Replay recording started by `start_replay` when this browser was created or acquired. Omitted otherwise; list replays with `GET /browsers/{id_or_name}/replays`.
"""

replay_id: str
"""Unique identifier for the replay recording."""

finished_at: Optional[datetime] = None
"""Timestamp when replay finished"""

replay_view_url: Optional[str] = None
"""URL for viewing the replay recording."""

started_at: Optional[datetime] = None
"""Timestamp when replay started"""


class BrowserPoolAcquireResponse(NoContentAsNone, BaseModel):
Expand Down Expand Up @@ -117,6 +135,13 @@ class BrowserPoolAcquireResponse(NoContentAsNone, BaseModel):
Deprecated in favor of proxy.
"""

replay: Optional[Replay] = None
"""
Replay recording started by `start_replay` when this browser was created or
acquired. Omitted otherwise; list replays with
`GET /browsers/{id_or_name}/replays`.
"""

start_url: Optional[str] = None
"""URL the session was most recently asked to navigate to, if any.
Expand Down
27 changes: 26 additions & 1 deletion src/kernel/types/browser_retrieve_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,25 @@
from .shared.browser_viewport import BrowserViewport
from .browsers.browser_telemetry_config import BrowserTelemetryConfig

__all__ = ["BrowserRetrieveResponse"]
__all__ = ["BrowserRetrieveResponse", "Replay"]


class Replay(BaseModel):
"""
Replay recording started by `start_replay` when this browser was created or acquired. Omitted otherwise; list replays with `GET /browsers/{id_or_name}/replays`.
"""

replay_id: str
"""Unique identifier for the replay recording."""

finished_at: Optional[datetime] = None
"""Timestamp when replay finished"""

replay_view_url: Optional[str] = None
"""URL for viewing the replay recording."""

started_at: Optional[datetime] = None
"""Timestamp when replay started"""


class BrowserRetrieveResponse(BaseModel):
Expand Down Expand Up @@ -116,6 +134,13 @@ class BrowserRetrieveResponse(BaseModel):
Deprecated in favor of proxy.
"""

replay: Optional[Replay] = None
"""
Replay recording started by `start_replay` when this browser was created or
acquired. Omitted otherwise; list replays with
`GET /browsers/{id_or_name}/replays`.
"""

start_url: Optional[str] = None
"""URL the session was most recently asked to navigate to, if any.
Expand Down
27 changes: 26 additions & 1 deletion src/kernel/types/browser_update_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,25 @@
from .shared.browser_viewport import BrowserViewport
from .browsers.browser_telemetry_config import BrowserTelemetryConfig

__all__ = ["BrowserUpdateResponse"]
__all__ = ["BrowserUpdateResponse", "Replay"]


class Replay(BaseModel):
"""
Replay recording started by `start_replay` when this browser was created or acquired. Omitted otherwise; list replays with `GET /browsers/{id_or_name}/replays`.
"""

replay_id: str
"""Unique identifier for the replay recording."""

finished_at: Optional[datetime] = None
"""Timestamp when replay finished"""

replay_view_url: Optional[str] = None
"""URL for viewing the replay recording."""

started_at: Optional[datetime] = None
"""Timestamp when replay started"""


class BrowserUpdateResponse(BaseModel):
Expand Down Expand Up @@ -116,6 +134,13 @@ class BrowserUpdateResponse(BaseModel):
Deprecated in favor of proxy.
"""

replay: Optional[Replay] = None
"""
Replay recording started by `start_replay` when this browser was created or
acquired. Omitted otherwise; list replays with
`GET /browsers/{id_or_name}/replays`.
"""

start_url: Optional[str] = None
"""URL the session was most recently asked to navigate to, if any.
Expand Down
27 changes: 26 additions & 1 deletion src/kernel/types/invocation_list_browsers_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,25 @@
from .shared.browser_viewport import BrowserViewport
from .browsers.browser_telemetry_config import BrowserTelemetryConfig

__all__ = ["InvocationListBrowsersResponse", "Browser"]
__all__ = ["InvocationListBrowsersResponse", "Browser", "BrowserReplay"]


class BrowserReplay(BaseModel):
"""
Replay recording started by `start_replay` when this browser was created or acquired. Omitted otherwise; list replays with `GET /browsers/{id_or_name}/replays`.
"""

replay_id: str
"""Unique identifier for the replay recording."""

finished_at: Optional[datetime] = None
"""Timestamp when replay finished"""

replay_view_url: Optional[str] = None
"""URL for viewing the replay recording."""

started_at: Optional[datetime] = None
"""Timestamp when replay started"""


class Browser(BaseModel):
Expand Down Expand Up @@ -116,6 +134,13 @@ class Browser(BaseModel):
Deprecated in favor of proxy.
"""

replay: Optional[BrowserReplay] = None
"""
Replay recording started by `start_replay` when this browser was created or
acquired. Omitted otherwise; list replays with
`GET /browsers/{id_or_name}/replays`.
"""

start_url: Optional[str] = None
"""URL the session was most recently asked to navigate to, if any.
Expand Down
Loading
Loading