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.6.3"
".": "0.6.4"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 16
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-ff8ccba8b5409eaa1128df9027582cb63f66e8accd75e511f70b7c27ef26c9ae.yml
openapi_spec_hash: 1dbacc339695a7c78718f90f791d3f01
config_hash: b8e1fff080fbaa22656ab0a57b591777
configured_endpoints: 17
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-2eeb61205775c5997abf8154cd6f6fe81a1e83870eff10050b17ed415aa7860b.yml
openapi_spec_hash: 63405add4a3f53718f8183cbb8c1a22f
config_hash: 00ec9df250b9dc077f8d3b93a442d252
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Changelog

## 0.6.4 (2025-06-27)

Full Changelog: [v0.6.3...v0.6.4](https://github.com/onkernel/kernel-python-sdk/compare/v0.6.3...v0.6.4)

### Features

* **api:** add GET deployments endpoint ([ade7884](https://github.com/onkernel/kernel-python-sdk/commit/ade788484f181ebfb516d831ee01aba9b9ef4037))
* **api:** deployments ([681895c](https://github.com/onkernel/kernel-python-sdk/commit/681895c60447b9ac6deaa32cf4031618a242f274))
* **api:** manual updates ([93870c1](https://github.com/onkernel/kernel-python-sdk/commit/93870c158c0b5b638483b0fa94ce1c2b1484db48))


### Bug Fixes

* **ci:** release-doctor — report correct token name ([ab1f806](https://github.com/onkernel/kernel-python-sdk/commit/ab1f806916ffa510799f2780ba1e770baedc0933))

## 0.6.3 (2025-06-25)

Full Changelog: [v0.6.2...v0.6.3](https://github.com/onkernel/kernel-python-sdk/compare/v0.6.2...v0.6.3)
Expand Down
4 changes: 3 additions & 1 deletion api.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Shared Types

```python
from kernel.types import ErrorDetail, ErrorEvent, ErrorModel, HeartbeatEvent, LogEvent
from kernel.types import AppAction, ErrorDetail, ErrorEvent, ErrorModel, HeartbeatEvent, LogEvent
```

# Deployments
Expand All @@ -13,6 +13,7 @@ from kernel.types import (
DeploymentStateEvent,
DeploymentCreateResponse,
DeploymentRetrieveResponse,
DeploymentListResponse,
DeploymentFollowResponse,
)
```
Expand All @@ -21,6 +22,7 @@ Methods:

- <code title="post /deployments">client.deployments.<a href="./src/kernel/resources/deployments.py">create</a>(\*\*<a href="src/kernel/types/deployment_create_params.py">params</a>) -> <a href="./src/kernel/types/deployment_create_response.py">DeploymentCreateResponse</a></code>
- <code title="get /deployments/{id}">client.deployments.<a href="./src/kernel/resources/deployments.py">retrieve</a>(id) -> <a href="./src/kernel/types/deployment_retrieve_response.py">DeploymentRetrieveResponse</a></code>
- <code title="get /deployments">client.deployments.<a href="./src/kernel/resources/deployments.py">list</a>(\*\*<a href="src/kernel/types/deployment_list_params.py">params</a>) -> <a href="./src/kernel/types/deployment_list_response.py">DeploymentListResponse</a></code>
- <code title="get /deployments/{id}/events">client.deployments.<a href="./src/kernel/resources/deployments.py">follow</a>(id, \*\*<a href="src/kernel/types/deployment_follow_params.py">params</a>) -> <a href="./src/kernel/types/deployment_follow_response.py">DeploymentFollowResponse</a></code>

# Apps
Expand Down
2 changes: 1 addition & 1 deletion bin/check-release-environment
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
errors=()

if [ -z "${PYPI_TOKEN}" ]; then
errors+=("The KERNEL_PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
errors+=("The PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
fi

lenErrors=${#errors[@]}
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.6.3"
version = "0.6.4"
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.6.3" # x-release-please-version
__version__ = "0.6.4" # x-release-please-version
91 changes: 90 additions & 1 deletion src/kernel/resources/deployments.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import httpx

from ..types import deployment_create_params, deployment_follow_params
from ..types import deployment_list_params, deployment_create_params, deployment_follow_params
from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
from .._utils import extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform
from .._compat import cached_property
Expand All @@ -20,6 +20,7 @@
)
from .._streaming import Stream, AsyncStream
from .._base_client import make_request_options
from ..types.deployment_list_response import DeploymentListResponse
from ..types.deployment_create_response import DeploymentCreateResponse
from ..types.deployment_follow_response import DeploymentFollowResponse
from ..types.deployment_retrieve_response import DeploymentRetrieveResponse
Expand Down Expand Up @@ -146,6 +147,44 @@ def retrieve(
cast_to=DeploymentRetrieveResponse,
)

def list(
self,
*,
app_name: str | NotGiven = NOT_GIVEN,
# 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,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> DeploymentListResponse:
"""List deployments.

Optionally filter by application name.

Args:
app_name: Filter results by application name.

extra_headers: Send extra headers

extra_query: Add additional query parameters to the request

extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds
"""
return self._get(
"/deployments",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=maybe_transform({"app_name": app_name}, deployment_list_params.DeploymentListParams),
),
cast_to=DeploymentListResponse,
)

def follow(
self,
id: str,
Expand Down Expand Up @@ -313,6 +352,44 @@ async def retrieve(
cast_to=DeploymentRetrieveResponse,
)

async def list(
self,
*,
app_name: str | NotGiven = NOT_GIVEN,
# 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,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> DeploymentListResponse:
"""List deployments.

Optionally filter by application name.

Args:
app_name: Filter results by application name.

extra_headers: Send extra headers

extra_query: Add additional query parameters to the request

extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds
"""
return await self._get(
"/deployments",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=await async_maybe_transform({"app_name": app_name}, deployment_list_params.DeploymentListParams),
),
cast_to=DeploymentListResponse,
)

async def follow(
self,
id: str,
Expand Down Expand Up @@ -371,6 +448,9 @@ def __init__(self, deployments: DeploymentsResource) -> None:
self.retrieve = to_raw_response_wrapper(
deployments.retrieve,
)
self.list = to_raw_response_wrapper(
deployments.list,
)
self.follow = to_raw_response_wrapper(
deployments.follow,
)
Expand All @@ -386,6 +466,9 @@ def __init__(self, deployments: AsyncDeploymentsResource) -> None:
self.retrieve = async_to_raw_response_wrapper(
deployments.retrieve,
)
self.list = async_to_raw_response_wrapper(
deployments.list,
)
self.follow = async_to_raw_response_wrapper(
deployments.follow,
)
Expand All @@ -401,6 +484,9 @@ def __init__(self, deployments: DeploymentsResource) -> None:
self.retrieve = to_streamed_response_wrapper(
deployments.retrieve,
)
self.list = to_streamed_response_wrapper(
deployments.list,
)
self.follow = to_streamed_response_wrapper(
deployments.follow,
)
Expand All @@ -416,6 +502,9 @@ def __init__(self, deployments: AsyncDeploymentsResource) -> None:
self.retrieve = async_to_streamed_response_wrapper(
deployments.retrieve,
)
self.list = async_to_streamed_response_wrapper(
deployments.list,
)
self.follow = async_to_streamed_response_wrapper(
deployments.follow,
)
3 changes: 3 additions & 0 deletions src/kernel/types/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from .shared import (
LogEvent as LogEvent,
AppAction as AppAction,
ErrorEvent as ErrorEvent,
ErrorModel as ErrorModel,
ErrorDetail as ErrorDetail,
Expand All @@ -15,11 +16,13 @@
from .browser_create_params import BrowserCreateParams as BrowserCreateParams
from .browser_delete_params import BrowserDeleteParams as BrowserDeleteParams
from .browser_list_response import BrowserListResponse as BrowserListResponse
from .deployment_list_params import DeploymentListParams as DeploymentListParams
from .deployment_state_event import DeploymentStateEvent as DeploymentStateEvent
from .invocation_state_event import InvocationStateEvent as InvocationStateEvent
from .browser_create_response import BrowserCreateResponse as BrowserCreateResponse
from .deployment_create_params import DeploymentCreateParams as DeploymentCreateParams
from .deployment_follow_params import DeploymentFollowParams as DeploymentFollowParams
from .deployment_list_response import DeploymentListResponse as DeploymentListResponse
from .invocation_create_params import InvocationCreateParams as InvocationCreateParams
from .invocation_update_params import InvocationUpdateParams as InvocationUpdateParams
from .browser_persistence_param import BrowserPersistenceParam as BrowserPersistenceParam
Expand Down
12 changes: 8 additions & 4 deletions src/kernel/types/app_list_response.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import Dict, List, Optional
from typing import Dict, List
from typing_extensions import Literal, TypeAlias

from .._models import BaseModel
from .shared.app_action import AppAction

__all__ = ["AppListResponse", "AppListResponseItem"]

Expand All @@ -12,20 +13,23 @@ class AppListResponseItem(BaseModel):
id: str
"""Unique identifier for the app version"""

actions: List[AppAction]
"""List of actions available on the app"""

app_name: str
"""Name of the application"""

deployment: str
"""Deployment ID"""

env_vars: Dict[str, str]
"""Environment variables configured for this app version"""

region: Literal["aws.us-east-1a"]
"""Deployment region code"""

version: str
"""Version label for the application"""

env_vars: Optional[Dict[str, str]] = None
"""Environment variables configured for this app version"""


AppListResponse: TypeAlias = List[AppListResponseItem]
8 changes: 2 additions & 6 deletions src/kernel/types/apps/deployment_create_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,9 @@
from typing_extensions import Literal

from ..._models import BaseModel
from ..shared.app_action import AppAction

__all__ = ["DeploymentCreateResponse", "App", "AppAction"]


class AppAction(BaseModel):
name: str
"""Name of the action"""
__all__ = ["DeploymentCreateResponse", "App"]


class App(BaseModel):
Expand Down
10 changes: 3 additions & 7 deletions src/kernel/types/deployment_follow_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,19 @@
from .._utils import PropertyInfo
from .._models import BaseModel
from .shared.log_event import LogEvent
from .shared.app_action import AppAction
from .shared.error_event import ErrorEvent
from .deployment_state_event import DeploymentStateEvent
from .shared.heartbeat_event import HeartbeatEvent

__all__ = ["DeploymentFollowResponse", "AppVersionSummaryEvent", "AppVersionSummaryEventAction"]


class AppVersionSummaryEventAction(BaseModel):
name: str
"""Name of the action"""
__all__ = ["DeploymentFollowResponse", "AppVersionSummaryEvent"]


class AppVersionSummaryEvent(BaseModel):
id: str
"""Unique identifier for the app version"""

actions: List[AppVersionSummaryEventAction]
actions: List[AppAction]
"""List of actions available on the app"""

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

from __future__ import annotations

from typing_extensions import TypedDict

__all__ = ["DeploymentListParams"]


class DeploymentListParams(TypedDict, total=False):
app_name: str
"""Filter results by application name."""
38 changes: 38 additions & 0 deletions src/kernel/types/deployment_list_response.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import Dict, List, Optional
from datetime import datetime
from typing_extensions import Literal, TypeAlias

from .._models import BaseModel

__all__ = ["DeploymentListResponse", "DeploymentListResponseItem"]


class DeploymentListResponseItem(BaseModel):
id: str
"""Unique identifier for the deployment"""

created_at: datetime
"""Timestamp when the deployment was created"""

region: Literal["aws.us-east-1a"]
"""Deployment region code"""

status: Literal["queued", "in_progress", "running", "failed", "stopped"]
"""Current status of the deployment"""

entrypoint_rel_path: Optional[str] = None
"""Relative path to the application entrypoint"""

env_vars: Optional[Dict[str, str]] = None
"""Environment variables configured for this deployment"""

status_reason: Optional[str] = None
"""Status reason"""

updated_at: Optional[datetime] = None
"""Timestamp when the deployment was last updated"""


DeploymentListResponse: TypeAlias = List[DeploymentListResponseItem]
1 change: 1 addition & 0 deletions src/kernel/types/shared/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from .log_event import LogEvent as LogEvent
from .app_action import AppAction as AppAction
from .error_event import ErrorEvent as ErrorEvent
from .error_model import ErrorModel as ErrorModel
from .error_detail import ErrorDetail as ErrorDetail
Expand Down
Loading