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.2.0"
".": "0.3.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 7
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-39aa058a60035c34a636e7f580b4b9c76b05400ae401ef04a761572b20a5425b.yml
openapi_spec_hash: bb79a204f9edb6b6ccfe783a0a82a423
config_hash: 3eb1ed1dd0067258984b31d53a0dab48
configured_endpoints: 10
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-3edc7a0eef4a0d4495782efbdb0d9b777a55aee058dab119f90de56019441326.yml
openapi_spec_hash: dff0b1efa1c1614cf770ed8327cefab2
config_hash: cb04a4d88ee9f530b303ca57ff7090b3
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## 0.3.0 (2025-05-22)

Full Changelog: [v0.2.0...v0.3.0](https://github.com/onkernel/kernel-node-sdk/compare/v0.2.0...v0.3.0)

### Features

* **api:** update via SDK Studio ([4203ce6](https://github.com/onkernel/kernel-node-sdk/commit/4203ce6729274b73b8cfec048b149405098a0295))
* **api:** update via SDK Studio ([17ea405](https://github.com/onkernel/kernel-node-sdk/commit/17ea40587b26c15bf6d2fb8ac7521d6a635bad9c))
* **api:** update via SDK Studio ([f8bf6c3](https://github.com/onkernel/kernel-node-sdk/commit/f8bf6c3b395a702ecdfe6f1517416bdeadf0b726))
* **api:** update via SDK Studio ([4164908](https://github.com/onkernel/kernel-node-sdk/commit/416490808559874428ef93270296235a8eaeb046))


### Chores

* **docs:** grammar improvements ([b07afdd](https://github.com/onkernel/kernel-node-sdk/commit/b07afdd965c35a2eafc2c3604cec0c0bd76d8abd))

## 0.2.0 (2025-05-21)

Full Changelog: [v0.1.0...v0.2.0](https://github.com/onkernel/kernel-node-sdk/compare/v0.1.0...v0.2.0)
Expand Down
35 changes: 21 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ const client = new Kernel({
});

async function main() {
const params: Kernel.BrowserCreateParams = { invocation_id: 'REPLACE_ME' };
const params: Kernel.BrowserCreateParams = {
invocation_id: 'REPLACE_ME',
persistence: { id: 'browser-for-user-1234' },
};
const browser: Kernel.BrowserCreateResponse = await client.browsers.create(params);
}

Expand Down Expand Up @@ -117,15 +120,17 @@ a subclass of `APIError` will be thrown:
<!-- prettier-ignore -->
```ts
async function main() {
const browser = await client.browsers.create({ invocation_id: 'REPLACE_ME' }).catch(async (err) => {
if (err instanceof Kernel.APIError) {
console.log(err.status); // 400
console.log(err.name); // BadRequestError
console.log(err.headers); // {server: 'nginx', ...}
} else {
throw err;
}
});
const browser = await client.browsers
.create({ invocation_id: 'REPLACE_ME', persistence: { id: 'browser-for-user-1234' } })
.catch(async (err) => {
if (err instanceof Kernel.APIError) {
console.log(err.status); // 400
console.log(err.name); // BadRequestError
console.log(err.headers); // {server: 'nginx', ...}
} else {
throw err;
}
});
}

main();
Expand Down Expand Up @@ -160,7 +165,7 @@ const client = new Kernel({
});

// Or, configure per-request:
await client.browsers.create({ invocation_id: 'REPLACE_ME' }, {
await client.browsers.create({ invocation_id: 'REPLACE_ME', persistence: { id: 'browser-for-user-1234' } }, {
maxRetries: 5,
});
```
Expand All @@ -177,7 +182,7 @@ const client = new Kernel({
});

// Override per-request:
await client.browsers.create({ invocation_id: 'REPLACE_ME' }, {
await client.browsers.create({ invocation_id: 'REPLACE_ME', persistence: { id: 'browser-for-user-1234' } }, {
timeout: 5 * 1000,
});
```
Expand All @@ -200,12 +205,14 @@ Unlike `.asResponse()` this method consumes the body, returning once it is parse
```ts
const client = new Kernel();

const response = await client.browsers.create({ invocation_id: 'REPLACE_ME' }).asResponse();
const response = await client.browsers
.create({ invocation_id: 'REPLACE_ME', persistence: { id: 'browser-for-user-1234' } })
.asResponse();
console.log(response.headers.get('X-My-Header'));
console.log(response.statusText); // access the underlying Response object

const { data: browser, response: raw } = await client.browsers
.create({ invocation_id: 'REPLACE_ME' })
.create({ invocation_id: 'REPLACE_ME', persistence: { id: 'browser-for-user-1234' } })
.withResponse();
console.log(raw.headers.get('X-My-Header'));
console.log(browser.session_id);
Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ before making any information public.
## Reporting Non-SDK Related Security Issues

If you encounter security issues that are not directly related to SDKs but pertain to the services
or products provided by Kernel please follow the respective company's security reporting guidelines.
or products provided by Kernel, please follow the respective company's security reporting guidelines.

---

Expand Down
5 changes: 5 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,15 @@ Methods:

Types:

- <code><a href="./src/resources/browsers.ts">BrowserPersistence</a></code>
- <code><a href="./src/resources/browsers.ts">BrowserCreateResponse</a></code>
- <code><a href="./src/resources/browsers.ts">BrowserRetrieveResponse</a></code>
- <code><a href="./src/resources/browsers.ts">BrowserListResponse</a></code>

Methods:

- <code title="post /browsers">client.browsers.<a href="./src/resources/browsers.ts">create</a>({ ...params }) -> BrowserCreateResponse</code>
- <code title="get /browsers/{id}">client.browsers.<a href="./src/resources/browsers.ts">retrieve</a>(id) -> BrowserRetrieveResponse</code>
- <code title="get /browsers">client.browsers.<a href="./src/resources/browsers.ts">list</a>() -> BrowserListResponse</code>
- <code title="delete /browsers">client.browsers.<a href="./src/resources/browsers.ts">delete</a>({ ...params }) -> void</code>
- <code title="delete /browsers/{id}">client.browsers.<a href="./src/resources/browsers.ts">deleteByID</a>(id) -> void</code>
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@onkernel/sdk",
"version": "0.2.0",
"version": "0.3.0",
"description": "The official TypeScript library for the Kernel API",
"author": "Kernel <>",
"types": "dist/index.d.ts",
Expand Down
6 changes: 6 additions & 0 deletions src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ import { FinalRequestOptions, RequestOptions } from './internal/request-options'
import {
BrowserCreateParams,
BrowserCreateResponse,
BrowserDeleteParams,
BrowserListResponse,
BrowserPersistence,
BrowserRetrieveResponse,
Browsers,
} from './resources/browsers';
Expand Down Expand Up @@ -744,8 +747,11 @@ export declare namespace Kernel {

export {
Browsers as Browsers,
type BrowserPersistence as BrowserPersistence,
type BrowserCreateResponse as BrowserCreateResponse,
type BrowserRetrieveResponse as BrowserRetrieveResponse,
type BrowserListResponse as BrowserListResponse,
type BrowserCreateParams as BrowserCreateParams,
type BrowserDeleteParams as BrowserDeleteParams,
};
}
2 changes: 1 addition & 1 deletion src/resources/apps/invocations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export class Invocations extends APIResource {
* @example
* ```ts
* const invocation = await client.apps.invocations.retrieve(
* 'ckqwer3o20000jb9s7abcdef',
* 'rr33xuugxj9h0bkf1rdt2bet',
* );
* ```
*/
Expand Down
115 changes: 113 additions & 2 deletions src/resources/browsers.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import { APIResource } from '../core/resource';
import * as BrowsersAPI from './browsers';
import { APIPromise } from '../core/api-promise';
import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';

Expand All @@ -12,7 +14,7 @@ export class Browsers extends APIResource {
* @example
* ```ts
* const browser = await client.browsers.create({
* invocation_id: 'ckqwer3o20000jb9s7abcdef',
* invocation_id: 'rr33xuugxj9h0bkf1rdt2bet',
* });
* ```
*/
Expand All @@ -26,13 +28,71 @@ export class Browsers extends APIResource {
* @example
* ```ts
* const browser = await client.browsers.retrieve(
* 'e5bf36fe-9247-4e2b-8b5a-2f594cc1c073',
* 'htzv5orfit78e1m2biiifpbv',
* );
* ```
*/
retrieve(id: string, options?: RequestOptions): APIPromise<BrowserRetrieveResponse> {
return this._client.get(path`/browsers/${id}`, options);
}

/**
* List active browser sessions for the authenticated user
*
* @example
* ```ts
* const browsers = await client.browsers.list();
* ```
*/
list(options?: RequestOptions): APIPromise<BrowserListResponse> {
return this._client.get('/browsers', options);
}

/**
* Delete a persistent browser session by persistent_id query parameter.
*
* @example
* ```ts
* await client.browsers.delete({
* persistent_id: 'persistent_id',
* });
* ```
*/
delete(params: BrowserDeleteParams, options?: RequestOptions): APIPromise<void> {
const { persistent_id } = params;
return this._client.delete('/browsers', {
query: { persistent_id },
...options,
headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
});
}

/**
* Delete Browser Session by ID
*
* @example
* ```ts
* await client.browsers.deleteByID(
* 'htzv5orfit78e1m2biiifpbv',
* );
* ```
*/
deleteByID(id: string, options?: RequestOptions): APIPromise<void> {
return this._client.delete(path`/browsers/${id}`, {
...options,
headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
});
}
}

/**
* Optional persistence configuration for the browser session.
*/
export interface BrowserPersistence {
/**
* Unique identifier for the persistent browser session.
*/
id: string;
}

export interface BrowserCreateResponse {
Expand All @@ -50,6 +110,11 @@ export interface BrowserCreateResponse {
* Unique identifier for the browser session
*/
session_id: string;

/**
* Optional persistence configuration for the browser session.
*/
persistence?: BrowserPersistence;
}

export interface BrowserRetrieveResponse {
Expand All @@ -67,19 +132,65 @@ export interface BrowserRetrieveResponse {
* Unique identifier for the browser session
*/
session_id: string;

/**
* Optional persistence configuration for the browser session.
*/
persistence?: BrowserPersistence;
}

export type BrowserListResponse = Array<BrowserListResponse.BrowserListResponseItem>;

export namespace BrowserListResponse {
export interface BrowserListResponseItem {
/**
* Remote URL for live viewing the browser session
*/
browser_live_view_url: string;

/**
* Websocket URL for Chrome DevTools Protocol connections to the browser session
*/
cdp_ws_url: string;

/**
* Unique identifier for the browser session
*/
session_id: string;

/**
* Optional persistence configuration for the browser session.
*/
persistence?: BrowsersAPI.BrowserPersistence;
}
}

export interface BrowserCreateParams {
/**
* action invocation ID
*/
invocation_id: string;

/**
* Optional persistence configuration for the browser session.
*/
persistence?: BrowserPersistence;
}

export interface BrowserDeleteParams {
/**
* Persistent browser identifier
*/
persistent_id: string;
}

export declare namespace Browsers {
export {
type BrowserPersistence as BrowserPersistence,
type BrowserCreateResponse as BrowserCreateResponse,
type BrowserRetrieveResponse as BrowserRetrieveResponse,
type BrowserListResponse as BrowserListResponse,
type BrowserCreateParams as BrowserCreateParams,
type BrowserDeleteParams as BrowserDeleteParams,
};
}
3 changes: 3 additions & 0 deletions src/resources/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
export { Apps, type AppListResponse, type AppListParams } from './apps/apps';
export {
Browsers,
type BrowserPersistence,
type BrowserCreateResponse,
type BrowserRetrieveResponse,
type BrowserListResponse,
type BrowserCreateParams,
type BrowserDeleteParams,
} from './browsers';
2 changes: 1 addition & 1 deletion src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = '0.2.0'; // x-release-please-version
export const VERSION = '0.3.0'; // x-release-please-version
2 changes: 1 addition & 1 deletion tests/api-resources/apps/invocations.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ describe('resource invocations', () => {

// skipped: tests are disabled for the time being
test.skip('retrieve', async () => {
const responsePromise = client.apps.invocations.retrieve('ckqwer3o20000jb9s7abcdef');
const responsePromise = client.apps.invocations.retrieve('rr33xuugxj9h0bkf1rdt2bet');
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
Expand Down
Loading