From 32f4b9747b9ba317b41d1a89a5162b6e81d61835 Mon Sep 17 00:00:00 2001
From: "kernel-internal[bot]"
<260533166+kernel-internal[bot]@users.noreply.github.com>
Date: Wed, 26 Aug 2026 23:56:24 +0000
Subject: [PATCH 1/2] feat: Rename the site configs API to config registry
Stainless-Generated-From: 1ddddde6b916d90fee80c0786e0a7b13b2bad24b
---
api.md | 45 ++---
src/client.ts | 60 +++----
src/resources/config-registry.ts | 3 +
src/resources/config-registry/analyses.ts | 63 +++++++
.../config-registry.ts} | 167 ++++++++----------
src/resources/config-registry/index.ts | 25 +++
src/resources/index.ts | 45 +++--
.../config-registry/analyses.test.ts | 49 +++++
.../config-registry.test.ts} | 47 +----
9 files changed, 300 insertions(+), 204 deletions(-)
create mode 100644 src/resources/config-registry.ts
create mode 100644 src/resources/config-registry/analyses.ts
rename src/resources/{site-configs.ts => config-registry/config-registry.ts} (77%)
create mode 100644 src/resources/config-registry/index.ts
create mode 100644 tests/api-resources/config-registry/analyses.test.ts
rename tests/api-resources/{site-configs.test.ts => config-registry/config-registry.test.ts} (57%)
diff --git a/api.md b/api.md
index 79fefcce..86519a7f 100644
--- a/api.md
+++ b/api.md
@@ -62,32 +62,37 @@ Methods:
- client.invocations.follow(id, { ...params }) -> InvocationFollowResponse
- client.invocations.listBrowsers(id) -> InvocationListBrowsersResponse
-# SiteConfigs
+# ConfigRegistry
Types:
-- Analysis
-- AnalysisSummary
-- Browser
-- Evidence
-- LookupRequest
-- LookupResponse
-- NoRecommendation
-- Proxy
-- Recommendation
-- RecommendationResult
-- RecommendationSummary
-- ResolveRequest
-- SiteConfigResponse
-- Target
+- Analysis
+- AnalysisSummary
+- Browser
+- ConfigRegistryResponse
+- Evidence
+- LookupRequest
+- LookupResponse
+- NoRecommendation
+- Proxy
+- Recommendation
+- RecommendationResult
+- RecommendationSummary
+- ResolveRequest
+- Target
Methods:
-- client.siteConfigs.retrieve(id) -> SiteConfigResponse
-- client.siteConfigs.list({ ...params }) -> AnalysisSummariesOffsetPagination
-- client.siteConfigs.listRecommendations({ ...params }) -> RecommendationSummariesOffsetPagination
-- client.siteConfigs.lookup({ ...params }) -> LookupResponse
-- client.siteConfigs.resolve({ ...params }) -> SiteConfigResponse
+- client.configRegistry.list({ ...params }) -> RecommendationSummariesOffsetPagination
+- client.configRegistry.lookup({ ...params }) -> LookupResponse
+- client.configRegistry.resolve({ ...params }) -> ConfigRegistryResponse
+
+## Analyses
+
+Methods:
+
+- client.configRegistry.analyses.retrieve(id) -> ConfigRegistryResponse
+- client.configRegistry.analyses.list({ ...params }) -> AnalysisSummariesOffsetPagination
# Browsers
diff --git a/src/client.ts b/src/client.ts
index f2e7e003..c66a88d0 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -136,29 +136,6 @@ import {
ProxyUpdateParams,
ProxyUpdateResponse,
} from './resources/proxies';
-import {
- Analysis,
- AnalysisSummariesOffsetPagination,
- AnalysisSummary,
- Browser,
- Evidence,
- LookupRequest,
- LookupResponse,
- NoRecommendation,
- Proxy,
- Recommendation,
- RecommendationResult,
- RecommendationSummariesOffsetPagination,
- RecommendationSummary,
- ResolveRequest,
- SiteConfigListParams,
- SiteConfigListRecommendationsParams,
- SiteConfigLookupParams,
- SiteConfigResolveParams,
- SiteConfigResponse,
- SiteConfigs,
- Target,
-} from './resources/site-configs';
import {
AuditLogEntriesPageTokenPagination,
AuditLogEntry,
@@ -192,6 +169,27 @@ import {
Profile,
Tags,
} from './resources/browsers/browsers';
+import {
+ Analysis,
+ AnalysisSummary,
+ Browser,
+ ConfigRegistry,
+ ConfigRegistryListParams,
+ ConfigRegistryLookupParams,
+ ConfigRegistryResolveParams,
+ ConfigRegistryResponse,
+ Evidence,
+ LookupRequest,
+ LookupResponse,
+ NoRecommendation,
+ Proxy,
+ Recommendation,
+ RecommendationResult,
+ RecommendationSummariesOffsetPagination,
+ RecommendationSummary,
+ ResolveRequest,
+ Target,
+} from './resources/config-registry/config-registry';
import { Organization } from './resources/organization/organization';
import {
CreateProjectRequest,
@@ -1038,7 +1036,7 @@ export class Kernel {
/**
* Resolve browser and proxy recommendations for bot-protected sites.
*/
- siteConfigs: API.SiteConfigs = new API.SiteConfigs(this);
+ configRegistry: API.ConfigRegistry = new API.ConfigRegistry(this);
/**
* Create and manage browser sessions.
*/
@@ -1090,7 +1088,7 @@ export class Kernel {
Kernel.Deployments = Deployments;
Kernel.Apps = Apps;
Kernel.Invocations = Invocations;
-Kernel.SiteConfigs = SiteConfigs;
+Kernel.ConfigRegistry = ConfigRegistry;
Kernel.Browsers = Browsers;
Kernel.Profiles = Profiles;
Kernel.Auth = Auth;
@@ -1157,10 +1155,11 @@ export declare namespace Kernel {
};
export {
- SiteConfigs as SiteConfigs,
+ ConfigRegistry as ConfigRegistry,
type Analysis as Analysis,
type AnalysisSummary as AnalysisSummary,
type Browser as Browser,
+ type ConfigRegistryResponse as ConfigRegistryResponse,
type Evidence as Evidence,
type LookupRequest as LookupRequest,
type LookupResponse as LookupResponse,
@@ -1170,14 +1169,11 @@ export declare namespace Kernel {
type RecommendationResult as RecommendationResult,
type RecommendationSummary as RecommendationSummary,
type ResolveRequest as ResolveRequest,
- type SiteConfigResponse as SiteConfigResponse,
type Target as Target,
- type AnalysisSummariesOffsetPagination as AnalysisSummariesOffsetPagination,
type RecommendationSummariesOffsetPagination as RecommendationSummariesOffsetPagination,
- type SiteConfigListParams as SiteConfigListParams,
- type SiteConfigListRecommendationsParams as SiteConfigListRecommendationsParams,
- type SiteConfigLookupParams as SiteConfigLookupParams,
- type SiteConfigResolveParams as SiteConfigResolveParams,
+ type ConfigRegistryListParams as ConfigRegistryListParams,
+ type ConfigRegistryLookupParams as ConfigRegistryLookupParams,
+ type ConfigRegistryResolveParams as ConfigRegistryResolveParams,
};
export {
diff --git a/src/resources/config-registry.ts b/src/resources/config-registry.ts
new file mode 100644
index 00000000..548645a7
--- /dev/null
+++ b/src/resources/config-registry.ts
@@ -0,0 +1,3 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+export * from './config-registry/index';
diff --git a/src/resources/config-registry/analyses.ts b/src/resources/config-registry/analyses.ts
new file mode 100644
index 00000000..187ffde9
--- /dev/null
+++ b/src/resources/config-registry/analyses.ts
@@ -0,0 +1,63 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../../core/resource';
+import * as ConfigRegistryAPI from './config-registry';
+import { AnalysisSummariesOffsetPagination } from './config-registry';
+import { APIPromise } from '../../core/api-promise';
+import { OffsetPagination, type OffsetPaginationParams, PagePromise } from '../../core/pagination';
+import { RequestOptions } from '../../internal/request-options';
+import { path } from '../../internal/utils/path';
+
+/**
+ * Resolve browser and proxy recommendations for bot-protected sites.
+ */
+export class Analyses extends APIResource {
+ /**
+ * Returns a project-scoped historical analysis and the recommendation outcome
+ * concluded by that run. Later knowledge does not change this response.
+ *
+ * @example
+ * ```ts
+ * const configRegistryResponse =
+ * await client.configRegistry.analyses.retrieve('id');
+ * ```
+ */
+ retrieve(id: string, options?: RequestOptions): APIPromise {
+ return this._client.get(path`/config-registry/analyses/${id}`, options);
+ }
+
+ /**
+ * Lists analyses for the selected project, newest first.
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const analysisSummary of client.configRegistry.analyses.list()) {
+ * // ...
+ * }
+ * ```
+ */
+ list(
+ query: AnalysisListParams | null | undefined = {},
+ options?: RequestOptions,
+ ): PagePromise {
+ return this._client.getAPIList(
+ '/config-registry/analyses',
+ OffsetPagination,
+ { query, ...options },
+ );
+ }
+}
+
+export interface AnalysisListParams extends OffsetPaginationParams {
+ /**
+ * Case-insensitive substring search over requested URLs.
+ */
+ search?: string;
+}
+
+export declare namespace Analyses {
+ export { type AnalysisListParams as AnalysisListParams };
+}
+
+export { type AnalysisSummariesOffsetPagination };
diff --git a/src/resources/site-configs.ts b/src/resources/config-registry/config-registry.ts
similarity index 77%
rename from src/resources/site-configs.ts
rename to src/resources/config-registry/config-registry.ts
index 2cbe9231..8e05c8c2 100644
--- a/src/resources/site-configs.ts
+++ b/src/resources/config-registry/config-registry.ts
@@ -1,47 +1,18 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-import { APIResource } from '../core/resource';
-import * as Shared from './shared';
-import { APIPromise } from '../core/api-promise';
-import { OffsetPagination, type OffsetPaginationParams, PagePromise } from '../core/pagination';
-import { RequestOptions } from '../internal/request-options';
-import { path } from '../internal/utils/path';
+import { APIResource } from '../../core/resource';
+import * as Shared from '../shared';
+import * as AnalysesAPI from './analyses';
+import { Analyses, AnalysisListParams } from './analyses';
+import { APIPromise } from '../../core/api-promise';
+import { OffsetPagination, type OffsetPaginationParams, PagePromise } from '../../core/pagination';
+import { RequestOptions } from '../../internal/request-options';
/**
* Resolve browser and proxy recommendations for bot-protected sites.
*/
-export class SiteConfigs extends APIResource {
- /**
- * Returns a project-scoped historical analysis and the recommendation outcome
- * concluded by that run. Later knowledge does not change this response.
- *
- * @example
- * ```ts
- * const siteConfigResponse =
- * await client.siteConfigs.retrieve('id');
- * ```
- */
- retrieve(id: string, options?: RequestOptions): APIPromise {
- return this._client.get(path`/site-configs/${id}`, options);
- }
-
- /**
- * Lists analyses for the selected project, newest first.
- *
- * @example
- * ```ts
- * // Automatically fetches more pages as needed.
- * for await (const analysisSummary of client.siteConfigs.list()) {
- * // ...
- * }
- * ```
- */
- list(
- query: SiteConfigListParams | null | undefined = {},
- options?: RequestOptions,
- ): PagePromise {
- return this._client.getAPIList('/site-configs', OffsetPagination, { query, ...options });
- }
+export class ConfigRegistry extends APIResource {
+ analyses: AnalysesAPI.Analyses = new AnalysesAPI.Analyses(this._client);
/**
* Lists unique domains previously analyzed by the selected project with their
@@ -50,16 +21,16 @@ export class SiteConfigs extends APIResource {
* @example
* ```ts
* // Automatically fetches more pages as needed.
- * for await (const recommendationSummary of client.siteConfigs.listRecommendations()) {
+ * for await (const recommendationSummary of client.configRegistry.list()) {
* // ...
* }
* ```
*/
- listRecommendations(
- query: SiteConfigListRecommendationsParams | null | undefined = {},
+ list(
+ query: ConfigRegistryListParams | null | undefined = {},
options?: RequestOptions,
): PagePromise {
- return this._client.getAPIList('/site-configs/recommendations', OffsetPagination, {
+ return this._client.getAPIList('/config-registry', OffsetPagination, {
query,
...options,
});
@@ -67,40 +38,41 @@ export class SiteConfigs extends APIResource {
/**
* Returns current global knowledge without resolving DNS, creating an analysis, or
- * updating Site Config data.
+ * updating config registry data.
*
* @example
* ```ts
- * const lookupResponse = await client.siteConfigs.lookup({
+ * const lookupResponse = await client.configRegistry.lookup({
* url: 'https://example.com',
* });
* ```
*/
- lookup(body: SiteConfigLookupParams, options?: RequestOptions): APIPromise {
- return this._client.post('/site-configs/lookup', { body, ...options });
+ lookup(body: ConfigRegistryLookupParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/config-registry/lookup', { body, ...options });
}
/**
* Explicitly starts or retries a project-scoped background analysis while
- * preserving current global knowledge when available. Use `/site-configs/lookup`
- * for side-effect-free reads.
+ * preserving current global knowledge when available. Use
+ * `/config-registry/lookup` for side-effect-free reads.
*
* @example
* ```ts
- * const siteConfigResponse = await client.siteConfigs.resolve(
- * { url: 'https://example.com' },
- * );
+ * const configRegistryResponse =
+ * await client.configRegistry.resolve({
+ * url: 'https://example.com',
+ * });
* ```
*/
- resolve(body: SiteConfigResolveParams, options?: RequestOptions): APIPromise {
- return this._client.post('/site-configs/resolve', { body, ...options });
+ resolve(body: ConfigRegistryResolveParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/config-registry/resolve', { body, ...options });
}
}
-export type AnalysisSummariesOffsetPagination = OffsetPagination;
-
export type RecommendationSummariesOffsetPagination = OffsetPagination;
+export type AnalysisSummariesOffsetPagination = OffsetPagination;
+
export interface Analysis {
/**
* Discovery run ID used to poll analysis status.
@@ -124,7 +96,7 @@ export interface Analysis {
finished_at: string | null;
/**
- * Lifecycle status of the background analysis.
+ * Lifecycle status of a background analysis.
*/
status: 'running' | 'completed' | 'failed' | 'canceled';
}
@@ -162,6 +134,21 @@ export interface Browser {
viewport: Shared.BrowserViewport;
}
+export interface ConfigRegistryResponse {
+ /**
+ * Pollable analysis after workflow submission is acknowledged. Null when no
+ * refresh was submitted.
+ */
+ analysis: Analysis | null;
+
+ /**
+ * A recommendation or a structured no-recommendation result.
+ */
+ recommendation: RecommendationResult | null;
+
+ target: Target;
+}
+
export interface Evidence {
accessed: number;
@@ -216,8 +203,7 @@ export interface LookupResponse {
export interface NoRecommendation {
/**
- * Machine-readable reason Kernel cannot currently provide a Site Config
- * recommendation.
+ * Machine-readable reason Kernel cannot currently provide a config recommendation.
*/
code: 'proxy_restricted' | 'no_working_configuration' | 'inconclusive';
@@ -232,13 +218,13 @@ export interface NoRecommendation {
/**
* Proxy recipe for the recommended browser.
*/
-export type Proxy = Proxy.SiteConfigDirectProxy | Proxy.SiteConfigManagedProxy;
+export type Proxy = Proxy.ConfigRegistryDirectProxy | Proxy.ConfigRegistryManagedProxy;
export namespace Proxy {
/**
* Direct egress recipe. Pass `{ "mode": "direct" }` as the browser's `proxy`.
*/
- export interface SiteConfigDirectProxy {
+ export interface ConfigRegistryDirectProxy {
mode: 'direct';
}
@@ -247,16 +233,16 @@ export namespace Proxy {
* create the resource once, retain its ID, and reuse that ID as the browser's
* `proxy.id`. Do not submit this recipe before every browser session.
*/
- export interface SiteConfigManagedProxy {
+ export interface ConfigRegistryManagedProxy {
/**
* Configuration for routing traffic through a proxy.
*/
- create: SiteConfigManagedProxy.Create;
+ create: ConfigRegistryManagedProxy.Create;
mode: 'managed';
}
- export namespace SiteConfigManagedProxy {
+ export namespace ConfigRegistryManagedProxy {
/**
* Configuration for routing traffic through a proxy.
*/
@@ -444,6 +430,16 @@ export interface Recommendation {
export type RecommendationResult = Recommendation | NoRecommendation;
export interface RecommendationSummary {
+ /**
+ * ID of the most recently requested analysis for this domain.
+ */
+ analysis_id: string;
+
+ /**
+ * Lifecycle status of the most recently requested analysis for this domain.
+ */
+ analysis_status: 'running' | 'completed' | 'failed' | 'canceled';
+
/**
* Most recent time the selected project requested an analysis for this domain.
*/
@@ -485,21 +481,6 @@ export interface ResolveRequest {
allowed_proxy_countries?: Array;
}
-export interface SiteConfigResponse {
- /**
- * Pollable analysis after workflow submission is acknowledged. Null when no
- * refresh was submitted.
- */
- analysis: Analysis | null;
-
- /**
- * A recommendation or a structured no-recommendation result.
- */
- recommendation: RecommendationResult | null;
-
- target: Target;
-}
-
export interface Target {
/**
* Registrable domain.
@@ -517,15 +498,19 @@ export interface Target {
normalized: string;
}
-export interface SiteConfigListParams extends OffsetPaginationParams {}
+export interface ConfigRegistryListParams extends OffsetPaginationParams {
+ /**
+ * Case-insensitive domain search. Full URLs are reduced to their registrable
+ * domain.
+ */
+ search?: string;
-export interface SiteConfigListRecommendationsParams extends OffsetPaginationParams {
- sort_by?: 'target' | 'recommended_config' | 'last_requested_at' | 'success_rate';
+ sort_by?: 'target' | 'analysis_status' | 'recommended_config' | 'last_requested_at' | 'success_rate';
sort_order?: 'asc' | 'desc';
}
-export interface SiteConfigLookupParams {
+export interface ConfigRegistryLookupParams {
/**
* Public HTTP(S) URL to look up.
*/
@@ -538,7 +523,7 @@ export interface SiteConfigLookupParams {
allowed_proxy_countries?: Array;
}
-export interface SiteConfigResolveParams {
+export interface ConfigRegistryResolveParams {
/**
* Public HTTP(S) URL to refresh.
*/
@@ -552,11 +537,14 @@ export interface SiteConfigResolveParams {
allowed_proxy_countries?: Array;
}
-export declare namespace SiteConfigs {
+ConfigRegistry.Analyses = Analyses;
+
+export declare namespace ConfigRegistry {
export {
type Analysis as Analysis,
type AnalysisSummary as AnalysisSummary,
type Browser as Browser,
+ type ConfigRegistryResponse as ConfigRegistryResponse,
type Evidence as Evidence,
type LookupRequest as LookupRequest,
type LookupResponse as LookupResponse,
@@ -566,13 +554,12 @@ export declare namespace SiteConfigs {
type RecommendationResult as RecommendationResult,
type RecommendationSummary as RecommendationSummary,
type ResolveRequest as ResolveRequest,
- type SiteConfigResponse as SiteConfigResponse,
type Target as Target,
- type AnalysisSummariesOffsetPagination as AnalysisSummariesOffsetPagination,
type RecommendationSummariesOffsetPagination as RecommendationSummariesOffsetPagination,
- type SiteConfigListParams as SiteConfigListParams,
- type SiteConfigListRecommendationsParams as SiteConfigListRecommendationsParams,
- type SiteConfigLookupParams as SiteConfigLookupParams,
- type SiteConfigResolveParams as SiteConfigResolveParams,
+ type ConfigRegistryListParams as ConfigRegistryListParams,
+ type ConfigRegistryLookupParams as ConfigRegistryLookupParams,
+ type ConfigRegistryResolveParams as ConfigRegistryResolveParams,
};
+
+ export { Analyses as Analyses, type AnalysisListParams as AnalysisListParams };
}
diff --git a/src/resources/config-registry/index.ts b/src/resources/config-registry/index.ts
new file mode 100644
index 00000000..6991de4c
--- /dev/null
+++ b/src/resources/config-registry/index.ts
@@ -0,0 +1,25 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+export { Analyses, type AnalysisListParams } from './analyses';
+export {
+ ConfigRegistry,
+ type Analysis,
+ type AnalysisSummary,
+ type Browser,
+ type ConfigRegistryResponse,
+ type Evidence,
+ type LookupRequest,
+ type LookupResponse,
+ type NoRecommendation,
+ type Proxy,
+ type Recommendation,
+ type RecommendationResult,
+ type RecommendationSummary,
+ type ResolveRequest,
+ type Target,
+ type ConfigRegistryListParams,
+ type ConfigRegistryLookupParams,
+ type ConfigRegistryResolveParams,
+ type AnalysisSummariesOffsetPagination,
+ type RecommendationSummariesOffsetPagination,
+} from './config-registry';
diff --git a/src/resources/index.ts b/src/resources/index.ts
index f397103c..fb5554a1 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -64,6 +64,28 @@ export {
type ProfilesOffsetPagination,
type BrowserListResponsesOffsetPagination,
} from './browsers/browsers';
+export {
+ ConfigRegistry,
+ type Analysis,
+ type AnalysisSummary,
+ type Browser,
+ type ConfigRegistryResponse,
+ type Evidence,
+ type LookupRequest,
+ type LookupResponse,
+ type NoRecommendation,
+ type Proxy,
+ type Recommendation,
+ type RecommendationResult,
+ type RecommendationSummary,
+ type ResolveRequest,
+ type Target,
+ type ConfigRegistryListParams,
+ type ConfigRegistryLookupParams,
+ type ConfigRegistryResolveParams,
+ type AnalysisSummariesOffsetPagination,
+ type RecommendationSummariesOffsetPagination,
+} from './config-registry/config-registry';
export {
CredentialProviders,
type CreateCredentialProviderRequest,
@@ -156,27 +178,4 @@ export {
type ProxyCheckParams,
type ProxyListResponsesOffsetPagination,
} from './proxies';
-export {
- SiteConfigs,
- type Analysis,
- type AnalysisSummary,
- type Browser,
- type Evidence,
- type LookupRequest,
- type LookupResponse,
- type NoRecommendation,
- type Proxy,
- type Recommendation,
- type RecommendationResult,
- type RecommendationSummary,
- type ResolveRequest,
- type SiteConfigResponse,
- type Target,
- type SiteConfigListParams,
- type SiteConfigListRecommendationsParams,
- type SiteConfigLookupParams,
- type SiteConfigResolveParams,
- type AnalysisSummariesOffsetPagination,
- type RecommendationSummariesOffsetPagination,
-} from './site-configs';
export { Telemetry } from './telemetry/telemetry';
diff --git a/tests/api-resources/config-registry/analyses.test.ts b/tests/api-resources/config-registry/analyses.test.ts
new file mode 100644
index 00000000..35811e58
--- /dev/null
+++ b/tests/api-resources/config-registry/analyses.test.ts
@@ -0,0 +1,49 @@
+// 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 analyses', () => {
+ // Mock server tests are disabled
+ test.skip('retrieve', async () => {
+ const responsePromise = client.configRegistry.analyses.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('list', async () => {
+ const responsePromise = client.configRegistry.analyses.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.configRegistry.analyses.list(
+ {
+ limit: 1,
+ offset: 0,
+ search: 'search',
+ },
+ { path: '/_stainless_unknown_path' },
+ ),
+ ).rejects.toThrow(Kernel.NotFoundError);
+ });
+});
diff --git a/tests/api-resources/site-configs.test.ts b/tests/api-resources/config-registry/config-registry.test.ts
similarity index 57%
rename from tests/api-resources/site-configs.test.ts
rename to tests/api-resources/config-registry/config-registry.test.ts
index 0a71e191..abd719e6 100644
--- a/tests/api-resources/site-configs.test.ts
+++ b/tests/api-resources/config-registry/config-registry.test.ts
@@ -7,22 +7,10 @@ const client = new Kernel({
baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
});
-describe('resource siteConfigs', () => {
- // Mock server tests are disabled
- test.skip('retrieve', async () => {
- const responsePromise = client.siteConfigs.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);
- });
-
+describe('resource configRegistry', () => {
// Mock server tests are disabled
test.skip('list', async () => {
- const responsePromise = client.siteConfigs.list();
+ const responsePromise = client.configRegistry.list();
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
@@ -36,30 +24,11 @@ describe('resource siteConfigs', () => {
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.siteConfigs.list({ limit: 1, offset: 0 }, { path: '/_stainless_unknown_path' }),
- ).rejects.toThrow(Kernel.NotFoundError);
- });
-
- // Mock server tests are disabled
- test.skip('listRecommendations', async () => {
- const responsePromise = client.siteConfigs.listRecommendations();
- 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('listRecommendations: 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.siteConfigs.listRecommendations(
+ client.configRegistry.list(
{
limit: 1,
offset: 0,
+ search: 'search',
sort_by: 'target',
sort_order: 'asc',
},
@@ -70,7 +39,7 @@ describe('resource siteConfigs', () => {
// Mock server tests are disabled
test.skip('lookup: only required params', async () => {
- const responsePromise = client.siteConfigs.lookup({ url: 'https://example.com' });
+ const responsePromise = client.configRegistry.lookup({ url: 'https://example.com' });
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
@@ -82,7 +51,7 @@ describe('resource siteConfigs', () => {
// Mock server tests are disabled
test.skip('lookup: required and optional params', async () => {
- const response = await client.siteConfigs.lookup({
+ const response = await client.configRegistry.lookup({
url: 'https://example.com',
allowed_proxy_countries: ['US'],
});
@@ -90,7 +59,7 @@ describe('resource siteConfigs', () => {
// Mock server tests are disabled
test.skip('resolve: only required params', async () => {
- const responsePromise = client.siteConfigs.resolve({ url: 'https://example.com' });
+ const responsePromise = client.configRegistry.resolve({ url: 'https://example.com' });
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
@@ -102,7 +71,7 @@ describe('resource siteConfigs', () => {
// Mock server tests are disabled
test.skip('resolve: required and optional params', async () => {
- const response = await client.siteConfigs.resolve({
+ const response = await client.configRegistry.resolve({
url: 'https://example.com',
allowed_proxy_countries: ['US'],
});
From 63c21961de1fcbdc4163b841c88d5541620c7298 Mon Sep 17 00:00:00 2001
From: "kernel-internal[bot]"
<260533166+kernel-internal[bot]@users.noreply.github.com>
Date: Thu, 27 Aug 2026 00:00:43 +0000
Subject: [PATCH 2/2] release: 0.96.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 7 +++++++
package.json | 2 +-
src/version.ts | 2 +-
4 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index efb7bd94..6b5b821b 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.95.0"
+ ".": "0.96.0"
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 11384fcf..a505c178 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [0.96.0](https://github.com/kernel/kernel-node-sdk/compare/v0.95.0...v0.96.0) (2026-08-27)
+
+
+### Features
+
+* Rename the site configs API to config registry ([32f4b97](https://github.com/kernel/kernel-node-sdk/commit/32f4b9747b9ba317b41d1a89a5162b6e81d61835))
+
## [0.95.0](https://github.com/kernel/kernel-node-sdk/compare/v0.94.0...v0.95.0) (2026-08-26)
diff --git a/package.json b/package.json
index 4cf44668..9e7f9a1b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@onkernel/sdk",
- "version": "0.95.0",
+ "version": "0.96.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 d1d95222..b75d8d52 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.95.0'; // x-release-please-version
+export const VERSION = '0.96.0'; // x-release-please-version