From d4e30a73767753c27cbc61651b3644a5765de537 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sat, 17 Jan 2026 21:34:41 +0000
Subject: [PATCH 1/7] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 2857ba8..8e09c0a 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 91
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-fc2c80b398a8dd511010ae7cda5e21c353e388ee130aa288974b47af4208b5b8.yml
-openapi_spec_hash: 5e06586dbbb9fce12b907f4e32497006
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-1e490dbef30dfa53ccba72524fcba4079f244f2530a4f770c00f8fee707eaa72.yml
+openapi_spec_hash: 1fd15429610959f19aed6d3cb170ab9e
config_hash: cc7fdd701d995d4b3456d77041c604cf
From 7df0d1b630bd87d6a8fc1999d33214f9434646fb Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 18 Jan 2026 22:57:05 +0000
Subject: [PATCH 2/7] feat(dashboard): add browser replays support for past
browsers
---
.stats.yml | 4 +--
api.md | 2 +-
src/client.ts | 2 ++
src/resources/browsers/browsers.ts | 30 +++++++++++++++----
src/resources/browsers/index.ts | 1 +
src/resources/index.ts | 1 +
tests/api-resources/browsers/browsers.test.ts | 13 ++++++++
7 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 8e09c0a..37fa5b7 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 91
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-1e490dbef30dfa53ccba72524fcba4079f244f2530a4f770c00f8fee707eaa72.yml
-openapi_spec_hash: 1fd15429610959f19aed6d3cb170ab9e
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-68729f2ff40476377ead9019c18ea140fc4efbc2e68d7c4fc323bd61ae81f768.yml
+openapi_spec_hash: 9eec61481f9059b5fedc13abc3e39338
config_hash: cc7fdd701d995d4b3456d77041c604cf
diff --git a/api.md b/api.md
index 45e2b0d..d86a880 100644
--- a/api.md
+++ b/api.md
@@ -73,7 +73,7 @@ Types:
Methods:
- client.browsers.create({ ...params }) -> BrowserCreateResponse
-- client.browsers.retrieve(id) -> BrowserRetrieveResponse
+- client.browsers.retrieve(id, { ...params }) -> BrowserRetrieveResponse
- client.browsers.update(id, { ...params }) -> BrowserUpdateResponse
- client.browsers.list({ ...params }) -> BrowserListResponsesOffsetPagination
- client.browsers.delete({ ...params }) -> void
diff --git a/src/client.ts b/src/client.ts
index 581c7fd..24808b4 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -94,6 +94,7 @@ import {
BrowserListResponsesOffsetPagination,
BrowserLoadExtensionsParams,
BrowserPersistence,
+ BrowserRetrieveParams,
BrowserRetrieveResponse,
BrowserUpdateParams,
BrowserUpdateResponse,
@@ -939,6 +940,7 @@ export declare namespace Kernel {
type BrowserListResponse as BrowserListResponse,
type BrowserListResponsesOffsetPagination as BrowserListResponsesOffsetPagination,
type BrowserCreateParams as BrowserCreateParams,
+ type BrowserRetrieveParams as BrowserRetrieveParams,
type BrowserUpdateParams as BrowserUpdateParams,
type BrowserListParams as BrowserListParams,
type BrowserDeleteParams as BrowserDeleteParams,
diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts
index a745380..040c783 100644
--- a/src/resources/browsers/browsers.ts
+++ b/src/resources/browsers/browsers.ts
@@ -105,8 +105,12 @@ export class Browsers extends APIResource {
* );
* ```
*/
- retrieve(id: string, options?: RequestOptions): APIPromise {
- return this._client.get(path`/browsers/${id}`, options);
+ retrieve(
+ id: string,
+ query: BrowserRetrieveParams | null | undefined = {},
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.get(path`/browsers/${id}`, { query, ...options });
}
/**
@@ -124,8 +128,8 @@ export class Browsers extends APIResource {
}
/**
- * List all browser sessions with pagination support. Use include_deleted=true to
- * include soft-deleted sessions in the results.
+ * List all browser sessions with pagination support. Use status parameter to
+ * filter by session state.
*
* @example
* ```ts
@@ -618,6 +622,13 @@ export interface BrowserCreateParams {
viewport?: Shared.BrowserViewport;
}
+export interface BrowserRetrieveParams {
+ /**
+ * When true, includes soft-deleted browser sessions in the lookup.
+ */
+ include_deleted?: boolean;
+}
+
export interface BrowserUpdateParams {
/**
* ID of the proxy to use. Omit to leave unchanged, set to empty string to remove
@@ -628,10 +639,16 @@ export interface BrowserUpdateParams {
export interface BrowserListParams extends OffsetPaginationParams {
/**
- * When true, includes soft-deleted browser sessions in the results alongside
- * active sessions.
+ * Deprecated: Use status=all instead. When true, includes soft-deleted browser
+ * sessions in the results alongside active sessions.
*/
include_deleted?: boolean;
+
+ /**
+ * Filter sessions by status. "active" returns only active sessions (default),
+ * "deleted" returns only soft-deleted sessions, "all" returns both.
+ */
+ status?: 'active' | 'deleted' | 'all';
}
export interface BrowserDeleteParams {
@@ -680,6 +697,7 @@ export declare namespace Browsers {
type BrowserListResponse as BrowserListResponse,
type BrowserListResponsesOffsetPagination as BrowserListResponsesOffsetPagination,
type BrowserCreateParams as BrowserCreateParams,
+ type BrowserRetrieveParams as BrowserRetrieveParams,
type BrowserUpdateParams as BrowserUpdateParams,
type BrowserListParams as BrowserListParams,
type BrowserDeleteParams as BrowserDeleteParams,
diff --git a/src/resources/browsers/index.ts b/src/resources/browsers/index.ts
index d00c32c..046c1b2 100644
--- a/src/resources/browsers/index.ts
+++ b/src/resources/browsers/index.ts
@@ -9,6 +9,7 @@ export {
type BrowserUpdateResponse,
type BrowserListResponse,
type BrowserCreateParams,
+ type BrowserRetrieveParams,
type BrowserUpdateParams,
type BrowserListParams,
type BrowserDeleteParams,
diff --git a/src/resources/index.ts b/src/resources/index.ts
index e95e4ae..1b7282a 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -28,6 +28,7 @@ export {
type BrowserUpdateResponse,
type BrowserListResponse,
type BrowserCreateParams,
+ type BrowserRetrieveParams,
type BrowserUpdateParams,
type BrowserListParams,
type BrowserDeleteParams,
diff --git a/tests/api-resources/browsers/browsers.test.ts b/tests/api-resources/browsers/browsers.test.ts
index f6d629d..51fecec 100644
--- a/tests/api-resources/browsers/browsers.test.ts
+++ b/tests/api-resources/browsers/browsers.test.ts
@@ -62,6 +62,18 @@ describe('resource browsers', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
+ // Prism tests are disabled
+ test.skip('retrieve: 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.browsers.retrieve(
+ 'htzv5orfit78e1m2biiifpbv',
+ { include_deleted: true },
+ { path: '/_stainless_unknown_path' },
+ ),
+ ).rejects.toThrow(Kernel.NotFoundError);
+ });
+
// Prism tests are disabled
test.skip('update', async () => {
const responsePromise = client.browsers.update('htzv5orfit78e1m2biiifpbv', {});
@@ -95,6 +107,7 @@ describe('resource browsers', () => {
include_deleted: true,
limit: 1,
offset: 0,
+ status: 'active',
},
{ path: '/_stainless_unknown_path' },
),
From e4935e3ac62e65170670b93fc725353dc3953f5b Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 19 Jan 2026 18:47:35 +0000
Subject: [PATCH 3/7] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 37fa5b7..9ec6fcc 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 91
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-68729f2ff40476377ead9019c18ea140fc4efbc2e68d7c4fc323bd61ae81f768.yml
-openapi_spec_hash: 9eec61481f9059b5fedc13abc3e39338
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-59d2925a3cb93809cc762a3ac350691b365898e284f2c66a5999b9a6a37a35e5.yml
+openapi_spec_hash: dfcb0a49e657426d0c0f44cfa3e89430
config_hash: cc7fdd701d995d4b3456d77041c604cf
From 94750833811e4842b29b7be918894e1d1458067a Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 21 Jan 2026 01:00:05 +0000
Subject: [PATCH 4/7] feat: Update browser pool org limits
---
.stats.yml | 4 ++--
src/resources/browser-pools.ts | 12 +++++++++---
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 9ec6fcc..996826a 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 91
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-59d2925a3cb93809cc762a3ac350691b365898e284f2c66a5999b9a6a37a35e5.yml
-openapi_spec_hash: dfcb0a49e657426d0c0f44cfa3e89430
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-97558c7b5f2714e629041ff892cdabef76c4ab214b5f908ba8b36d507eac5260.yml
+openapi_spec_hash: 3464d532154863ca17b82082451b9faf
config_hash: cc7fdd701d995d4b3456d77041c604cf
diff --git a/src/resources/browser-pools.ts b/src/resources/browser-pools.ts
index 9e67f7c..b05ad66 100644
--- a/src/resources/browser-pools.ts
+++ b/src/resources/browser-pools.ts
@@ -181,7 +181,9 @@ export namespace BrowserPool {
*/
export interface BrowserPoolConfig {
/**
- * Number of browsers to create in the pool
+ * Number of browsers to maintain in the pool. The maximum size is determined by
+ * your organization's pooled sessions limit (the sum of all pool sizes cannot
+ * exceed your limit).
*/
size: number;
@@ -330,7 +332,9 @@ export interface BrowserPoolAcquireResponse {
export interface BrowserPoolCreateParams {
/**
- * Number of browsers to create in the pool
+ * Number of browsers to maintain in the pool. The maximum size is determined by
+ * your organization's pooled sessions limit (the sum of all pool sizes cannot
+ * exceed your limit).
*/
size: number;
@@ -400,7 +404,9 @@ export interface BrowserPoolCreateParams {
export interface BrowserPoolUpdateParams {
/**
- * Number of browsers to create in the pool
+ * Number of browsers to maintain in the pool. The maximum size is determined by
+ * your organization's pooled sessions limit (the sum of all pool sizes cannot
+ * exceed your limit).
*/
size: number;
From 655472432e7241daf996b406ef842c4d63e0f7a2 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 21 Jan 2026 03:29:52 +0000
Subject: [PATCH 5/7] =?UTF-8?q?refactor(agentauth):=20enhance=20discover?=
=?UTF-8?q?=20and=20submit=20modules=20with=20improve=E2=80=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.stats.yml | 4 ++--
src/resources/agents/auth/auth.ts | 5 +++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 996826a..480b78b 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 91
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-97558c7b5f2714e629041ff892cdabef76c4ab214b5f908ba8b36d507eac5260.yml
-openapi_spec_hash: 3464d532154863ca17b82082451b9faf
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-714affeb2859c03a71d35708b6704b1750a1712738a130f3363ae67b20d751d9.yml
+openapi_spec_hash: 9d2b9358f0f640ecd1eacd15b70dd361
config_hash: cc7fdd701d995d4b3456d77041c604cf
diff --git a/src/resources/agents/auth/auth.ts b/src/resources/agents/auth/auth.ts
index ac69356..570308e 100644
--- a/src/resources/agents/auth/auth.ts
+++ b/src/resources/agents/auth/auth.ts
@@ -166,6 +166,11 @@ export interface AgentAuthInvocationResponse {
*/
pending_sso_buttons?: Array | null;
+ /**
+ * SSO provider being used for authentication (e.g., google, github, microsoft)
+ */
+ sso_provider?: string | null;
+
/**
* Names of fields that have been submitted (present when step=submitting or later)
*/
From b0fb58ddd6adb4ac70cd981557433a4af9f9675c Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 21 Jan 2026 04:39:11 +0000
Subject: [PATCH 6/7] feat(agent-auth): add 1Password integration for
credential providers
---
.stats.yml | 8 +-
api.md | 19 ++
src/client.ts | 23 ++
src/resources/credential-providers.ts | 265 ++++++++++++++++++
src/resources/index.ts | 10 +
.../credential-providers.test.ts | 94 +++++++
6 files changed, 415 insertions(+), 4 deletions(-)
create mode 100644 src/resources/credential-providers.ts
create mode 100644 tests/api-resources/credential-providers.test.ts
diff --git a/.stats.yml b/.stats.yml
index 480b78b..50043a4 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 91
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-714affeb2859c03a71d35708b6704b1750a1712738a130f3363ae67b20d751d9.yml
-openapi_spec_hash: 9d2b9358f0f640ecd1eacd15b70dd361
-config_hash: cc7fdd701d995d4b3456d77041c604cf
+configured_endpoints: 97
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-7427d4bcaba5cad07910da7a222bdd2650b5280e6b889132ed38d230adafb8a5.yml
+openapi_spec_hash: e8e3dc1ae54666d544d1fc848b25e7cf
+config_hash: b470456b217bb9502f5212311d395a6f
diff --git a/api.md b/api.md
index d86a880..3b123d3 100644
--- a/api.md
+++ b/api.md
@@ -300,3 +300,22 @@ Methods:
- client.credentials.list({ ...params }) -> CredentialsOffsetPagination
- client.credentials.delete(idOrName) -> void
- client.credentials.totpCode(idOrName) -> CredentialTotpCodeResponse
+
+# CredentialProviders
+
+Types:
+
+- CreateCredentialProviderRequest
+- CredentialProvider
+- CredentialProviderTestResult
+- UpdateCredentialProviderRequest
+- CredentialProviderListResponse
+
+Methods:
+
+- client.credentialProviders.create({ ...params }) -> CredentialProvider
+- client.credentialProviders.retrieve(id) -> CredentialProvider
+- client.credentialProviders.update(id, { ...params }) -> CredentialProvider
+- client.credentialProviders.list() -> CredentialProviderListResponse
+- client.credentialProviders.delete(id) -> void
+- client.credentialProviders.test(id) -> CredentialProviderTestResult
diff --git a/src/client.ts b/src/client.ts
index 24808b4..63de439 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -30,6 +30,16 @@ import {
BrowserPoolUpdateParams,
BrowserPools,
} from './resources/browser-pools';
+import {
+ CreateCredentialProviderRequest,
+ CredentialProvider,
+ CredentialProviderCreateParams,
+ CredentialProviderListResponse,
+ CredentialProviderTestResult,
+ CredentialProviderUpdateParams,
+ CredentialProviders,
+ UpdateCredentialProviderRequest,
+} from './resources/credential-providers';
import {
CreateCredentialRequest,
Credential,
@@ -873,6 +883,7 @@ export class Kernel {
browserPools: API.BrowserPools = new API.BrowserPools(this);
agents: API.Agents = new API.Agents(this);
credentials: API.Credentials = new API.Credentials(this);
+ credentialProviders: API.CredentialProviders = new API.CredentialProviders(this);
}
Kernel.Deployments = Deployments;
@@ -885,6 +896,7 @@ Kernel.Extensions = Extensions;
Kernel.BrowserPools = BrowserPools;
Kernel.Agents = Agents;
Kernel.Credentials = Credentials;
+Kernel.CredentialProviders = CredentialProviders;
export declare namespace Kernel {
export type RequestOptions = Opts.RequestOptions;
@@ -996,6 +1008,17 @@ export declare namespace Kernel {
type CredentialListParams as CredentialListParams,
};
+ export {
+ CredentialProviders as CredentialProviders,
+ type CreateCredentialProviderRequest as CreateCredentialProviderRequest,
+ type CredentialProvider as CredentialProvider,
+ type CredentialProviderTestResult as CredentialProviderTestResult,
+ type UpdateCredentialProviderRequest as UpdateCredentialProviderRequest,
+ type CredentialProviderListResponse as CredentialProviderListResponse,
+ type CredentialProviderCreateParams as CredentialProviderCreateParams,
+ type CredentialProviderUpdateParams as CredentialProviderUpdateParams,
+ };
+
export type AppAction = API.AppAction;
export type BrowserExtension = API.BrowserExtension;
export type BrowserProfile = API.BrowserProfile;
diff --git a/src/resources/credential-providers.ts b/src/resources/credential-providers.ts
new file mode 100644
index 0000000..596e9e5
--- /dev/null
+++ b/src/resources/credential-providers.ts
@@ -0,0 +1,265 @@
+// 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 { buildHeaders } from '../internal/headers';
+import { RequestOptions } from '../internal/request-options';
+import { path } from '../internal/utils/path';
+
+export class CredentialProviders extends APIResource {
+ /**
+ * Configure an external credential provider (e.g., 1Password) for automatic
+ * credential lookup.
+ *
+ * @example
+ * ```ts
+ * const credentialProvider =
+ * await client.credentialProviders.create({
+ * token: 'ops_eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...',
+ * provider_type: 'onepassword',
+ * });
+ * ```
+ */
+ create(body: CredentialProviderCreateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/org/credential-providers', { body, ...options });
+ }
+
+ /**
+ * Retrieve a credential provider by its ID.
+ *
+ * @example
+ * ```ts
+ * const credentialProvider =
+ * await client.credentialProviders.retrieve('id');
+ * ```
+ */
+ retrieve(id: string, options?: RequestOptions): APIPromise {
+ return this._client.get(path`/org/credential-providers/${id}`, options);
+ }
+
+ /**
+ * Update a credential provider's configuration.
+ *
+ * @example
+ * ```ts
+ * const credentialProvider =
+ * await client.credentialProviders.update('id');
+ * ```
+ */
+ update(
+ id: string,
+ body: CredentialProviderUpdateParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.patch(path`/org/credential-providers/${id}`, { body, ...options });
+ }
+
+ /**
+ * List external credential providers configured for the organization.
+ *
+ * @example
+ * ```ts
+ * const credentialProviders =
+ * await client.credentialProviders.list();
+ * ```
+ */
+ list(options?: RequestOptions): APIPromise {
+ return this._client.get('/org/credential-providers', options);
+ }
+
+ /**
+ * Delete a credential provider by its ID.
+ *
+ * @example
+ * ```ts
+ * await client.credentialProviders.delete('id');
+ * ```
+ */
+ delete(id: string, options?: RequestOptions): APIPromise {
+ return this._client.delete(path`/org/credential-providers/${id}`, {
+ ...options,
+ headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
+ });
+ }
+
+ /**
+ * Validate the credential provider's token and list accessible vaults.
+ *
+ * @example
+ * ```ts
+ * const credentialProviderTestResult =
+ * await client.credentialProviders.test('id');
+ * ```
+ */
+ test(id: string, options?: RequestOptions): APIPromise {
+ return this._client.post(path`/org/credential-providers/${id}/test`, options);
+ }
+}
+
+/**
+ * Request to create an external credential provider
+ */
+export interface CreateCredentialProviderRequest {
+ /**
+ * Service account token for the provider (e.g., 1Password service account token)
+ */
+ token: string;
+
+ /**
+ * Type of credential provider
+ */
+ provider_type: 'onepassword';
+
+ /**
+ * How long to cache credential lists (default 300 seconds)
+ */
+ cache_ttl_seconds?: number;
+}
+
+/**
+ * An external credential provider (e.g., 1Password) for automatic credential
+ * lookup
+ */
+export interface CredentialProvider {
+ /**
+ * Unique identifier for the credential provider
+ */
+ id: string;
+
+ /**
+ * When the credential provider was created
+ */
+ created_at: string;
+
+ /**
+ * Whether the provider is enabled for credential lookups
+ */
+ enabled: boolean;
+
+ /**
+ * Priority order for credential lookups (lower numbers are checked first)
+ */
+ priority: number;
+
+ /**
+ * Type of credential provider
+ */
+ provider_type: 'onepassword';
+
+ /**
+ * When the credential provider was last updated
+ */
+ updated_at: string;
+}
+
+/**
+ * Result of testing a credential provider connection
+ */
+export interface CredentialProviderTestResult {
+ /**
+ * Whether the connection test was successful
+ */
+ success: boolean;
+
+ /**
+ * List of vaults accessible by the service account
+ */
+ vaults: Array;
+
+ /**
+ * Error message if the test failed
+ */
+ error?: string;
+}
+
+export namespace CredentialProviderTestResult {
+ export interface Vault {
+ /**
+ * Vault ID
+ */
+ id: string;
+
+ /**
+ * Vault name
+ */
+ name: string;
+ }
+}
+
+/**
+ * Request to update a credential provider
+ */
+export interface UpdateCredentialProviderRequest {
+ /**
+ * New service account token (to rotate credentials)
+ */
+ token?: string;
+
+ /**
+ * How long to cache credential lists
+ */
+ cache_ttl_seconds?: number;
+
+ /**
+ * Whether the provider is enabled for credential lookups
+ */
+ enabled?: boolean;
+
+ /**
+ * Priority order for credential lookups (lower numbers are checked first)
+ */
+ priority?: number;
+}
+
+export type CredentialProviderListResponse = Array;
+
+export interface CredentialProviderCreateParams {
+ /**
+ * Service account token for the provider (e.g., 1Password service account token)
+ */
+ token: string;
+
+ /**
+ * Type of credential provider
+ */
+ provider_type: 'onepassword';
+
+ /**
+ * How long to cache credential lists (default 300 seconds)
+ */
+ cache_ttl_seconds?: number;
+}
+
+export interface CredentialProviderUpdateParams {
+ /**
+ * New service account token (to rotate credentials)
+ */
+ token?: string;
+
+ /**
+ * How long to cache credential lists
+ */
+ cache_ttl_seconds?: number;
+
+ /**
+ * Whether the provider is enabled for credential lookups
+ */
+ enabled?: boolean;
+
+ /**
+ * Priority order for credential lookups (lower numbers are checked first)
+ */
+ priority?: number;
+}
+
+export declare namespace CredentialProviders {
+ export {
+ type CreateCredentialProviderRequest as CreateCredentialProviderRequest,
+ type CredentialProvider as CredentialProvider,
+ type CredentialProviderTestResult as CredentialProviderTestResult,
+ type UpdateCredentialProviderRequest as UpdateCredentialProviderRequest,
+ type CredentialProviderListResponse as CredentialProviderListResponse,
+ type CredentialProviderCreateParams as CredentialProviderCreateParams,
+ type CredentialProviderUpdateParams as CredentialProviderUpdateParams,
+ };
+}
diff --git a/src/resources/index.ts b/src/resources/index.ts
index 1b7282a..a3475dd 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -35,6 +35,16 @@ export {
type BrowserLoadExtensionsParams,
type BrowserListResponsesOffsetPagination,
} from './browsers/browsers';
+export {
+ CredentialProviders,
+ type CreateCredentialProviderRequest,
+ type CredentialProvider,
+ type CredentialProviderTestResult,
+ type UpdateCredentialProviderRequest,
+ type CredentialProviderListResponse,
+ type CredentialProviderCreateParams,
+ type CredentialProviderUpdateParams,
+} from './credential-providers';
export {
Credentials,
type CreateCredentialRequest,
diff --git a/tests/api-resources/credential-providers.test.ts b/tests/api-resources/credential-providers.test.ts
new file mode 100644
index 0000000..5a20da8
--- /dev/null
+++ b/tests/api-resources/credential-providers.test.ts
@@ -0,0 +1,94 @@
+// 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 credentialProviders', () => {
+ // Prism tests are disabled
+ test.skip('create: only required params', async () => {
+ const responsePromise = client.credentialProviders.create({
+ token: 'ops_eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...',
+ provider_type: 'onepassword',
+ });
+ 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);
+ });
+
+ // Prism tests are disabled
+ test.skip('create: required and optional params', async () => {
+ const response = await client.credentialProviders.create({
+ token: 'ops_eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...',
+ provider_type: 'onepassword',
+ cache_ttl_seconds: 300,
+ });
+ });
+
+ // Prism tests are disabled
+ test.skip('retrieve', async () => {
+ const responsePromise = client.credentialProviders.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);
+ });
+
+ // Prism tests are disabled
+ test.skip('update', async () => {
+ const responsePromise = client.credentialProviders.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);
+ });
+
+ // Prism tests are disabled
+ test.skip('list', async () => {
+ const responsePromise = client.credentialProviders.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);
+ });
+
+ // Prism tests are disabled
+ test.skip('delete', async () => {
+ const responsePromise = client.credentialProviders.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);
+ });
+
+ // Prism tests are disabled
+ test.skip('test', async () => {
+ const responsePromise = client.credentialProviders.test('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 d3a60b6b29202504edb8e72bf5197fe916d094ee Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 21 Jan 2026 04:39:30 +0000
Subject: [PATCH 7/7] release: 0.27.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 15 +++++++++++++++
package.json | 2 +-
src/version.ts | 2 +-
4 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index c84411f..2b11449 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.26.0"
+ ".": "0.27.0"
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ea2fc14..b597d41 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## 0.27.0 (2026-01-21)
+
+Full Changelog: [v0.26.0...v0.27.0](https://github.com/kernel/kernel-node-sdk/compare/v0.26.0...v0.27.0)
+
+### Features
+
+* **agent-auth:** add 1Password integration for credential providers ([b0fb58d](https://github.com/kernel/kernel-node-sdk/commit/b0fb58ddd6adb4ac70cd981557433a4af9f9675c))
+* **dashboard:** add browser replays support for past browsers ([7df0d1b](https://github.com/kernel/kernel-node-sdk/commit/7df0d1b630bd87d6a8fc1999d33214f9434646fb))
+* Update browser pool org limits ([9475083](https://github.com/kernel/kernel-node-sdk/commit/94750833811e4842b29b7be918894e1d1458067a))
+
+
+### Refactors
+
+* **agentauth:** enhance discover and submit modules with improve⦠([6554724](https://github.com/kernel/kernel-node-sdk/commit/655472432e7241daf996b406ef842c4d63e0f7a2))
+
## 0.26.0 (2026-01-17)
Full Changelog: [v0.26.0...v0.26.0](https://github.com/kernel/kernel-node-sdk/compare/v0.26.0...v0.26.0)
diff --git a/package.json b/package.json
index 76168f1..5eb7b3b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@onkernel/sdk",
- "version": "0.26.0",
+ "version": "0.27.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 aa25151..288031c 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.26.0'; // x-release-please-version
+export const VERSION = '0.27.0'; // x-release-please-version