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

## [0.127.0](https://github.com/kernel/kernel-python-sdk/compare/v0.126.0...v0.127.0) (2026-10-16)


### Features

* Add atomic preconditions to pool network updates ([9869c91](https://github.com/kernel/kernel-python-sdk/commit/9869c911414a8be186a1a64682487fd38423fb92))
* Add passkey credential fields and PATCH field add/remove ([84a69ad](https://github.com/kernel/kernel-python-sdk/commit/84a69ad74c46ddcdd87acd88a23dd5330adf555b))
* Allow replacing vault cards whose provider outcome is unknown ([30f88e1](https://github.com/kernel/kernel-python-sdk/commit/30f88e18b045f3fedbe1bd79d3125db105dd725f))
* chore(stlc): seal custom-code tracking files ([5a62113](https://github.com/kernel/kernel-python-sdk/commit/5a621135bad2661c79068027773ff32b4e14e0c9))
* Classify text captchas as token tasks and Binance as a provider ([84f71b8](https://github.com/kernel/kernel-python-sdk/commit/84f71b89f84dea25464cbc22ed92786d73083419))
* Deliver Kernel card details through fill ([eed3e7b](https://github.com/kernel/kernel-python-sdk/commit/eed3e7ba06c46d3cfa6048d9f02c3d8fff6046e6))
* Raise Kernel card amount cap to $10,000 ([483f331](https://github.com/kernel/kernel-python-sdk/commit/483f3312824d07e5f315afe0ce5058d4fc4a6e99))
* Remove Link expires_at, return 400 for missing credential values, and log fill failures ([766dd6e](https://github.com/kernel/kernel-python-sdk/commit/766dd6e961fd36f580540a535cad76e659ecafee))

## [0.126.0](https://github.com/kernel/kernel-python-sdk/compare/v0.125.0...v0.126.0) (2026-10-14)


Expand Down
1 change: 1 addition & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,7 @@ from kernel.types.vaults import (
CredentialAccountVaultItemRequest,
CredentialCollectionAction,
CredentialVaultFieldDefinition,
CredentialVaultFieldDefinitionInput,
CredentialVaultFieldInput,
CredentialVaultFieldState,
CredentialVaultFieldType,
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.126.0"
version = "0.127.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.126.0" # x-release-please-version
__version__ = "0.127.0" # x-release-please-version
40 changes: 30 additions & 10 deletions src/kernel/resources/browser_pools.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +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.
memory: Memory for browsers in this pool. Headless: 1GiB (default), 2GiB, or 4GiB.
Headful: 8GiB (default) or 16GiB.

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

Expand Down Expand Up @@ -254,11 +255,12 @@ def update(
*,
chrome_policy: Dict[str, object] | Omit = omit,
discard_all_idle: bool | Omit = omit,
expected_network: BrowserNetworkConfigParam | Omit = omit,
extensions: Iterable[BrowserExtension] | Omit = omit,
fill_rate_per_minute: int | Omit = omit,
headless: bool | Omit = omit,
kiosk_mode: bool | Omit = omit,
memory: Literal["8GiB", "16GiB"] | Omit = omit,
memory: Literal["1GiB", "2GiB", "4GiB", "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 +304,13 @@ def update(
configuration until it is discarded (by this flag on a later update, or by
flushing the pool).

expected_network: Optional optimistic concurrency precondition. Send the network configuration
from the last pool response, or {} when it has no network configuration. The
entire update is rejected with 409 stale_network if the saved network differs,
checked atomically with the write. Omit for unconditional updates. Explicit
empty lists differ from omitted lists; route targets must match the saved
references (resolved IDs, not equivalent proxy names).

extensions: If provided, replaces the extension list. Empty array clears all
previously-selected extensions. Omit this field to leave extensions unchanged.

Expand All @@ -313,9 +322,9 @@ 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.
memory: Memory requested for newly-warmed browsers in this pool: 1GiB, 2GiB, or 4GiB for
headless, 8GiB or 16GiB for headful. 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 @@ -397,6 +406,7 @@ def update(
{
"chrome_policy": chrome_policy,
"discard_all_idle": discard_all_idle,
"expected_network": expected_network,
"extensions": extensions,
"fill_rate_per_minute": fill_rate_per_minute,
"headless": headless,
Expand Down Expand Up @@ -776,7 +786,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.
memory: Memory for browsers in this pool. Headless: 1GiB (default), 2GiB, or 4GiB.
Headful: 8GiB (default) or 16GiB.

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

Expand Down Expand Up @@ -911,11 +922,12 @@ async def update(
*,
chrome_policy: Dict[str, object] | Omit = omit,
discard_all_idle: bool | Omit = omit,
expected_network: BrowserNetworkConfigParam | Omit = omit,
extensions: Iterable[BrowserExtension] | Omit = omit,
fill_rate_per_minute: int | Omit = omit,
headless: bool | Omit = omit,
kiosk_mode: bool | Omit = omit,
memory: Literal["8GiB", "16GiB"] | Omit = omit,
memory: Literal["1GiB", "2GiB", "4GiB", "8GiB", "16GiB"] | Omit = omit,
name: str | Omit = omit,
network: BrowserNetworkConfigParam | Omit = omit,
profile: browser_pool_update_params.Profile | Omit = omit,
Expand Down Expand Up @@ -959,6 +971,13 @@ async def update(
configuration until it is discarded (by this flag on a later update, or by
flushing the pool).

expected_network: Optional optimistic concurrency precondition. Send the network configuration
from the last pool response, or {} when it has no network configuration. The
entire update is rejected with 409 stale_network if the saved network differs,
checked atomically with the write. Omit for unconditional updates. Explicit
empty lists differ from omitted lists; route targets must match the saved
references (resolved IDs, not equivalent proxy names).

extensions: If provided, replaces the extension list. Empty array clears all
previously-selected extensions. Omit this field to leave extensions unchanged.

Expand All @@ -970,9 +989,9 @@ 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.
memory: Memory requested for newly-warmed browsers in this pool: 1GiB, 2GiB, or 4GiB for
headless, 8GiB or 16GiB for headful. 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 @@ -1054,6 +1073,7 @@ async def update(
{
"chrome_policy": chrome_policy,
"discard_all_idle": discard_all_idle,
"expected_network": expected_network,
"extensions": extensions,
"fill_rate_per_minute": fill_rate_per_minute,
"headless": headless,
Expand Down
8 changes: 6 additions & 2 deletions src/kernel/resources/browsers/browsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,9 @@ def create(
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
view.

memory: Memory for a headful, non-GPU browser session. Defaults to 8GiB.
memory:
Memory for a non-GPU browser. Headless: 1GiB (default), 2GiB, or 4GiB. Headful:
8GiB (default) or 16GiB.

name: Optional human-readable name for the browser session, used to find it later in
the dashboard. Must be unique among active sessions within the project. Can be
Expand Down Expand Up @@ -954,7 +956,9 @@ async def create(
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
view.

memory: Memory for a headful, non-GPU browser session. Defaults to 8GiB.
memory:
Memory for a non-GPU browser. Headless: 1GiB (default), 2GiB, or 4GiB. Headful:
8GiB (default) or 16GiB.

name: Optional human-readable name for the browser session, used to find it later in
the dashboard. Must be unique among active sessions within the project. Can be
Expand Down
Loading
Loading