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.110.0"
".": "0.111.0"
}
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
configured_endpoints: 165
configured_endpoints: 169
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Changelog

## [0.111.0](https://github.com/kernel/kernel-python-sdk/compare/v0.110.0...v0.111.0) (2026-09-22)


### Features

* Allow managed auth logins to disable learned skills ([e230ce3](https://github.com/kernel/kernel-python-sdk/commit/e230ce3a684ce7723256170443ba0b84b08310a4))
* Distinguish optimistic managed auth reauth ([41059ae](https://github.com/kernel/kernel-python-sdk/commit/41059ae6d345b924d7e508e43a8b1d0842c58556))
* Implement Search API v1 providers ([76b3d88](https://github.com/kernel/kernel-python-sdk/commit/76b3d8871e29d47cfda20f68ab23152daf1790c6))
* Persist stable managed auth completion timestamps ([17a7960](https://github.com/kernel/kernel-python-sdk/commit/17a7960d9304fdceb54d59b09277651b6166fdb1))
* Publish restricted_route_unavailable and unknown proxy_error codes ([64805ae](https://github.com/kernel/kernel-python-sdk/commit/64805ae68f0978264fb77801e8e94a470a039e94))
* Support native prepared Adyen Sessions checkout ([5f2df0a](https://github.com/kernel/kernel-python-sdk/commit/5f2df0a4170aa146eabb23f576195d1a06621925))

## [0.110.0](https://github.com/kernel/kernel-python-sdk/compare/v0.109.0...v0.110.0) (2026-09-18)


Expand Down
37 changes: 37 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -735,3 +735,40 @@ Methods:
- <code title="delete /org/credential_providers/{id}">client.credential_providers.<a href="./src/kernel/resources/credential_providers.py">delete</a>(id) -> None</code>
- <code title="get /org/credential_providers/{id}/items">client.credential_providers.<a href="./src/kernel/resources/credential_providers.py">list_items</a>(id) -> <a href="./src/kernel/types/credential_provider_list_items_response.py">CredentialProviderListItemsResponse</a></code>
- <code title="post /org/credential_providers/{id}/test">client.credential_providers.<a href="./src/kernel/resources/credential_providers.py">test</a>(id) -> <a href="./src/kernel/types/credential_provider_test_result.py">CredentialProviderTestResult</a></code>

# Search

Types:

```python
from kernel.types import Attempt, ProviderTarget, Request, Result, Search, Strategy, Usage, Warning
```

Methods:

- <code title="post /search">client.search.<a href="./src/kernel/resources/search/search.py">create</a>(\*\*<a href="src/kernel/types/search_create_params.py">params</a>) -> <a href="./src/kernel/types/search/search.py">Search</a></code>
- <code title="get /search/{id}">client.search.<a href="./src/kernel/resources/search/search.py">retrieve</a>(id) -> <a href="./src/kernel/types/search/search.py">Search</a></code>

## Contents

Types:

```python
from kernel.types.search import FetchRequest, Response
```

Methods:

- <code title="post /search/{id}/contents">client.search.contents.<a href="./src/kernel/resources/search/contents.py">fetch</a>(id, \*\*<a href="src/kernel/types/search/content_fetch_params.py">params</a>) -> None</code>

## Providers

Types:

```python
from kernel.types.search import Provider, ProviderListResponse
```

Methods:

- <code title="get /search/providers">client.search.providers.<a href="./src/kernel/resources/search/providers.py">list</a>(\*\*<a href="src/kernel/types/search/provider_list_params.py">params</a>) -> <a href="./src/kernel/types/search/provider_list_response.py">ProviderListResponse</a></code>
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.110.0"
version = "0.111.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
44 changes: 44 additions & 0 deletions src/kernel/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
from .resources import (
apps,
auth,
search,
vaults,
proxies,
api_keys,
Expand Down Expand Up @@ -85,6 +86,7 @@
from .resources.deployments import DeploymentsResource, AsyncDeploymentsResource
from .resources.invocations import InvocationsResource, AsyncInvocationsResource
from .resources.browser_pools import BrowserPoolsResource, AsyncBrowserPoolsResource
from .resources.search.search import SearchResource, AsyncSearchResource
from .resources.vaults.vaults import VaultsResource, AsyncVaultsResource
from .resources.browsers.browsers import BrowsersResource, AsyncBrowsersResource
from .resources.projects.projects import ProjectsResource, AsyncProjectsResource
Expand Down Expand Up @@ -348,6 +350,13 @@ def credential_providers(self) -> CredentialProvidersResource:

return CredentialProvidersResource(self)

@cached_property
def search(self) -> SearchResource:
"""Search the web and retrieve content for selected results."""
from .resources.search import SearchResource

return SearchResource(self)

@cached_property
def with_raw_response(self) -> KernelWithRawResponse:
return KernelWithRawResponse(self)
Expand Down Expand Up @@ -752,6 +761,13 @@ def credential_providers(self) -> AsyncCredentialProvidersResource:

return AsyncCredentialProvidersResource(self)

@cached_property
def search(self) -> AsyncSearchResource:
"""Search the web and retrieve content for selected results."""
from .resources.search import AsyncSearchResource

return AsyncSearchResource(self)

@cached_property
def with_raw_response(self) -> AsyncKernelWithRawResponse:
return AsyncKernelWithRawResponse(self)
Expand Down Expand Up @@ -1058,6 +1074,13 @@ def credential_providers(self) -> credential_providers.CredentialProvidersResour

return CredentialProvidersResourceWithRawResponse(self._client.credential_providers)

@cached_property
def search(self) -> search.SearchResourceWithRawResponse:
"""Search the web and retrieve content for selected results."""
from .resources.search import SearchResourceWithRawResponse

return SearchResourceWithRawResponse(self._client.search)


class AsyncKernelWithRawResponse:
_client: AsyncKernel
Expand Down Expand Up @@ -1196,6 +1219,13 @@ def credential_providers(self) -> credential_providers.AsyncCredentialProvidersR

return AsyncCredentialProvidersResourceWithRawResponse(self._client.credential_providers)

@cached_property
def search(self) -> search.AsyncSearchResourceWithRawResponse:
"""Search the web and retrieve content for selected results."""
from .resources.search import AsyncSearchResourceWithRawResponse

return AsyncSearchResourceWithRawResponse(self._client.search)


class KernelWithStreamedResponse:
_client: Kernel
Expand Down Expand Up @@ -1334,6 +1364,13 @@ def credential_providers(self) -> credential_providers.CredentialProvidersResour

return CredentialProvidersResourceWithStreamingResponse(self._client.credential_providers)

@cached_property
def search(self) -> search.SearchResourceWithStreamingResponse:
"""Search the web and retrieve content for selected results."""
from .resources.search import SearchResourceWithStreamingResponse

return SearchResourceWithStreamingResponse(self._client.search)


class AsyncKernelWithStreamedResponse:
_client: AsyncKernel
Expand Down Expand Up @@ -1472,6 +1509,13 @@ def credential_providers(self) -> credential_providers.AsyncCredentialProvidersR

return AsyncCredentialProvidersResourceWithStreamingResponse(self._client.credential_providers)

@cached_property
def search(self) -> search.AsyncSearchResourceWithStreamingResponse:
"""Search the web and retrieve content for selected results."""
from .resources.search import AsyncSearchResourceWithStreamingResponse

return AsyncSearchResourceWithStreamingResponse(self._client.search)


Client = Kernel

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.110.0" # x-release-please-version
__version__ = "0.111.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 .search import (
SearchResource,
AsyncSearchResource,
SearchResourceWithRawResponse,
AsyncSearchResourceWithRawResponse,
SearchResourceWithStreamingResponse,
AsyncSearchResourceWithStreamingResponse,
)
from .vaults import (
VaultsResource,
AsyncVaultsResource,
Expand Down Expand Up @@ -268,4 +276,10 @@
"AsyncCredentialProvidersResourceWithRawResponse",
"CredentialProvidersResourceWithStreamingResponse",
"AsyncCredentialProvidersResourceWithStreamingResponse",
"SearchResource",
"AsyncSearchResource",
"SearchResourceWithRawResponse",
"AsyncSearchResourceWithRawResponse",
"SearchResourceWithStreamingResponse",
"AsyncSearchResourceWithStreamingResponse",
]
12 changes: 12 additions & 0 deletions src/kernel/resources/auth/connections.py
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,7 @@ def login(
browser_telemetry: Optional[connection_login_params.BrowserTelemetry] | Omit = omit,
proxy: connection_login_params.Proxy | Omit = omit,
record_session: bool | Omit = omit,
skill_mode: Literal["enabled", "disabled"] | 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.
extra_headers: Headers | None = None,
Expand All @@ -502,6 +503,10 @@ def login(
record_session: Override the connection's default for recording this login's browser session.
When omitted, the connection's record_session default is used.

skill_mode: Controls whether this login reads and writes learned domain skills. Automatic
reauths inherit the selected mode until a later accepted login sets enabled or
omits this field. Defaults to enabled when omitted.

extra_headers: Send extra headers

extra_query: Add additional query parameters to the request
Expand All @@ -520,6 +525,7 @@ def login(
"browser_telemetry": browser_telemetry,
"proxy": proxy,
"record_session": record_session,
"skill_mode": skill_mode,
},
connection_login_params.ConnectionLoginParams,
),
Expand Down Expand Up @@ -1100,6 +1106,7 @@ async def login(
browser_telemetry: Optional[connection_login_params.BrowserTelemetry] | Omit = omit,
proxy: connection_login_params.Proxy | Omit = omit,
record_session: bool | Omit = omit,
skill_mode: Literal["enabled", "disabled"] | 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.
extra_headers: Headers | None = None,
Expand All @@ -1125,6 +1132,10 @@ async def login(
record_session: Override the connection's default for recording this login's browser session.
When omitted, the connection's record_session default is used.

skill_mode: Controls whether this login reads and writes learned domain skills. Automatic
reauths inherit the selected mode until a later accepted login sets enabled or
omits this field. Defaults to enabled when omitted.

extra_headers: Send extra headers

extra_query: Add additional query parameters to the request
Expand All @@ -1143,6 +1154,7 @@ async def login(
"browser_telemetry": browser_telemetry,
"proxy": proxy,
"record_session": record_session,
"skill_mode": skill_mode,
},
connection_login_params.ConnectionLoginParams,
),
Expand Down
47 changes: 47 additions & 0 deletions src/kernel/resources/search/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from .search import (
SearchResource,
AsyncSearchResource,
SearchResourceWithRawResponse,
AsyncSearchResourceWithRawResponse,
SearchResourceWithStreamingResponse,
AsyncSearchResourceWithStreamingResponse,
)
from .contents import (
ContentsResource,
AsyncContentsResource,
ContentsResourceWithRawResponse,
AsyncContentsResourceWithRawResponse,
ContentsResourceWithStreamingResponse,
AsyncContentsResourceWithStreamingResponse,
)
from .providers import (
ProvidersResource,
AsyncProvidersResource,
ProvidersResourceWithRawResponse,
AsyncProvidersResourceWithRawResponse,
ProvidersResourceWithStreamingResponse,
AsyncProvidersResourceWithStreamingResponse,
)

__all__ = [
"ContentsResource",
"AsyncContentsResource",
"ContentsResourceWithRawResponse",
"AsyncContentsResourceWithRawResponse",
"ContentsResourceWithStreamingResponse",
"AsyncContentsResourceWithStreamingResponse",
"ProvidersResource",
"AsyncProvidersResource",
"ProvidersResourceWithRawResponse",
"AsyncProvidersResourceWithRawResponse",
"ProvidersResourceWithStreamingResponse",
"AsyncProvidersResourceWithStreamingResponse",
"SearchResource",
"AsyncSearchResource",
"SearchResourceWithRawResponse",
"AsyncSearchResourceWithRawResponse",
"SearchResourceWithStreamingResponse",
"AsyncSearchResourceWithStreamingResponse",
]
Loading
Loading