diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 8ad7375..89688e2 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.11.2"
+ ".": "0.11.3"
}
diff --git a/.stats.yml b/.stats.yml
index 385372f..4039b10 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 50
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-d3a597bbbb25c131e2c06eb9b47d70932d14a97a6f916677a195a128e196f4db.yml
-openapi_spec_hash: c967b384624017eed0abff1b53a74530
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-5ee2116982adf46664acf84b8ba4b56ba65780983506c63d9b005dab49def757.yml
+openapi_spec_hash: 42a3a519301d0e2bb2b5a71018915b55
config_hash: 0d150b61cae2dc57d3648ceae7784966
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 218fa97..dc25e19 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.11.3 (2025-09-24)
+
+Full Changelog: [v0.11.2...v0.11.3](https://github.com/onkernel/kernel-node-sdk/compare/v0.11.2...v0.11.3)
+
+### Features
+
+* Per Invocation Logs ([927cab6](https://github.com/onkernel/kernel-node-sdk/commit/927cab6e8a599d9737246220ceb54b245b3d4fc5))
+
## 0.11.2 (2025-09-24)
Full Changelog: [v0.11.1...v0.11.2](https://github.com/onkernel/kernel-node-sdk/compare/v0.11.1...v0.11.2)
diff --git a/api.md b/api.md
index 7c4d2d7..cbf98aa 100644
--- a/api.md
+++ b/api.md
@@ -52,7 +52,7 @@ Methods:
- client.invocations.retrieve(id) -> InvocationRetrieveResponse
- client.invocations.update(id, { ...params }) -> InvocationUpdateResponse
- client.invocations.deleteBrowsers(id) -> void
-- client.invocations.follow(id) -> InvocationFollowResponse
+- client.invocations.follow(id, { ...params }) -> InvocationFollowResponse
# Browsers
diff --git a/package.json b/package.json
index f94a531..19e5d15 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@onkernel/sdk",
- "version": "0.11.2",
+ "version": "0.11.3",
"description": "The official TypeScript library for the Kernel API",
"author": "Kernel <>",
"types": "dist/index.d.ts",
diff --git a/src/client.ts b/src/client.ts
index a465779..91da4f0 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -35,6 +35,7 @@ import { KernelApp } from './core/app-framework';
import {
InvocationCreateParams,
InvocationCreateResponse,
+ InvocationFollowParams,
InvocationFollowResponse,
InvocationRetrieveResponse,
InvocationStateEvent,
@@ -870,6 +871,7 @@ export declare namespace Kernel {
type InvocationFollowResponse as InvocationFollowResponse,
type InvocationCreateParams as InvocationCreateParams,
type InvocationUpdateParams as InvocationUpdateParams,
+ type InvocationFollowParams as InvocationFollowParams,
};
export {
diff --git a/src/resources/index.ts b/src/resources/index.ts
index 96c9137..3d63b75 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -33,6 +33,7 @@ export {
type InvocationFollowResponse,
type InvocationCreateParams,
type InvocationUpdateParams,
+ type InvocationFollowParams,
} from './invocations';
export { Profiles, type ProfileListResponse, type ProfileCreateParams } from './profiles';
export {
diff --git a/src/resources/invocations.ts b/src/resources/invocations.ts
index 6ff470a..bc32630 100644
--- a/src/resources/invocations.ts
+++ b/src/resources/invocations.ts
@@ -83,8 +83,13 @@ export class Invocations extends APIResource {
* const response = await client.invocations.follow('id');
* ```
*/
- follow(id: string, options?: RequestOptions): APIPromise> {
+ follow(
+ id: string,
+ query: InvocationFollowParams | undefined = {},
+ options?: RequestOptions,
+ ): APIPromise> {
return this._client.get(path`/invocations/${id}/events`, {
+ query,
...options,
headers: buildHeaders([{ Accept: 'text/event-stream' }, options?.headers]),
stream: true,
@@ -335,6 +340,13 @@ export interface InvocationUpdateParams {
output?: string;
}
+export interface InvocationFollowParams {
+ /**
+ * Show logs since the given time (RFC timestamps or durations like 5m).
+ */
+ since?: string;
+}
+
export declare namespace Invocations {
export {
type InvocationStateEvent as InvocationStateEvent,
@@ -344,5 +356,6 @@ export declare namespace Invocations {
type InvocationFollowResponse as InvocationFollowResponse,
type InvocationCreateParams as InvocationCreateParams,
type InvocationUpdateParams as InvocationUpdateParams,
+ type InvocationFollowParams as InvocationFollowParams,
};
}
diff --git a/src/version.ts b/src/version.ts
index b818b4c..e2bf0d1 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.11.2'; // x-release-please-version
+export const VERSION = '0.11.3'; // x-release-please-version
diff --git a/tests/api-resources/invocations.test.ts b/tests/api-resources/invocations.test.ts
index baa3790..309612a 100644
--- a/tests/api-resources/invocations.test.ts
+++ b/tests/api-resources/invocations.test.ts
@@ -87,4 +87,16 @@ describe('resource invocations', () => {
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});
+
+ // Prism doesn't support text/event-stream responses
+ test.skip('follow: request options and params are passed correctly', async () => {
+ // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
+ await expect(
+ client.invocations.follow(
+ 'id',
+ { since: '2025-06-20T12:00:00Z' },
+ { path: '/_stainless_unknown_path' },
+ ),
+ ).rejects.toThrow(Kernel.NotFoundError);
+ });
});