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.98.0"
".": "0.99.0"
}
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
configured_endpoints: 147
configured_endpoints: 158
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## [0.99.0](https://github.com/kernel/kernel-python-sdk/compare/v0.98.0...v0.99.0) (2026-09-04)


### Features

* Expose OTLP destination delivery health ([9ab1d58](https://github.com/kernel/kernel-python-sdk/commit/9ab1d583d7bb4dabba5a640883dda9f2ac248f18))
* Repair Vault SDK custom-code seals ([645ce00](https://github.com/kernel/kernel-python-sdk/commit/645ce00d68172a323d11b7e4dd4f3997cc287fe0))

## [0.98.0](https://github.com/kernel/kernel-python-sdk/compare/v0.97.0...v0.98.0) (2026-09-02)


Expand Down
47 changes: 47 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ from kernel.types import (
BrowserUsage,
Profile,
Tags,
VaultReference,
BrowserCreateResponse,
BrowserRetrieveResponse,
BrowserUpdateResponse,
Expand Down Expand Up @@ -486,6 +487,52 @@ Methods:
- <code title="post /browser_pools/{id_or_name}/flush">client.browser_pools.<a href="./src/kernel/resources/browser_pools.py">flush</a>(id_or_name) -> None</code>
- <code title="post /browser_pools/{id_or_name}/release">client.browser_pools.<a href="./src/kernel/resources/browser_pools.py">release</a>(id_or_name, \*\*<a href="src/kernel/types/browser_pool_release_params.py">params</a>) -> None</code>

# Vaults

Types:

```python
from kernel.types import Vault
```

Methods:

- <code title="get /vaults/{id_or_name}">client.vaults.<a href="./src/kernel/resources/vaults/vaults.py">retrieve</a>(id_or_name) -> <a href="./src/kernel/types/vault.py">Vault</a></code>
- <code title="get /vaults">client.vaults.<a href="./src/kernel/resources/vaults/vaults.py">list</a>(\*\*<a href="src/kernel/types/vault_list_params.py">params</a>) -> <a href="./src/kernel/types/vault.py">SyncOffsetPagination[Vault]</a></code>
- <code title="delete /vaults/{id_or_name}">client.vaults.<a href="./src/kernel/resources/vaults/vaults.py">delete</a>(id_or_name) -> None</code>
- <code title="post /vaults">client.vaults.<a href="./src/kernel/resources/vaults/vaults.py">upsert</a>(\*\*<a href="src/kernel/types/vault_upsert_params.py">params</a>) -> <a href="./src/kernel/types/vault.py">Vault</a></code>

## Items

Types:

```python
from kernel.types.vaults import (
AgentcardCheckoutAuthorization,
CardVaultItemSpec,
CardVaultItemState,
VaultCardAliases,
VaultItem,
VaultItemAction,
VaultItemEvent,
VaultPaymentMethod,
WalletVaultItemSpec,
WalletVaultItemState,
ItemListResponse,
ItemEventsResponse,
)
```

Methods:

- <code title="get /vaults/{id_or_name}/items/{key}">client.vaults.items.<a href="./src/kernel/resources/vaults/items.py">retrieve</a>(key, \*, id_or_name, \*\*<a href="src/kernel/types/vaults/item_retrieve_params.py">params</a>) -> <a href="./src/kernel/types/vaults/vault_item.py">VaultItem</a></code>
- <code title="patch /vaults/{id_or_name}/items/{key}">client.vaults.items.<a href="./src/kernel/resources/vaults/items.py">update</a>(key, \*, id_or_name, \*\*<a href="src/kernel/types/vaults/item_update_params.py">params</a>) -> <a href="./src/kernel/types/vaults/vault_item.py">VaultItem</a></code>
- <code title="get /vaults/{id_or_name}/items">client.vaults.items.<a href="./src/kernel/resources/vaults/items.py">list</a>(id_or_name) -> <a href="./src/kernel/types/vaults/item_list_response.py">ItemListResponse</a></code>
- <code title="delete /vaults/{id_or_name}/items/{key}">client.vaults.items.<a href="./src/kernel/resources/vaults/items.py">delete</a>(key, \*, id_or_name) -> None</code>
- <code title="get /vaults/{id_or_name}/items/{key}/events">client.vaults.items.<a href="./src/kernel/resources/vaults/items.py">events</a>(key, \*, id_or_name, \*\*<a href="src/kernel/types/vaults/item_events_params.py">params</a>) -> <a href="./src/kernel/types/vaults/item_events_response.py">ItemEventsResponse</a></code>
- <code title="post /vaults/{id_or_name}/items/{key}/operations">client.vaults.items.<a href="./src/kernel/resources/vaults/items.py">perform_operation</a>(key, \*, id_or_name, \*\*<a href="src/kernel/types/vaults/item_perform_operation_params.py">params</a>) -> <a href="./src/kernel/types/vaults/vault_item.py">VaultItem</a></code>
- <code title="put /vaults/{id_or_name}/items/{key}">client.vaults.items.<a href="./src/kernel/resources/vaults/items.py">upsert</a>(key, \*, id_or_name, \*\*<a href="src/kernel/types/vaults/item_upsert_params.py">params</a>) -> <a href="./src/kernel/types/vaults/vault_item.py">VaultItem</a></code>

# Credentials

Types:
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.98.0"
version = "0.99.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
38 changes: 38 additions & 0 deletions src/kernel/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
from .resources import (
apps,
auth,
vaults,
proxies,
api_keys,
browsers,
Expand All @@ -76,6 +77,7 @@
from .resources.deployments import DeploymentsResource, AsyncDeploymentsResource
from .resources.invocations import InvocationsResource, AsyncInvocationsResource
from .resources.browser_pools import BrowserPoolsResource, AsyncBrowserPoolsResource
from .resources.vaults.vaults import VaultsResource, AsyncVaultsResource
from .resources.browsers.browsers import BrowsersResource, AsyncBrowsersResource
from .resources.projects.projects import ProjectsResource, AsyncProjectsResource
from .resources.telemetry.telemetry import TelemetryResource, AsyncTelemetryResource
Expand Down Expand Up @@ -279,6 +281,12 @@ def browser_pools(self) -> BrowserPoolsResource:

return BrowserPoolsResource(self)

@cached_property
def vaults(self) -> VaultsResource:
from .resources.vaults import VaultsResource

return VaultsResource(self)

@cached_property
def credentials(self) -> CredentialsResource:
"""Create and manage credentials for authentication."""
Expand Down Expand Up @@ -662,6 +670,12 @@ def browser_pools(self) -> AsyncBrowserPoolsResource:

return AsyncBrowserPoolsResource(self)

@cached_property
def vaults(self) -> AsyncVaultsResource:
from .resources.vaults import AsyncVaultsResource

return AsyncVaultsResource(self)

@cached_property
def credentials(self) -> AsyncCredentialsResource:
"""Create and manage credentials for authentication."""
Expand Down Expand Up @@ -949,6 +963,12 @@ def browser_pools(self) -> browser_pools.BrowserPoolsResourceWithRawResponse:

return BrowserPoolsResourceWithRawResponse(self._client.browser_pools)

@cached_property
def vaults(self) -> vaults.VaultsResourceWithRawResponse:
from .resources.vaults import VaultsResourceWithRawResponse

return VaultsResourceWithRawResponse(self._client.vaults)

@cached_property
def credentials(self) -> credentials.CredentialsResourceWithRawResponse:
"""Create and manage credentials for authentication."""
Expand Down Expand Up @@ -1076,6 +1096,12 @@ def browser_pools(self) -> browser_pools.AsyncBrowserPoolsResourceWithRawRespons

return AsyncBrowserPoolsResourceWithRawResponse(self._client.browser_pools)

@cached_property
def vaults(self) -> vaults.AsyncVaultsResourceWithRawResponse:
from .resources.vaults import AsyncVaultsResourceWithRawResponse

return AsyncVaultsResourceWithRawResponse(self._client.vaults)

@cached_property
def credentials(self) -> credentials.AsyncCredentialsResourceWithRawResponse:
"""Create and manage credentials for authentication."""
Expand Down Expand Up @@ -1203,6 +1229,12 @@ def browser_pools(self) -> browser_pools.BrowserPoolsResourceWithStreamingRespon

return BrowserPoolsResourceWithStreamingResponse(self._client.browser_pools)

@cached_property
def vaults(self) -> vaults.VaultsResourceWithStreamingResponse:
from .resources.vaults import VaultsResourceWithStreamingResponse

return VaultsResourceWithStreamingResponse(self._client.vaults)

@cached_property
def credentials(self) -> credentials.CredentialsResourceWithStreamingResponse:
"""Create and manage credentials for authentication."""
Expand Down Expand Up @@ -1330,6 +1362,12 @@ def browser_pools(self) -> browser_pools.AsyncBrowserPoolsResourceWithStreamingR

return AsyncBrowserPoolsResourceWithStreamingResponse(self._client.browser_pools)

@cached_property
def vaults(self) -> vaults.AsyncVaultsResourceWithStreamingResponse:
from .resources.vaults import AsyncVaultsResourceWithStreamingResponse

return AsyncVaultsResourceWithStreamingResponse(self._client.vaults)

@cached_property
def credentials(self) -> credentials.AsyncCredentialsResourceWithStreamingResponse:
"""Create and manage credentials for authentication."""
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.98.0" # x-release-please-version
__version__ = "0.99.0" # x-release-please-version
14 changes: 14 additions & 0 deletions src/kernel/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@
AuthResourceWithStreamingResponse,
AsyncAuthResourceWithStreamingResponse,
)
from .vaults import (
VaultsResource,
AsyncVaultsResource,
VaultsResourceWithRawResponse,
AsyncVaultsResourceWithRawResponse,
VaultsResourceWithStreamingResponse,
AsyncVaultsResourceWithStreamingResponse,
)
from .proxies import (
ProxiesResource,
AsyncProxiesResource,
Expand Down Expand Up @@ -204,6 +212,12 @@
"AsyncBrowserPoolsResourceWithRawResponse",
"BrowserPoolsResourceWithStreamingResponse",
"AsyncBrowserPoolsResourceWithStreamingResponse",
"VaultsResource",
"AsyncVaultsResource",
"VaultsResourceWithRawResponse",
"AsyncVaultsResourceWithRawResponse",
"VaultsResourceWithStreamingResponse",
"AsyncVaultsResourceWithStreamingResponse",
"CredentialsResource",
"AsyncCredentialsResource",
"CredentialsResourceWithRawResponse",
Expand Down
11 changes: 11 additions & 0 deletions src/kernel/resources/browsers/browsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@
from ...types.tags_param import TagsParam
from ...types.browser_curl_response import BrowserCurlResponse
from ...types.browser_list_response import BrowserListResponse
from ...types.vault_reference_param import VaultReferenceParam
from ...lib.browser_routing.raw_http import (
stream_via_browser_route,
request_via_browser_route,
Expand Down Expand Up @@ -201,6 +202,7 @@ def create(
tags: TagsParam | Omit = omit,
telemetry: Optional[browser_create_params.Telemetry] | Omit = omit,
timeout_seconds: int | Omit = omit,
vaults: Iterable[VaultReferenceParam] | Omit = omit,
viewport: BrowserViewport | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
Expand Down Expand Up @@ -284,6 +286,9 @@ def create(
check for inactivity every 5 seconds, so the actual timeout behavior you will
see is +/- 5 seconds around the specified value.

vaults: Project-scoped vaults to link to the browser session. Links are immutable after
creation.

viewport: Initial browser window size in pixels with optional refresh rate. If omitted,
image defaults apply (1920x1080@25). For GPU images, the default is
1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted.
Expand Down Expand Up @@ -327,6 +332,7 @@ def create(
"tags": tags,
"telemetry": telemetry,
"timeout_seconds": timeout_seconds,
"vaults": vaults,
"viewport": viewport,
},
browser_create_params.BrowserCreateParams,
Expand Down Expand Up @@ -826,6 +832,7 @@ async def create(
tags: TagsParam | Omit = omit,
telemetry: Optional[browser_create_params.Telemetry] | Omit = omit,
timeout_seconds: int | Omit = omit,
vaults: Iterable[VaultReferenceParam] | Omit = omit,
viewport: BrowserViewport | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
Expand Down Expand Up @@ -909,6 +916,9 @@ async def create(
check for inactivity every 5 seconds, so the actual timeout behavior you will
see is +/- 5 seconds around the specified value.

vaults: Project-scoped vaults to link to the browser session. Links are immutable after
creation.

viewport: Initial browser window size in pixels with optional refresh rate. If omitted,
image defaults apply (1920x1080@25). For GPU images, the default is
1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted.
Expand Down Expand Up @@ -952,6 +962,7 @@ async def create(
"tags": tags,
"telemetry": telemetry,
"timeout_seconds": timeout_seconds,
"vaults": vaults,
"viewport": viewport,
},
browser_create_params.BrowserCreateParams,
Expand Down
16 changes: 8 additions & 8 deletions src/kernel/resources/config_registry/config_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,12 @@ def list(
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> SyncOffsetPagination[RecommendationSummary]:
"""
Lists unique domains previously analyzed by the selected project with their
current domain-level recommendations.
Lists unique exact targets previously analyzed by the selected project with the
recommendation produced by each target's latest analysis.

Args:
search: Case-insensitive domain search. Full URLs are reduced to their registrable
domain.
search: Case-insensitive substring search over normalized targets, including domain,
subdomain, and path.

extra_headers: Send extra headers

Expand Down Expand Up @@ -252,12 +252,12 @@ def list(
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> AsyncPaginator[RecommendationSummary, AsyncOffsetPagination[RecommendationSummary]]:
"""
Lists unique domains previously analyzed by the selected project with their
current domain-level recommendations.
Lists unique exact targets previously analyzed by the selected project with the
recommendation produced by each target's latest analysis.

Args:
search: Case-insensitive domain search. Full URLs are reduced to their registrable
domain.
search: Case-insensitive substring search over normalized targets, including domain,
subdomain, and path.

extra_headers: Send extra headers

Expand Down
33 changes: 33 additions & 0 deletions src/kernel/resources/vaults/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from .items import (
ItemsResource,
AsyncItemsResource,
ItemsResourceWithRawResponse,
AsyncItemsResourceWithRawResponse,
ItemsResourceWithStreamingResponse,
AsyncItemsResourceWithStreamingResponse,
)
from .vaults import (
VaultsResource,
AsyncVaultsResource,
VaultsResourceWithRawResponse,
AsyncVaultsResourceWithRawResponse,
VaultsResourceWithStreamingResponse,
AsyncVaultsResourceWithStreamingResponse,
)

__all__ = [
"ItemsResource",
"AsyncItemsResource",
"ItemsResourceWithRawResponse",
"AsyncItemsResourceWithRawResponse",
"ItemsResourceWithStreamingResponse",
"AsyncItemsResourceWithStreamingResponse",
"VaultsResource",
"AsyncVaultsResource",
"VaultsResourceWithRawResponse",
"AsyncVaultsResourceWithRawResponse",
"VaultsResourceWithStreamingResponse",
"AsyncVaultsResourceWithStreamingResponse",
]
Loading
Loading