From 9ab1d583d7bb4dabba5a640883dda9f2ac248f18 Mon Sep 17 00:00:00 2001 From: "kernel-internal[bot]" <260533166+kernel-internal[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 14:23:55 +0000 Subject: [PATCH 1/2] feat: Expose OTLP destination delivery health Stainless-Generated-From: ae612ef5de5a9136bfc5f8cac5c6990b9d82e233 --- .../types/telemetry/otlp_destination.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/kernel/types/telemetry/otlp_destination.py b/src/kernel/types/telemetry/otlp_destination.py index 0afe6ae8..293c2497 100644 --- a/src/kernel/types/telemetry/otlp_destination.py +++ b/src/kernel/types/telemetry/otlp_destination.py @@ -16,6 +16,13 @@ class OtlpDestination(BaseModel): id: str + consecutive_failures: int + """ + Failed deliveries since the last success, as observed by the relay process that + wrote the latest outcome. Zero means the most recently recorded outcome + succeeded. + """ + created_at: datetime endpoint: str @@ -39,3 +46,21 @@ class OtlpDestination(BaseModel): updated_at: datetime description: Optional[str] = None + + last_error: Optional[str] = None + """Sanitized class of the delivery failure recorded at `last_error_at`. + + It is retained after a later success, so its presence does not mean the + destination is currently failing. Response bodies, endpoint URLs, credentials, + and raw transport errors are never returned. + """ + + last_error_at: Optional[datetime] = None + """Timestamp of the most recent failed delivery. + + It is retained after a later success, so it can predate `last_export_at`. Read + `consecutive_failures` to tell whether the destination is currently failing. + """ + + last_export_at: Optional[datetime] = None + """Timestamp of the most recent successful delivery. Moves only on success.""" From 6937e0a381bea1f39e515bc2d8b390b7d5af8b41 Mon Sep 17 00:00:00 2001 From: "kernel-internal[bot]" <260533166+kernel-internal[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 14:28:39 +0000 Subject: [PATCH 2/2] release: 0.99.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ pyproject.toml | 2 +- src/kernel/_version.py | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a8124647..a579a434 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.98.0" + ".": "0.99.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 992c5f68..fbab455a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.99.0](https://github.com/kernel/kernel-python-sdk/compare/v0.98.0...v0.99.0) (2026-09-03) + + +### Features + +* Expose OTLP destination delivery health ([9ab1d58](https://github.com/kernel/kernel-python-sdk/commit/9ab1d583d7bb4dabba5a640883dda9f2ac248f18)) + ## [0.98.0](https://github.com/kernel/kernel-python-sdk/compare/v0.97.0...v0.98.0) (2026-09-02) diff --git a/pyproject.toml b/pyproject.toml index fbe3ab05..dc940a7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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" diff --git a/src/kernel/_version.py b/src/kernel/_version.py index 4adaa91f..18073be8 100644 --- a/src/kernel/_version.py +++ b/src/kernel/_version.py @@ -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