diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 332798e..347d8bf 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.1.0-alpha.8"
+ ".": "0.1.0-alpha.9"
}
diff --git a/.stats.yml b/.stats.yml
index 6af3fb9..cbc2ff8 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 4
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-d168b58fcf39dbd0458d132091793d3e2d0930070b7dda2d5f7f1baff20dd31b.yml
-openapi_spec_hash: b7e0fd7ee1656d7dbad57209d1584d92
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-2af763aab4c314b382e1123edc4ee3d51c0fe7977730ce6776b9fb09b29fe291.yml
+openapi_spec_hash: be02256478be81fa3f649076879850bc
config_hash: eab40627b734534462ae3b8ccd8b263b
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d51ec33..8b9e9f3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.1.0-alpha.9 (2025-05-12)
+
+Full Changelog: [v0.1.0-alpha.8...v0.1.0-alpha.9](https://github.com/onkernel/kernel-node-sdk/compare/v0.1.0-alpha.8...v0.1.0-alpha.9)
+
+### Features
+
+* **api:** update via SDK Studio ([553e10c](https://github.com/onkernel/kernel-node-sdk/commit/553e10cfd6516146d2d81fb3cce9f3f88b21aa62))
+
## 0.1.0-alpha.8 (2025-05-11)
Full Changelog: [v0.1.0-alpha.7...v0.1.0-alpha.8](https://github.com/onkernel/kernel-node-sdk/compare/v0.1.0-alpha.7...v0.1.0-alpha.8)
diff --git a/README.md b/README.md
index 9373ffc..d2163df 100644
--- a/README.md
+++ b/README.md
@@ -29,12 +29,11 @@ const client = new Kernel({
async function main() {
const response = await client.apps.deploy({
- appName: 'REPLACE_ME',
file: fs.createReadStream('path/to/file'),
version: 'REPLACE_ME',
});
- console.log(response.id);
+ console.log(response.apps);
}
main();
@@ -54,11 +53,7 @@ const client = new Kernel({
});
async function main() {
- const params: Kernel.AppDeployParams = {
- appName: 'REPLACE_ME',
- file: fs.createReadStream('path/to/file'),
- version: 'REPLACE_ME',
- };
+ const params: Kernel.AppDeployParams = { file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' };
const response: Kernel.AppDeployResponse = await client.apps.deploy(params);
}
@@ -83,37 +78,17 @@ import Kernel, { toFile } from '@onkernel/sdk';
const client = new Kernel();
// If you have access to Node `fs` we recommend using `fs.createReadStream()`:
-await client.apps.deploy({
- appName: 'my-awesome-app',
- file: fs.createReadStream('/path/to/file'),
- version: '1.0.0',
-});
+await client.apps.deploy({ file: fs.createReadStream('/path/to/file') });
// Or if you have the web `File` API you can pass a `File` instance:
-await client.apps.deploy({
- appName: 'my-awesome-app',
- file: new File(['my bytes'], 'file'),
- version: '1.0.0',
-});
+await client.apps.deploy({ file: new File(['my bytes'], 'file') });
// You can also pass a `fetch` `Response`:
-await client.apps.deploy({
- appName: 'my-awesome-app',
- file: await fetch('https://somesite/file'),
- version: '1.0.0',
-});
+await client.apps.deploy({ file: await fetch('https://somesite/file') });
// Finally, if none of the above are convenient, you can use our `toFile` helper:
-await client.apps.deploy({
- appName: 'my-awesome-app',
- file: await toFile(Buffer.from('my bytes'), 'file'),
- version: '1.0.0',
-});
-await client.apps.deploy({
- appName: 'my-awesome-app',
- file: await toFile(new Uint8Array([0, 1, 2]), 'file'),
- version: '1.0.0',
-});
+await client.apps.deploy({ file: await toFile(Buffer.from('my bytes'), 'file') });
+await client.apps.deploy({ file: await toFile(new Uint8Array([0, 1, 2]), 'file') });
```
## Handling errors
@@ -126,7 +101,7 @@ a subclass of `APIError` will be thrown:
```ts
async function main() {
const response = await client.apps
- .deploy({ appName: 'REPLACE_ME', file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' })
+ .deploy({ file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' })
.catch(async (err) => {
if (err instanceof Kernel.APIError) {
console.log(err.status); // 400
@@ -170,7 +145,7 @@ const client = new Kernel({
});
// Or, configure per-request:
-await client.apps.deploy({ appName: 'REPLACE_ME', file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' }, {
+await client.apps.deploy({ file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' }, {
maxRetries: 5,
});
```
@@ -187,7 +162,7 @@ const client = new Kernel({
});
// Override per-request:
-await client.apps.deploy({ appName: 'REPLACE_ME', file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' }, {
+await client.apps.deploy({ file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' }, {
timeout: 5 * 1000,
});
```
@@ -211,16 +186,16 @@ Unlike `.asResponse()` this method consumes the body, returning once it is parse
const client = new Kernel();
const response = await client.apps
- .deploy({ appName: 'REPLACE_ME', file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' })
+ .deploy({ file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' })
.asResponse();
console.log(response.headers.get('X-My-Header'));
console.log(response.statusText); // access the underlying Response object
const { data: response, response: raw } = await client.apps
- .deploy({ appName: 'REPLACE_ME', file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' })
+ .deploy({ file: fs.createReadStream('path/to/file'), version: 'REPLACE_ME' })
.withResponse();
console.log(raw.headers.get('X-My-Header'));
-console.log(response.id);
+console.log(response.apps);
```
### Logging
diff --git a/api.md b/api.md
index 02224e6..88e3798 100644
--- a/api.md
+++ b/api.md
@@ -20,4 +20,4 @@ Types:
Methods:
-- client.browser.createSession() -> BrowserCreateSessionResponse
+- client.browser.createSession({ ...params }) -> BrowserCreateSessionResponse
diff --git a/package.json b/package.json
index f8ba76e..7e24e0f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@onkernel/sdk",
- "version": "0.1.0-alpha.8",
+ "version": "0.1.0-alpha.9",
"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 f2cd38f..d1dfe16 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -28,7 +28,7 @@ import {
AppRetrieveInvocationResponse,
Apps,
} from './resources/apps';
-import { Browser, BrowserCreateSessionResponse } from './resources/browser';
+import { Browser, BrowserCreateSessionParams, BrowserCreateSessionResponse } from './resources/browser';
import { readEnv } from './internal/utils/env';
import { formatRequestDetails, loggerFor } from './internal/utils/log';
import { isEmptyObj } from './internal/utils/values';
@@ -751,5 +751,9 @@ export declare namespace Kernel {
type AppInvokeParams as AppInvokeParams,
};
- export { Browser as Browser, type BrowserCreateSessionResponse as BrowserCreateSessionResponse };
+ export {
+ Browser as Browser,
+ type BrowserCreateSessionResponse as BrowserCreateSessionResponse,
+ type BrowserCreateSessionParams as BrowserCreateSessionParams,
+ };
}
diff --git a/src/resources/apps.ts b/src/resources/apps.ts
index e8feb85..8219c1c 100644
--- a/src/resources/apps.ts
+++ b/src/resources/apps.ts
@@ -14,9 +14,7 @@ export class Apps extends APIResource {
* @example
* ```ts
* const response = await client.apps.deploy({
- * appName: 'my-awesome-app',
* file: fs.createReadStream('path/to/file'),
- * version: '1.0.0',
* });
* ```
*/
@@ -32,7 +30,7 @@ export class Apps extends APIResource {
* const response = await client.apps.invoke({
* actionName: 'analyze',
* appName: 'my-awesome-app',
- * payload: '{ "data": "example input" }',
+ * payload: { data: 'example input' },
* version: '1.0.0',
* });
* ```
@@ -57,10 +55,7 @@ export class Apps extends APIResource {
}
export interface AppDeployResponse {
- /**
- * ID of the deployed app version
- */
- id: string;
+ apps: Array;
/**
* Success message
@@ -73,6 +68,31 @@ export interface AppDeployResponse {
success: boolean;
}
+export namespace AppDeployResponse {
+ export interface App {
+ /**
+ * ID for the app version deployed
+ */
+ id: string;
+
+ actions: Array;
+
+ /**
+ * Name of the app
+ */
+ name: string;
+ }
+
+ export namespace App {
+ export interface Action {
+ /**
+ * Name of the action
+ */
+ name: string;
+ }
+ }
+}
+
export interface AppInvokeResponse {
/**
* ID of the invocation
@@ -108,24 +128,29 @@ export interface AppRetrieveInvocationResponse {
export interface AppDeployParams {
/**
- * Name of the application
+ * ZIP file containing the application source directory
*/
- appName: string;
+ file: Uploadable;
/**
- * ZIP file containing the application
+ * Relative path to the entrypoint of the application
*/
- file: Uploadable;
+ entrypointRelPath?: string;
/**
- * Version of the application
+ * Allow overwriting an existing app version
*/
- version: string;
+ force?: 'true' | 'false';
+
+ /**
+ * Region for deployment. Currently we only support "aws.us-east-1a"
+ */
+ region?: 'aws.us-east-1a';
/**
- * AWS region for deployment (e.g. "aws.us-east-1a")
+ * Version of the application. Can be any string.
*/
- region?: string;
+ version?: string;
}
export interface AppInvokeParams {
diff --git a/src/resources/browser.ts b/src/resources/browser.ts
index 3ab7870..2b434f5 100644
--- a/src/resources/browser.ts
+++ b/src/resources/browser.ts
@@ -8,8 +8,11 @@ export class Browser extends APIResource {
/**
* Create Browser Session
*/
- createSession(options?: RequestOptions): APIPromise {
- return this._client.post('/browser', options);
+ createSession(
+ body: BrowserCreateSessionParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/browser', { body, ...options });
}
}
@@ -30,6 +33,16 @@ export interface BrowserCreateSessionResponse {
sessionId: string;
}
+export interface BrowserCreateSessionParams {
+ /**
+ * Kernel App invocation ID
+ */
+ invocationId: string;
+}
+
export declare namespace Browser {
- export { type BrowserCreateSessionResponse as BrowserCreateSessionResponse };
+ export {
+ type BrowserCreateSessionResponse as BrowserCreateSessionResponse,
+ type BrowserCreateSessionParams as BrowserCreateSessionParams,
+ };
}
diff --git a/src/resources/index.ts b/src/resources/index.ts
index b324da1..bf366e6 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -8,4 +8,4 @@ export {
type AppDeployParams,
type AppInvokeParams,
} from './apps';
-export { Browser, type BrowserCreateSessionResponse } from './browser';
+export { Browser, type BrowserCreateSessionResponse, type BrowserCreateSessionParams } from './browser';
diff --git a/src/version.ts b/src/version.ts
index 2cc4fcd..fdbf689 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.1.0-alpha.8'; // x-release-please-version
+export const VERSION = '0.1.0-alpha.9'; // x-release-please-version
diff --git a/tests/api-resources/apps.test.ts b/tests/api-resources/apps.test.ts
index cec0d2b..7cb3c56 100644
--- a/tests/api-resources/apps.test.ts
+++ b/tests/api-resources/apps.test.ts
@@ -11,9 +11,7 @@ describe('resource apps', () => {
// skipped: tests are disabled for the time being
test.skip('deploy: only required params', async () => {
const responsePromise = client.apps.deploy({
- appName: 'my-awesome-app',
file: await toFile(Buffer.from('# my file contents'), 'README.md'),
- version: '1.0.0',
});
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
@@ -27,10 +25,11 @@ describe('resource apps', () => {
// skipped: tests are disabled for the time being
test.skip('deploy: required and optional params', async () => {
const response = await client.apps.deploy({
- appName: 'my-awesome-app',
file: await toFile(Buffer.from('# my file contents'), 'README.md'),
- version: '1.0.0',
+ entrypointRelPath: 'app.py',
+ force: 'false',
region: 'aws.us-east-1a',
+ version: '1.0.0',
});
});
@@ -39,7 +38,7 @@ describe('resource apps', () => {
const responsePromise = client.apps.invoke({
actionName: 'analyze',
appName: 'my-awesome-app',
- payload: '{ "data": "example input" }',
+ payload: { data: 'example input' },
version: '1.0.0',
});
const rawResponse = await responsePromise.asResponse();
@@ -56,7 +55,7 @@ describe('resource apps', () => {
const response = await client.apps.invoke({
actionName: 'analyze',
appName: 'my-awesome-app',
- payload: '{ "data": "example input" }',
+ payload: { data: 'example input' },
version: '1.0.0',
});
});
diff --git a/tests/api-resources/browser.test.ts b/tests/api-resources/browser.test.ts
index 6782448..012e207 100644
--- a/tests/api-resources/browser.test.ts
+++ b/tests/api-resources/browser.test.ts
@@ -9,8 +9,8 @@ const client = new Kernel({
describe('resource browser', () => {
// skipped: tests are disabled for the time being
- test.skip('createSession', async () => {
- const responsePromise = client.browser.createSession();
+ test.skip('createSession: only required params', async () => {
+ const responsePromise = client.browser.createSession({ invocationId: 'invocationId' });
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
@@ -19,4 +19,9 @@ describe('resource browser', () => {
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});
+
+ // skipped: tests are disabled for the time being
+ test.skip('createSession: required and optional params', async () => {
+ const response = await client.browser.createSession({ invocationId: 'invocationId' });
+ });
});