From 50cc8004d30cb579d1fb789be0092610b0c67d2a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 13:12:09 +0000 Subject: [PATCH 1/5] feat: [kernel-1116] add base_url field to browser session response --- .stats.yml | 4 ++-- src/resources/browser-pools.ts | 5 +++++ src/resources/browsers/browsers.ts | 20 ++++++++++++++++++++ src/resources/invocations.ts | 5 +++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 7f48513..b81754a 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 104 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-ac10847d991ef8ed89124b5550922cb5726af2b4a4c3396ee6ff82938302fc25.yml -openapi_spec_hash: 0d902563108fe2461708c05336eab40a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-aee09720882ec1d78f845fee6ceecb0466c264629e4edecd3230406dd06d7983.yml +openapi_spec_hash: 438da0d38d169897595f301d82fa7e2c config_hash: 16e4457a0bb26e98a335a1c2a572290a diff --git a/src/resources/browser-pools.ts b/src/resources/browser-pools.ts index 83a8e93..f587ded 100644 --- a/src/resources/browser-pools.ts +++ b/src/resources/browser-pools.ts @@ -305,6 +305,11 @@ export interface BrowserPoolAcquireResponse { */ webdriver_ws_url: string; + /** + * Metro-API HTTP base URL for this browser session. + */ + base_url?: string; + /** * Remote URL for live viewing the browser session. Only available for non-headless * browsers. diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts index 2330b59..2e1264b 100644 --- a/src/resources/browsers/browsers.ts +++ b/src/resources/browsers/browsers.ts @@ -318,6 +318,11 @@ export interface BrowserCreateResponse { */ webdriver_ws_url: string; + /** + * Metro-API HTTP base URL for this browser session. + */ + base_url?: string; + /** * Remote URL for live viewing the browser session. Only available for non-headless * browsers. @@ -419,6 +424,11 @@ export interface BrowserRetrieveResponse { */ webdriver_ws_url: string; + /** + * Metro-API HTTP base URL for this browser session. + */ + base_url?: string; + /** * Remote URL for live viewing the browser session. Only available for non-headless * browsers. @@ -520,6 +530,11 @@ export interface BrowserUpdateResponse { */ webdriver_ws_url: string; + /** + * Metro-API HTTP base URL for this browser session. + */ + base_url?: string; + /** * Remote URL for live viewing the browser session. Only available for non-headless * browsers. @@ -621,6 +636,11 @@ export interface BrowserListResponse { */ webdriver_ws_url: string; + /** + * Metro-API HTTP base URL for this browser session. + */ + base_url?: string; + /** * Remote URL for live viewing the browser session. Only available for non-headless * browsers. diff --git a/src/resources/invocations.ts b/src/resources/invocations.ts index e567574..430751b 100644 --- a/src/resources/invocations.ts +++ b/src/resources/invocations.ts @@ -453,6 +453,11 @@ export namespace InvocationListBrowsersResponse { */ webdriver_ws_url: string; + /** + * Metro-API HTTP base URL for this browser session. + */ + base_url?: string; + /** * Remote URL for live viewing the browser session. Only available for non-headless * browsers. From 95f209396f586b7ce949ca0e11e075edca5f1f73 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 20:48:24 +0000 Subject: [PATCH 2/5] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index b81754a..d184bbd 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 104 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-aee09720882ec1d78f845fee6ceecb0466c264629e4edecd3230406dd06d7983.yml -openapi_spec_hash: 438da0d38d169897595f301d82fa7e2c +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-49a1a92e00d1eb87e91e8527275cb0705fce2edea30e70fea745f134dd451fbd.yml +openapi_spec_hash: 3aa6ab6939790f538332054162fbdedc config_hash: 16e4457a0bb26e98a335a1c2a572290a From 87b21a8d12f82d8f88b6a4651954c6a42f09d201 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Apr 2026 06:04:11 +0000 Subject: [PATCH 3/5] chore(internal): codegen related update --- src/internal/utils/env.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/internal/utils/env.ts b/src/internal/utils/env.ts index 2d84800..cc5fa0f 100644 --- a/src/internal/utils/env.ts +++ b/src/internal/utils/env.ts @@ -9,10 +9,10 @@ */ export const readEnv = (env: string): string | undefined => { if (typeof (globalThis as any).process !== 'undefined') { - return (globalThis as any).process.env?.[env]?.trim() ?? undefined; + return (globalThis as any).process.env?.[env]?.trim() || undefined; } if (typeof (globalThis as any).Deno !== 'undefined') { - return (globalThis as any).Deno.env?.get?.(env)?.trim(); + return (globalThis as any).Deno.env?.get?.(env)?.trim() || undefined; } return undefined; }; From 068027a7b58e3234b99c8b87fe7ef4610f33f941 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 10 Apr 2026 02:14:36 +0000 Subject: [PATCH 4/5] chore: retrigger Stainless codegen for projects resource --- .stats.yml | 4 +- api.md | 28 +++ src/client.ts | 26 +++ src/resources/index.ts | 10 + src/resources/projects.ts | 3 + src/resources/projects/index.ts | 18 ++ src/resources/projects/limits.ts | 128 +++++++++++++ src/resources/projects/projects.ts | 179 ++++++++++++++++++ tests/api-resources/projects/limits.test.ts | 34 ++++ tests/api-resources/projects/projects.test.ts | 83 ++++++++ 10 files changed, 511 insertions(+), 2 deletions(-) create mode 100644 src/resources/projects.ts create mode 100644 src/resources/projects/index.ts create mode 100644 src/resources/projects/limits.ts create mode 100644 src/resources/projects/projects.ts create mode 100644 tests/api-resources/projects/limits.test.ts create mode 100644 tests/api-resources/projects/projects.test.ts diff --git a/.stats.yml b/.stats.yml index d184bbd..db7b03c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 104 +configured_endpoints: 111 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-49a1a92e00d1eb87e91e8527275cb0705fce2edea30e70fea745f134dd451fbd.yml openapi_spec_hash: 3aa6ab6939790f538332054162fbdedc -config_hash: 16e4457a0bb26e98a335a1c2a572290a +config_hash: 9818dd634f87b677410eefd013d7a179 diff --git a/api.md b/api.md index 1d47fcb..4f2faea 100644 --- a/api.md +++ b/api.md @@ -299,6 +299,34 @@ Methods: - client.credentials.delete(idOrName) -> void - client.credentials.totpCode(idOrName) -> CredentialTotpCodeResponse +# Projects + +Types: + +- CreateProjectRequest +- Project +- UpdateProjectRequest + +Methods: + +- client.projects.create({ ...params }) -> Project +- client.projects.retrieve(id) -> Project +- client.projects.update(id, { ...params }) -> Project +- client.projects.list({ ...params }) -> ProjectsOffsetPagination +- client.projects.delete(id) -> void + +## Limits + +Types: + +- ProjectLimits +- UpdateProjectLimitsRequest + +Methods: + +- client.projects.limits.retrieve(id) -> ProjectLimits +- client.projects.limits.update(id, { ...params }) -> ProjectLimits + # CredentialProviders Types: diff --git a/src/client.ts b/src/client.ts index 9b34f29..dc9e5ce 100644 --- a/src/client.ts +++ b/src/client.ts @@ -118,6 +118,16 @@ import { Browsers, Profile, } from './resources/browsers/browsers'; +import { + CreateProjectRequest, + Project, + ProjectCreateParams, + ProjectListParams, + ProjectUpdateParams, + Projects, + ProjectsOffsetPagination, + UpdateProjectRequest, +} from './resources/projects/projects'; import { type Fetch } from './internal/builtin-types'; import { HeadersLike, NullableHeaders, buildHeaders } from './internal/headers'; import { FinalRequestOptions, RequestOptions } from './internal/request-options'; @@ -925,6 +935,10 @@ export class Kernel { * Create and manage credentials for authentication. */ credentials: API.Credentials = new API.Credentials(this); + /** + * Create and manage projects for resource isolation within an organization. + */ + projects: API.Projects = new API.Projects(this); /** * Configure external credential providers like 1Password. */ @@ -941,6 +955,7 @@ Kernel.Proxies = Proxies; Kernel.Extensions = Extensions; Kernel.BrowserPools = BrowserPools; Kernel.Credentials = Credentials; +Kernel.Projects = Projects; Kernel.CredentialProviders = CredentialProviders; export declare namespace Kernel { @@ -1057,6 +1072,17 @@ export declare namespace Kernel { type CredentialListParams as CredentialListParams, }; + export { + Projects as Projects, + type CreateProjectRequest as CreateProjectRequest, + type Project as Project, + type UpdateProjectRequest as UpdateProjectRequest, + type ProjectsOffsetPagination as ProjectsOffsetPagination, + type ProjectCreateParams as ProjectCreateParams, + type ProjectUpdateParams as ProjectUpdateParams, + type ProjectListParams as ProjectListParams, + }; + export { CredentialProviders as CredentialProviders, type CreateCredentialProviderRequest as CreateCredentialProviderRequest, diff --git a/src/resources/index.ts b/src/resources/index.ts index a5b082c..312dbe0 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -96,6 +96,16 @@ export { type InvocationListResponsesOffsetPagination, } from './invocations'; export { Profiles, type ProfileCreateParams, type ProfileListParams } from './profiles'; +export { + Projects, + type CreateProjectRequest, + type Project, + type UpdateProjectRequest, + type ProjectCreateParams, + type ProjectUpdateParams, + type ProjectListParams, + type ProjectsOffsetPagination, +} from './projects/projects'; export { Proxies, type ProxyCreateResponse, diff --git a/src/resources/projects.ts b/src/resources/projects.ts new file mode 100644 index 0000000..f9985fc --- /dev/null +++ b/src/resources/projects.ts @@ -0,0 +1,3 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +export * from './projects/index'; diff --git a/src/resources/projects/index.ts b/src/resources/projects/index.ts new file mode 100644 index 0000000..7cbfa6a --- /dev/null +++ b/src/resources/projects/index.ts @@ -0,0 +1,18 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +export { + Limits, + type ProjectLimits, + type UpdateProjectLimitsRequest, + type LimitUpdateParams, +} from './limits'; +export { + Projects, + type CreateProjectRequest, + type Project, + type UpdateProjectRequest, + type ProjectCreateParams, + type ProjectUpdateParams, + type ProjectListParams, + type ProjectsOffsetPagination, +} from './projects'; diff --git a/src/resources/projects/limits.ts b/src/resources/projects/limits.ts new file mode 100644 index 0000000..5475e4d --- /dev/null +++ b/src/resources/projects/limits.ts @@ -0,0 +1,128 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import { APIResource } from '../../core/resource'; +import { APIPromise } from '../../core/api-promise'; +import { RequestOptions } from '../../internal/request-options'; +import { path } from '../../internal/utils/path'; + +/** + * Create and manage projects for resource isolation within an organization. + */ +export class Limits extends APIResource { + /** + * Get the resource limit overrides for a project. Null values mean no + * project-level cap (org limit applies). + * + * @example + * ```ts + * const projectLimits = await client.projects.limits.retrieve( + * 'id', + * ); + * ``` + */ + retrieve(id: string, options?: RequestOptions): APIPromise { + return this._client.get(path`/projects/${id}/limits`, options); + } + + /** + * Update resource limit overrides for a project. Only fields present in the + * request are modified. Set a field to 0 to remove that limit cap; omit a field to + * leave it unchanged. + * + * @example + * ```ts + * const projectLimits = await client.projects.limits.update( + * 'id', + * ); + * ``` + */ + update(id: string, body: LimitUpdateParams, options?: RequestOptions): APIPromise { + return this._client.patch(path`/projects/${id}/limits`, { body, ...options }); + } +} + +export interface ProjectLimits { + /** + * Maximum concurrent app invocations for this project. Null means no project-level + * cap. + */ + max_concurrent_invocations?: number | null; + + /** + * Maximum concurrent browser sessions for this project. Null means no + * project-level cap. + */ + max_concurrent_sessions?: number | null; + + /** + * Maximum persistent browser sessions for this project. Null means no + * project-level cap. + */ + max_persistent_sessions?: number | null; + + /** + * Maximum pooled sessions capacity for this project. Null means no project-level + * cap. + */ + max_pooled_sessions?: number | null; +} + +export interface UpdateProjectLimitsRequest { + /** + * Maximum concurrent app invocations for this project. Set to 0 to remove the cap; + * omit to leave unchanged. + */ + max_concurrent_invocations?: number | null; + + /** + * Maximum concurrent browser sessions for this project. Set to 0 to remove the + * cap; omit to leave unchanged. + */ + max_concurrent_sessions?: number | null; + + /** + * Maximum persistent browser sessions for this project. Set to 0 to remove the + * cap; omit to leave unchanged. + */ + max_persistent_sessions?: number | null; + + /** + * Maximum pooled sessions capacity for this project. Set to 0 to remove the cap; + * omit to leave unchanged. + */ + max_pooled_sessions?: number | null; +} + +export interface LimitUpdateParams { + /** + * Maximum concurrent app invocations for this project. Set to 0 to remove the cap; + * omit to leave unchanged. + */ + max_concurrent_invocations?: number | null; + + /** + * Maximum concurrent browser sessions for this project. Set to 0 to remove the + * cap; omit to leave unchanged. + */ + max_concurrent_sessions?: number | null; + + /** + * Maximum persistent browser sessions for this project. Set to 0 to remove the + * cap; omit to leave unchanged. + */ + max_persistent_sessions?: number | null; + + /** + * Maximum pooled sessions capacity for this project. Set to 0 to remove the cap; + * omit to leave unchanged. + */ + max_pooled_sessions?: number | null; +} + +export declare namespace Limits { + export { + type ProjectLimits as ProjectLimits, + type UpdateProjectLimitsRequest as UpdateProjectLimitsRequest, + type LimitUpdateParams as LimitUpdateParams, + }; +} diff --git a/src/resources/projects/projects.ts b/src/resources/projects/projects.ts new file mode 100644 index 0000000..142531f --- /dev/null +++ b/src/resources/projects/projects.ts @@ -0,0 +1,179 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import { APIResource } from '../../core/resource'; +import * as LimitsAPI from './limits'; +import { LimitUpdateParams, Limits, ProjectLimits, UpdateProjectLimitsRequest } from './limits'; +import { APIPromise } from '../../core/api-promise'; +import { OffsetPagination, type OffsetPaginationParams, PagePromise } from '../../core/pagination'; +import { buildHeaders } from '../../internal/headers'; +import { RequestOptions } from '../../internal/request-options'; +import { path } from '../../internal/utils/path'; + +/** + * Create and manage projects for resource isolation within an organization. + */ +export class Projects extends APIResource { + limits: LimitsAPI.Limits = new LimitsAPI.Limits(this._client); + + /** + * Create a new project within the authenticated organization. Requires a paid plan + * and the projects feature flag. + * + * @example + * ```ts + * const project = await client.projects.create({ + * name: 'staging', + * }); + * ``` + */ + create(body: ProjectCreateParams, options?: RequestOptions): APIPromise { + return this._client.post('/projects', { body, ...options }); + } + + /** + * Get a project by ID. + * + * @example + * ```ts + * const project = await client.projects.retrieve('id'); + * ``` + */ + retrieve(id: string, options?: RequestOptions): APIPromise { + return this._client.get(path`/projects/${id}`, options); + } + + /** + * Update a project's name or status. + * + * @example + * ```ts + * const project = await client.projects.update('id'); + * ``` + */ + update(id: string, body: ProjectUpdateParams, options?: RequestOptions): APIPromise { + return this._client.patch(path`/projects/${id}`, { body, ...options }); + } + + /** + * List projects for the authenticated organization. + * + * @example + * ```ts + * // Automatically fetches more pages as needed. + * for await (const project of client.projects.list()) { + * // ... + * } + * ``` + */ + list( + query: ProjectListParams | null | undefined = {}, + options?: RequestOptions, + ): PagePromise { + return this._client.getAPIList('/projects', OffsetPagination, { query, ...options }); + } + + /** + * Soft-delete a project. The project must be empty (no active resources). + * + * @example + * ```ts + * await client.projects.delete('id'); + * ``` + */ + delete(id: string, options?: RequestOptions): APIPromise { + return this._client.delete(path`/projects/${id}`, { + ...options, + headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), + }); + } +} + +export type ProjectsOffsetPagination = OffsetPagination; + +export interface CreateProjectRequest { + /** + * Project name (1-255 characters) + */ + name: string; +} + +export interface Project { + /** + * Unique project identifier + */ + id: string; + + /** + * When the project was created + */ + created_at: string; + + /** + * Project name + */ + name: string; + + /** + * Project status + */ + status: 'active' | 'archived'; + + /** + * When the project was last updated + */ + updated_at: string; +} + +export interface UpdateProjectRequest { + /** + * New project name + */ + name?: string; + + /** + * New project status + */ + status?: 'active' | 'archived'; +} + +export interface ProjectCreateParams { + /** + * Project name (1-255 characters) + */ + name: string; +} + +export interface ProjectUpdateParams { + /** + * New project name + */ + name?: string; + + /** + * New project status + */ + status?: 'active' | 'archived'; +} + +export interface ProjectListParams extends OffsetPaginationParams {} + +Projects.Limits = Limits; + +export declare namespace Projects { + export { + type CreateProjectRequest as CreateProjectRequest, + type Project as Project, + type UpdateProjectRequest as UpdateProjectRequest, + type ProjectsOffsetPagination as ProjectsOffsetPagination, + type ProjectCreateParams as ProjectCreateParams, + type ProjectUpdateParams as ProjectUpdateParams, + type ProjectListParams as ProjectListParams, + }; + + export { + Limits as Limits, + type ProjectLimits as ProjectLimits, + type UpdateProjectLimitsRequest as UpdateProjectLimitsRequest, + type LimitUpdateParams as LimitUpdateParams, + }; +} diff --git a/tests/api-resources/projects/limits.test.ts b/tests/api-resources/projects/limits.test.ts new file mode 100644 index 0000000..61b40ca --- /dev/null +++ b/tests/api-resources/projects/limits.test.ts @@ -0,0 +1,34 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import Kernel from '@onkernel/sdk'; + +const client = new Kernel({ + apiKey: 'My API Key', + baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010', +}); + +describe('resource limits', () => { + // Mock server tests are disabled + test.skip('retrieve', async () => { + const responsePromise = client.projects.limits.retrieve('id'); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Mock server tests are disabled + test.skip('update', async () => { + const responsePromise = client.projects.limits.update('id', {}); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); +}); diff --git a/tests/api-resources/projects/projects.test.ts b/tests/api-resources/projects/projects.test.ts new file mode 100644 index 0000000..d3fb12e --- /dev/null +++ b/tests/api-resources/projects/projects.test.ts @@ -0,0 +1,83 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import Kernel from '@onkernel/sdk'; + +const client = new Kernel({ + apiKey: 'My API Key', + baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010', +}); + +describe('resource projects', () => { + // Mock server tests are disabled + test.skip('create: only required params', async () => { + const responsePromise = client.projects.create({ name: 'staging' }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Mock server tests are disabled + test.skip('create: required and optional params', async () => { + const response = await client.projects.create({ name: 'staging' }); + }); + + // Mock server tests are disabled + test.skip('retrieve', async () => { + const responsePromise = client.projects.retrieve('id'); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Mock server tests are disabled + test.skip('update', async () => { + const responsePromise = client.projects.update('id', {}); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Mock server tests are disabled + test.skip('list', async () => { + const responsePromise = client.projects.list(); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Mock server tests are disabled + test.skip('list: 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.projects.list({ limit: 100, offset: 0 }, { path: '/_stainless_unknown_path' }), + ).rejects.toThrow(Kernel.NotFoundError); + }); + + // Mock server tests are disabled + test.skip('delete', async () => { + const responsePromise = client.projects.delete('id'); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); +}); From 644dba7fa7f0f40827d61a74ebc24f7dcec4e999 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 10 Apr 2026 02:14:55 +0000 Subject: [PATCH 5/5] release: 0.48.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- src/version.ts | 2 +- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3bafaeb..1383393 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.47.0" + ".": "0.48.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d3aee7a..9a8359e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.48.0 (2026-04-10) + +Full Changelog: [v0.47.0...v0.48.0](https://github.com/kernel/kernel-node-sdk/compare/v0.47.0...v0.48.0) + +### Features + +* [kernel-1116] add base_url field to browser session response ([50cc800](https://github.com/kernel/kernel-node-sdk/commit/50cc8004d30cb579d1fb789be0092610b0c67d2a)) + + +### Chores + +* **internal:** codegen related update ([87b21a8](https://github.com/kernel/kernel-node-sdk/commit/87b21a8d12f82d8f88b6a4651954c6a42f09d201)) +* retrigger Stainless codegen for projects resource ([068027a](https://github.com/kernel/kernel-node-sdk/commit/068027a7b58e3234b99c8b87fe7ef4610f33f941)) + ## 0.47.0 (2026-04-07) Full Changelog: [v0.46.0...v0.47.0](https://github.com/kernel/kernel-node-sdk/compare/v0.46.0...v0.47.0) diff --git a/package-lock.json b/package-lock.json index 7661c1c..b1d5a66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@onkernel/sdk", - "version": "0.47.0", + "version": "0.48.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@onkernel/sdk", - "version": "0.47.0", + "version": "0.48.0", "license": "Apache-2.0", "devDependencies": { "@arethetypeswrong/cli": "^0.17.0", diff --git a/package.json b/package.json index d1b2ff2..26494bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@onkernel/sdk", - "version": "0.47.0", + "version": "0.48.0", "description": "The official TypeScript library for the Kernel API", "author": "Kernel <>", "types": "dist/index.d.ts", diff --git a/src/version.ts b/src/version.ts index d84ba01..71ccf04 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.47.0'; // x-release-please-version +export const VERSION = '0.48.0'; // x-release-please-version