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.112.0"
".": "0.113.0"
}
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## [0.113.0](https://github.com/kernel/kernel-python-sdk/compare/v0.112.0...v0.113.0) (2026-09-27)


### Features

* Randomize automatic search provider routing ([1da4b21](https://github.com/kernel/kernel-python-sdk/commit/1da4b212644549666e19f23146b8d1e2ab9511d9))
* Support 16GiB memory in browser pools ([7d004de](https://github.com/kernel/kernel-python-sdk/commit/7d004def693a57505b4294307b272ba1fc4f78b2))

## [0.112.0](https://github.com/kernel/kernel-python-sdk/compare/v0.111.0...v0.112.0) (2026-09-24)


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.112.0"
version = "0.113.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.112.0" # x-release-please-version
__version__ = "0.113.0" # x-release-please-version
22 changes: 22 additions & 0 deletions src/kernel/resources/browser_pools.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import httpx

from ..types import (
BrowserMemoryRequest,
browser_pool_list_params,
browser_pool_create_params,
browser_pool_delete_params,
Expand All @@ -29,6 +30,7 @@
from .._base_client import AsyncPaginator, make_request_options
from ..types.tags_param import TagsParam
from ..types.browser_pool import BrowserPool
from ..types.browser_memory_request import BrowserMemoryRequest
from ..types.browser_network_config_param import BrowserNetworkConfigParam
from ..types.browser_pool_acquire_response import BrowserPoolAcquireResponse
from ..types.shared_params.browser_profile import BrowserProfile
Expand Down Expand Up @@ -69,6 +71,7 @@ def create(
fill_rate_per_minute: int | Omit = omit,
headless: bool | Omit = omit,
kiosk_mode: bool | Omit = omit,
memory: BrowserMemoryRequest | Omit = omit,
name: str | Omit = omit,
network: BrowserNetworkConfigParam | Omit = omit,
profile: browser_pool_create_params.Profile | Omit = omit,
Expand Down Expand Up @@ -116,6 +119,8 @@ def create(
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
view. Defaults to false.

memory: Memory requested for headful browsers in this pool.

name: Optional name for the browser pool. Must be unique within the project.

network: Network configuration applied to browsers in this pool.
Expand Down Expand Up @@ -187,6 +192,7 @@ def create(
"fill_rate_per_minute": fill_rate_per_minute,
"headless": headless,
"kiosk_mode": kiosk_mode,
"memory": memory,
"name": name,
"network": network,
"profile": profile,
Expand Down Expand Up @@ -250,6 +256,7 @@ def update(
fill_rate_per_minute: int | Omit = omit,
headless: bool | Omit = omit,
kiosk_mode: bool | Omit = omit,
memory: Literal["8GiB", "16GiB"] | Omit = omit,
name: str | Omit = omit,
network: BrowserNetworkConfigParam | Omit = omit,
profile: browser_pool_update_params.Profile | Omit = omit,
Expand Down Expand Up @@ -302,6 +309,10 @@ def update(

kiosk_mode: If provided, replaces whether browsers launch in kiosk mode.

memory: Memory requested for newly-warmed headful browsers in this pool. Existing
browsers retain their original allocation. Use discard_all_idle to replace idle
browsers.

name: If provided, replaces the pool name. Empty string is a no-op; the pool name
cannot be cleared or reset to empty once assigned.

Expand Down Expand Up @@ -380,6 +391,7 @@ def update(
"fill_rate_per_minute": fill_rate_per_minute,
"headless": headless,
"kiosk_mode": kiosk_mode,
"memory": memory,
"name": name,
"network": network,
"profile": profile,
Expand Down Expand Up @@ -706,6 +718,7 @@ async def create(
fill_rate_per_minute: int | Omit = omit,
headless: bool | Omit = omit,
kiosk_mode: bool | Omit = omit,
memory: BrowserMemoryRequest | Omit = omit,
name: str | Omit = omit,
network: BrowserNetworkConfigParam | Omit = omit,
profile: browser_pool_create_params.Profile | Omit = omit,
Expand Down Expand Up @@ -753,6 +766,8 @@ async def create(
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
view. Defaults to false.

memory: Memory requested for headful browsers in this pool.

name: Optional name for the browser pool. Must be unique within the project.

network: Network configuration applied to browsers in this pool.
Expand Down Expand Up @@ -824,6 +839,7 @@ async def create(
"fill_rate_per_minute": fill_rate_per_minute,
"headless": headless,
"kiosk_mode": kiosk_mode,
"memory": memory,
"name": name,
"network": network,
"profile": profile,
Expand Down Expand Up @@ -887,6 +903,7 @@ async def update(
fill_rate_per_minute: int | Omit = omit,
headless: bool | Omit = omit,
kiosk_mode: bool | Omit = omit,
memory: Literal["8GiB", "16GiB"] | Omit = omit,
name: str | Omit = omit,
network: BrowserNetworkConfigParam | Omit = omit,
profile: browser_pool_update_params.Profile | Omit = omit,
Expand Down Expand Up @@ -939,6 +956,10 @@ async def update(

kiosk_mode: If provided, replaces whether browsers launch in kiosk mode.

memory: Memory requested for newly-warmed headful browsers in this pool. Existing
browsers retain their original allocation. Use discard_all_idle to replace idle
browsers.

name: If provided, replaces the pool name. Empty string is a no-op; the pool name
cannot be cleared or reset to empty once assigned.

Expand Down Expand Up @@ -1017,6 +1038,7 @@ async def update(
"fill_rate_per_minute": fill_rate_per_minute,
"headless": headless,
"kiosk_mode": kiosk_mode,
"memory": memory,
"name": name,
"network": network,
"profile": profile,
Expand Down
6 changes: 4 additions & 2 deletions src/kernel/resources/search/providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ def list(
contains no latency benchmarks. X-Request-Id identifies the request.

Args:
slug: Optional concrete provider slug filter. Omit to list every provider.
slug: Optional concrete provider slug filter. Omit to list every provider. A slug that
is not listed returns an empty array.

extra_headers: Send extra headers

Expand Down Expand Up @@ -128,7 +129,8 @@ async def list(
contains no latency benchmarks. X-Request-Id identifies the request.

Args:
slug: Optional concrete provider slug filter. Omit to list every provider.
slug: Optional concrete provider slug filter. Omit to list every provider. A slug that
is not listed returns an empty array.

extra_headers: Send extra headers

Expand Down
4 changes: 4 additions & 0 deletions src/kernel/types/browser_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from typing_extensions import Literal

from .._models import BaseModel
from .browser_memory import BrowserMemory
from .browser_network_config import BrowserNetworkConfig
from .shared.browser_viewport import BrowserViewport
from .shared.browser_extension import BrowserExtension
Expand Down Expand Up @@ -73,6 +74,9 @@ class BrowserPoolConfig(BaseModel):
view.
"""

memory: Optional[BrowserMemory] = None
"""Memory allocated to the browser session."""

name: Optional[str] = None
"""Optional name for the browser pool. Must be unique within the project."""

Expand Down
4 changes: 4 additions & 0 deletions src/kernel/types/browser_pool_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from typing import Dict, Iterable, Optional
from typing_extensions import Literal, Required, TypedDict

from .browser_memory_request import BrowserMemoryRequest
from .browser_network_config_param import BrowserNetworkConfigParam
from .shared_params.browser_viewport import BrowserViewport
from .shared_params.browser_extension import BrowserExtension
Expand Down Expand Up @@ -59,6 +60,9 @@ class BrowserPoolCreateParams(TypedDict, total=False):
view. Defaults to false.
"""

memory: BrowserMemoryRequest
"""Memory requested for headful browsers in this pool."""

name: str
"""Optional name for the browser pool. Must be unique within the project."""

Expand Down
9 changes: 8 additions & 1 deletion src/kernel/types/browser_pool_update_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from __future__ import annotations

from typing import Dict, Iterable, Optional
from typing_extensions import TypedDict
from typing_extensions import Literal, TypedDict

from .browser_network_config_param import BrowserNetworkConfigParam
from .shared_params.browser_viewport import BrowserViewport
Expand Down Expand Up @@ -61,6 +61,13 @@ class BrowserPoolUpdateParams(TypedDict, total=False):
kiosk_mode: bool
"""If provided, replaces whether browsers launch in kiosk mode."""

memory: Literal["8GiB", "16GiB"]
"""Memory requested for newly-warmed headful browsers in this pool.

Existing browsers retain their original allocation. Use discard_all_idle to
replace idle browsers.
"""

name: str
"""If provided, replaces the pool name.

Expand Down
5 changes: 4 additions & 1 deletion src/kernel/types/search/provider_list_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@

class ProviderListParams(TypedDict, total=False):
slug: Literal["brave", "exa", "perplexity", "context", "parallel", "valyu", "octen", "you", "tavily", "serpapi"]
"""Optional concrete provider slug filter. Omit to list every provider."""
"""Optional concrete provider slug filter.

Omit to list every provider. A slug that is not listed returns an empty array.
"""
4 changes: 4 additions & 0 deletions tests/api_resources/test_browser_pools.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def test_method_create_with_all_params(self, client: Kernel) -> None:
fill_rate_per_minute=0,
headless=False,
kiosk_mode=True,
memory="8GiB",
name="my-pool",
network={
"private_hosts": ["*.example.ts.net", "100.64.0.0/10"],
Expand Down Expand Up @@ -194,6 +195,7 @@ def test_method_update_with_all_params(self, client: Kernel) -> None:
fill_rate_per_minute=0,
headless=False,
kiosk_mode=True,
memory="8GiB",
name="my-pool",
network={
"private_hosts": ["*.example.ts.net", "100.64.0.0/10"],
Expand Down Expand Up @@ -593,6 +595,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncKernel) ->
fill_rate_per_minute=0,
headless=False,
kiosk_mode=True,
memory="8GiB",
name="my-pool",
network={
"private_hosts": ["*.example.ts.net", "100.64.0.0/10"],
Expand Down Expand Up @@ -743,6 +746,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncKernel) ->
fill_rate_per_minute=0,
headless=False,
kiosk_mode=True,
memory="8GiB",
name="my-pool",
network={
"private_hosts": ["*.example.ts.net", "100.64.0.0/10"],
Expand Down
Loading