@xemahq/llm-registry-api-client 0.8.8 → 0.8.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -223,14 +223,66 @@ const customFetch = async (url, options) => {
223
223
  }
224
224
  };
225
225
  exports.customFetch = customFetch;
226
- async function parseBody(response) {
227
- const contentType = response.headers.get('content-type');
228
- if (contentType?.includes('application/json')) {
229
- return response.json();
226
+ /**
227
+ * Does this media type carry JSON?
228
+ *
229
+ * ── THE OUTAGE THIS FIXES ────────────────────────────────────────────────
230
+ *
231
+ * This used to be `contentType?.includes('application/json')`, and EVERY error
232
+ * this fleet returns failed that test. The platform's `GlobalExceptionFilter`
233
+ * emits RFC 9457 problem documents and sets the media type explicitly —
234
+ * `.type(PROBLEM_DETAILS_CONTENT_TYPE)` before `.json()`, so it cannot be
235
+ * overridden — and that constant is `application/problem+json`, which does NOT
236
+ * contain the substring `application/json`: after `application/` comes
237
+ * `problem+json`.
238
+ *
239
+ * So every non-2xx body fell through to `response.text()` and reached the
240
+ * caller as an UNPARSED STRING. `ClientError.body` is typed `unknown`, so
241
+ * nothing complained; every consumer that reads a machine-readable code off an
242
+ * error — `error.body.code`, `error.body.details.code` — silently read
243
+ * `undefined` instead, for every error, in every service.
244
+ *
245
+ * Measured in production on 2026-09-15: skill-registry-api's
246
+ * `resolveOrNull()` absorbs `RELEASE_CHANNEL_NOT_FOUND` into `null` by exactly
247
+ * that read. With the code unreadable the absorb never fired, a routine "no
248
+ * pointer on this channel" 404 became a 500 on `GET /skills` and
249
+ * `GET /describe-objects`, and agent-session-api's `apply_control_bundle` step
250
+ * aborted EVERY session launch in the organisation — 7,871 failed resolutions
251
+ * an hour. A fix written for that exact page months earlier was present in the
252
+ * running image and could not help, because the classifier it repaired was
253
+ * being handed a string.
254
+ *
255
+ * ── WHY THE STRUCTURED SUFFIX, NOT A SECOND SUBSTRING ────────────────────
256
+ *
257
+ * Adding `|| includes('application/problem+json')` would fix this one media
258
+ * type and leave the next one — `application/vnd.api+json`, and anything else
259
+ * a service legitimately emits. RFC 6839 defines `+json` as the structured
260
+ * syntax suffix meaning "this is JSON"; that is the actual rule, so it is the
261
+ * rule implemented. Parameters are stripped first, because
262
+ * `application/problem+json; charset=utf-8` is the same media type.
263
+ */
264
+ function isJsonMediaType(contentType) {
265
+ if (contentType === null) {
266
+ return false;
230
267
  }
268
+ const essence = contentType.split(';')[0]?.trim().toLowerCase() ?? '';
269
+ return essence === 'application/json' || essence.endsWith('+json');
270
+ }
271
+ async function parseBody(response) {
272
+ // 204 FIRST, and deliberately — this ORDER is carried from `develop`, which
273
+ // fixed the same defect independently and got this half right where `main`
274
+ // did not. A 204 carries no body, so `response.json()` on one throws
275
+ // SyntaxError; and a 204 whose headers STILL declare a JSON content type is
276
+ // ordinary, because the framework sets the header before the handler returns
277
+ // nothing. With the JSON branch first, a documented `undefined` becomes a
278
+ // thrown parse error. Pinned by a case in `transport-problem-json.test.cjs`.
231
279
  if (response.status === 204) {
232
280
  return undefined;
233
281
  }
282
+ const contentType = response.headers.get('content-type');
283
+ if (isJsonMediaType(contentType)) {
284
+ return response.json();
285
+ }
234
286
  return response.text();
235
287
  }
236
288
  function parseRetryAfter(value) {
@@ -3,7 +3,7 @@
3
3
  * LLM Registry API
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
- import type { EmbeddingCommitmentActivationDtoDataEnvelope, EmbeddingCommitmentDtoDataEnvelope, EmbeddingMigrationDtoDataEnvelope, EmbeddingMigrationRollbackDtoDataEnvelope, EmbeddingModelOptionDtoDataArrayEnvelope, MigrationAcknowledgementDtoDataEnvelope, MigrationConsumerDoneDto, MigrationConsumerFailedDto, MigrationHeartbeatDto, MigrationProvisionDto, ResolvedEmbeddingCommitmentDtoDataEnvelope, StartEmbeddingMigrationDto, UpsertEmbeddingCommitmentDto } from '../../models';
6
+ import type { EmbeddingCommitmentActivationDtoDataEnvelope, EmbeddingCommitmentDtoDataEnvelope, EmbeddingMigrationDtoDataEnvelope, EmbeddingMigrationRollbackDtoDataEnvelope, EmbeddingModelOptionDtoDataArrayEnvelope, EmbeddingStorageDeclarationAckDtoDataEnvelope, EmbeddingStorageDeclarationDto, MigrationAcknowledgementDtoDataEnvelope, MigrationConsumerDoneDto, MigrationConsumerFailedDto, MigrationHeartbeatDto, MigrationProvisionDto, ResolvedEmbeddingCommitmentDtoDataEnvelope, StartEmbeddingMigrationDto, UpsertEmbeddingCommitmentDto } from '../../models';
7
7
  export declare const getEmbeddingCommitmentControllerGetCommitmentUrl: () => string;
8
8
  /**
9
9
  * @summary Get the org's embedding commitment
@@ -39,6 +39,11 @@ export declare const getEmbeddingCommitmentControllerProvisionUrl: (migrationId:
39
39
  * @summary Consumer worker reports that it has provisioned target storage and is ready to dual-write. Records the high-water-mark cursor.
40
40
  */
41
41
  export declare const embeddingCommitmentControllerProvision: (migrationId: string, migrationProvisionDto: MigrationProvisionDto, options?: RequestInit) => Promise<MigrationAcknowledgementDtoDataEnvelope>;
42
+ export declare const getEmbeddingCommitmentControllerDeclareStorageUrl: () => string;
43
+ /**
44
+ * @summary A consumer declares what its vector storage can hold. Called on the consumer's boot, which is the moment it has just read its own backend — so the declaration moves exactly when the fact does.
45
+ */
46
+ export declare const embeddingCommitmentControllerDeclareStorage: (embeddingStorageDeclarationDto: EmbeddingStorageDeclarationDto, options?: RequestInit) => Promise<EmbeddingStorageDeclarationAckDtoDataEnvelope>;
42
47
  export declare const getEmbeddingCommitmentControllerHeartbeatUrl: (migrationId: string) => string;
43
48
  /**
44
49
  * @summary Consumer worker advances the durable cursor after processing a batch. Used by the reconciliation cron to detect stalled walkers.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.embeddingCommitmentControllerResolveOrg = exports.getEmbeddingCommitmentControllerResolveOrgUrl = exports.embeddingCommitmentControllerConsumerFailed = exports.getEmbeddingCommitmentControllerConsumerFailedUrl = exports.embeddingCommitmentControllerConsumerDone = exports.getEmbeddingCommitmentControllerConsumerDoneUrl = exports.embeddingCommitmentControllerHeartbeat = exports.getEmbeddingCommitmentControllerHeartbeatUrl = exports.embeddingCommitmentControllerProvision = exports.getEmbeddingCommitmentControllerProvisionUrl = exports.embeddingCommitmentControllerRollback = exports.getEmbeddingCommitmentControllerRollbackUrl = exports.embeddingCommitmentControllerStartMigration = exports.getEmbeddingCommitmentControllerStartMigrationUrl = exports.embeddingCommitmentControllerActivate = exports.getEmbeddingCommitmentControllerActivateUrl = exports.embeddingCommitmentControllerListAvailableModels = exports.getEmbeddingCommitmentControllerListAvailableModelsUrl = exports.embeddingCommitmentControllerUpsertCommitment = exports.getEmbeddingCommitmentControllerUpsertCommitmentUrl = exports.embeddingCommitmentControllerGetCommitment = exports.getEmbeddingCommitmentControllerGetCommitmentUrl = void 0;
3
+ exports.embeddingCommitmentControllerResolveOrg = exports.getEmbeddingCommitmentControllerResolveOrgUrl = exports.embeddingCommitmentControllerConsumerFailed = exports.getEmbeddingCommitmentControllerConsumerFailedUrl = exports.embeddingCommitmentControllerConsumerDone = exports.getEmbeddingCommitmentControllerConsumerDoneUrl = exports.embeddingCommitmentControllerHeartbeat = exports.getEmbeddingCommitmentControllerHeartbeatUrl = exports.embeddingCommitmentControllerDeclareStorage = exports.getEmbeddingCommitmentControllerDeclareStorageUrl = exports.embeddingCommitmentControllerProvision = exports.getEmbeddingCommitmentControllerProvisionUrl = exports.embeddingCommitmentControllerRollback = exports.getEmbeddingCommitmentControllerRollbackUrl = exports.embeddingCommitmentControllerStartMigration = exports.getEmbeddingCommitmentControllerStartMigrationUrl = exports.embeddingCommitmentControllerActivate = exports.getEmbeddingCommitmentControllerActivateUrl = exports.embeddingCommitmentControllerListAvailableModels = exports.getEmbeddingCommitmentControllerListAvailableModelsUrl = exports.embeddingCommitmentControllerUpsertCommitment = exports.getEmbeddingCommitmentControllerUpsertCommitmentUrl = exports.embeddingCommitmentControllerGetCommitment = exports.getEmbeddingCommitmentControllerGetCommitmentUrl = void 0;
4
4
  const custom_fetch_1 = require("../../custom-fetch");
5
5
  const getEmbeddingCommitmentControllerGetCommitmentUrl = () => {
6
6
  return `/embedding-commitment`;
@@ -106,6 +106,22 @@ const embeddingCommitmentControllerProvision = async (migrationId, migrationProv
106
106
  });
107
107
  };
108
108
  exports.embeddingCommitmentControllerProvision = embeddingCommitmentControllerProvision;
109
+ const getEmbeddingCommitmentControllerDeclareStorageUrl = () => {
110
+ return `/embedding-commitment/storage-declaration`;
111
+ };
112
+ exports.getEmbeddingCommitmentControllerDeclareStorageUrl = getEmbeddingCommitmentControllerDeclareStorageUrl;
113
+ /**
114
+ * @summary A consumer declares what its vector storage can hold. Called on the consumer's boot, which is the moment it has just read its own backend — so the declaration moves exactly when the fact does.
115
+ */
116
+ const embeddingCommitmentControllerDeclareStorage = async (embeddingStorageDeclarationDto, options) => {
117
+ return (0, custom_fetch_1.customFetch)((0, exports.getEmbeddingCommitmentControllerDeclareStorageUrl)(), {
118
+ ...options,
119
+ method: 'POST',
120
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
121
+ body: JSON.stringify(embeddingStorageDeclarationDto)
122
+ });
123
+ };
124
+ exports.embeddingCommitmentControllerDeclareStorage = embeddingCommitmentControllerDeclareStorage;
109
125
  const getEmbeddingCommitmentControllerHeartbeatUrl = (migrationId) => {
110
126
  return `/embedding-commitment/migrate/${migrationId}/heartbeat`;
111
127
  };
@@ -8,4 +8,5 @@ export declare const AgentCapabilityApertureDtoKind: {
8
8
  readonly unrestricted: "unrestricted";
9
9
  readonly armed: "armed";
10
10
  readonly scoped: "scoped";
11
+ readonly representative: "representative";
11
12
  };
@@ -10,4 +10,5 @@ exports.AgentCapabilityApertureDtoKind = {
10
10
  unrestricted: 'unrestricted',
11
11
  armed: 'armed',
12
12
  scoped: 'scoped',
13
+ representative: 'representative',
13
14
  };
@@ -15,7 +15,14 @@ export interface CreateProviderDto {
15
15
  apiType: CreateProviderDtoApiType;
16
16
  baseUrl: string;
17
17
  authType?: CreateProviderDtoAuthType;
18
- apiKey: string;
18
+ /** Raw API key. ENROLMENT ONLY: it is sealed into the credential plane on arrival and never stored on the provider. Mutually exclusive with `credentialRef`; exactly one of the two is required. Prefer `credentialRef` in declarative configuration, where a raw key would reach a tfvars file, a plan and the state backend. */
19
+ apiKey?: string;
20
+ /**
21
+ * Opaque credential-binding id held by the credential plane. Mutually exclusive with `apiKey`; exactly one of the two is required. The raw key never crosses this door when this form is used.
22
+ * @minLength 1
23
+ * @maxLength 200
24
+ */
25
+ credentialRef?: string;
19
26
  /** Catalog provider slug — used to seed known models on creation */
20
27
  catalogSlug?: string;
21
28
  /**
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Generated by @xemahq/api-client-generator — do not edit manually.
3
+ * LLM Registry API
4
+ * OpenAPI spec version: 0.1.3
5
+ */
6
+ export type EmbeddingConsumer = typeof EmbeddingConsumer[keyof typeof EmbeddingConsumer];
7
+ export declare const EmbeddingConsumer: {
8
+ readonly search_api: "search_api";
9
+ readonly memory_api: "memory_api";
10
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Generated by @xemahq/api-client-generator — do not edit manually.
4
+ * LLM Registry API
5
+ * OpenAPI spec version: 0.1.3
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.EmbeddingConsumer = void 0;
9
+ exports.EmbeddingConsumer = {
10
+ search_api: 'search_api',
11
+ memory_api: 'memory_api',
12
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Generated by @xemahq/api-client-generator — do not edit manually.
3
+ * LLM Registry API
4
+ * OpenAPI spec version: 0.1.3
5
+ */
6
+ /**
7
+ * What this deployment's vector storage would do with this model's dimension. `indexed` is fully served; `stored_unindexed` works and is a linear scan; `unsupported` cannot be stored and must not be offered; `unverified` means NO consumer has declared what it can hold — which is an ANSWER, not a synonym for "fine". A client MUST render this rather than deciding from a local list of dimensions: a local list is how 4096 came to be offered with no storage behind it.
8
+ */
9
+ export type EmbeddingDimensionVerdict = typeof EmbeddingDimensionVerdict[keyof typeof EmbeddingDimensionVerdict];
10
+ export declare const EmbeddingDimensionVerdict: {
11
+ readonly indexed: "indexed";
12
+ readonly stored_unindexed: "stored_unindexed";
13
+ readonly unsupported: "unsupported";
14
+ readonly unverified: "unverified";
15
+ };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * Generated by @xemahq/api-client-generator — do not edit manually.
4
+ * LLM Registry API
5
+ * OpenAPI spec version: 0.1.3
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.EmbeddingDimensionVerdict = void 0;
9
+ exports.EmbeddingDimensionVerdict = {
10
+ indexed: 'indexed',
11
+ stored_unindexed: 'stored_unindexed',
12
+ unsupported: 'unsupported',
13
+ unverified: 'unverified',
14
+ };
@@ -3,6 +3,7 @@
3
3
  * LLM Registry API
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
+ import type { EmbeddingDimensionVerdict } from './embeddingDimensionVerdict.js';
6
7
  import type { EmbeddingProviderSummaryDto } from './embeddingProviderSummaryDto.js';
7
8
  export interface EmbeddingModelOptionDto {
8
9
  id: string;
@@ -12,4 +13,6 @@ export interface EmbeddingModelOptionDto {
12
13
  embeddingDimension: number;
13
14
  capabilities: string[];
14
15
  provider: EmbeddingProviderSummaryDto;
16
+ /** What this deployment's vector storage would do with this model's dimension. `indexed` is fully served; `stored_unindexed` works and is a linear scan; `unsupported` cannot be stored and must not be offered; `unverified` means NO consumer has declared what it can hold — which is an ANSWER, not a synonym for "fine". A client MUST render this rather than deciding from a local list of dimensions: a local list is how 4096 came to be offered with no storage behind it. */
17
+ dimensionVerdict: EmbeddingDimensionVerdict;
15
18
  }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Generated by @xemahq/api-client-generator — do not edit manually.
3
+ * LLM Registry API
4
+ * OpenAPI spec version: 0.1.3
5
+ */
6
+ export interface EmbeddingStorageDeclarationAckDto {
7
+ recorded: boolean;
8
+ /** When THIS service recorded it, from its own clock rather than the caller's. It is what makes a consumer that stopped re-declaring visible: its row simply stops moving. */
9
+ declaredAt: string;
10
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Generated by @xemahq/api-client-generator — do not edit manually.
4
+ * LLM Registry API
5
+ * OpenAPI spec version: 0.1.3
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generated by @xemahq/api-client-generator — do not edit manually.
3
+ * LLM Registry API
4
+ * OpenAPI spec version: 0.1.3
5
+ */
6
+ import type { EmbeddingStorageDeclarationAckDto } from './embeddingStorageDeclarationAckDto.js';
7
+ export interface EmbeddingStorageDeclarationAckDtoDataEnvelope {
8
+ data: EmbeddingStorageDeclarationAckDto;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Generated by @xemahq/api-client-generator — do not edit manually.
3
+ * LLM Registry API
4
+ * OpenAPI spec version: 0.1.3
5
+ */
6
+ import type { EmbeddingConsumer } from './embeddingConsumer.js';
7
+ export interface EmbeddingStorageDeclarationDto {
8
+ consumer: EmbeddingConsumer;
9
+ /**
10
+ * Narrowest vector this consumer can store.
11
+ * @minimum 1
12
+ */
13
+ minDimension: number;
14
+ /**
15
+ * Widest vector this consumer can store.
16
+ * @minimum 1
17
+ */
18
+ maxDimension: number;
19
+ /**
20
+ * Widest vector it can store AND serve from an ANN index. Between this and `maxDimension` recall is an exact scan: correct, and slower. It is advisory and never causes a refusal — conflating the two ceilings is what made 4096 look unsupported when it was merely unindexable.
21
+ * @minimum 0
22
+ */
23
+ maxIndexedDimension: number;
24
+ backend: string;
25
+ /** Provenance for the numbers above. A bare ceiling is a fact with no source; naming the backend and version makes it checkable, and makes a backend change visible instead of silently keeping an old number. */
26
+ backendVersion: string;
27
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -140,6 +140,8 @@ export * from './embeddingCommitmentActivationDtoDataEnvelope';
140
140
  export * from './embeddingCommitmentDto';
141
141
  export * from './embeddingCommitmentDtoDataEnvelope';
142
142
  export * from './embeddingCommitmentDtoState';
143
+ export * from './embeddingConsumer';
144
+ export * from './embeddingDimensionVerdict';
143
145
  export * from './embeddingMigrationDto';
144
146
  export * from './embeddingMigrationDtoDataEnvelope';
145
147
  export * from './embeddingMigrationDtoState';
@@ -148,6 +150,9 @@ export * from './embeddingMigrationRollbackDtoDataEnvelope';
148
150
  export * from './embeddingModelOptionDto';
149
151
  export * from './embeddingModelOptionDtoDataArrayEnvelope';
150
152
  export * from './embeddingProviderSummaryDto';
153
+ export * from './embeddingStorageDeclarationAckDto';
154
+ export * from './embeddingStorageDeclarationAckDtoDataEnvelope';
155
+ export * from './embeddingStorageDeclarationDto';
151
156
  export * from './exactAgentRevisionAuthorityResponseDto';
152
157
  export * from './exactAgentRevisionAuthorityResponseDtoDataEnvelope';
153
158
  export * from './exactAgentRevisionAuthorityResponseDtoReachTier';
@@ -157,6 +157,8 @@ __exportStar(require("./embeddingCommitmentActivationDtoDataEnvelope"), exports)
157
157
  __exportStar(require("./embeddingCommitmentDto"), exports);
158
158
  __exportStar(require("./embeddingCommitmentDtoDataEnvelope"), exports);
159
159
  __exportStar(require("./embeddingCommitmentDtoState"), exports);
160
+ __exportStar(require("./embeddingConsumer"), exports);
161
+ __exportStar(require("./embeddingDimensionVerdict"), exports);
160
162
  __exportStar(require("./embeddingMigrationDto"), exports);
161
163
  __exportStar(require("./embeddingMigrationDtoDataEnvelope"), exports);
162
164
  __exportStar(require("./embeddingMigrationDtoState"), exports);
@@ -165,6 +167,9 @@ __exportStar(require("./embeddingMigrationRollbackDtoDataEnvelope"), exports);
165
167
  __exportStar(require("./embeddingModelOptionDto"), exports);
166
168
  __exportStar(require("./embeddingModelOptionDtoDataArrayEnvelope"), exports);
167
169
  __exportStar(require("./embeddingProviderSummaryDto"), exports);
170
+ __exportStar(require("./embeddingStorageDeclarationAckDto"), exports);
171
+ __exportStar(require("./embeddingStorageDeclarationAckDtoDataEnvelope"), exports);
172
+ __exportStar(require("./embeddingStorageDeclarationDto"), exports);
168
173
  __exportStar(require("./exactAgentRevisionAuthorityResponseDto"), exports);
169
174
  __exportStar(require("./exactAgentRevisionAuthorityResponseDtoDataEnvelope"), exports);
170
175
  __exportStar(require("./exactAgentRevisionAuthorityResponseDtoReachTier"), exports);
@@ -4,6 +4,9 @@
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
6
  import type { ProblemFieldIssueDto } from './problemFieldIssueDto.js';
7
+ /**
8
+ * RFC 9457 problem document. The declared members are the reserved core; extension members are TOP-LEVEL and OPEN, owned by the refusing plane.
9
+ */
7
10
  export interface ProblemDetailsDto {
8
11
  /** Absolute URI identifying the refusal TYPE. Derived one-to-one from `code`, so a caller may branch on either and can never be told two different things. Never `about:blank`. */
9
12
  type: string;
@@ -21,4 +24,5 @@ export interface ProblemDetailsDto {
21
24
  traceId?: string;
22
25
  /** Field-level issues, when the refusal is about the request body. */
23
26
  errors?: ProblemFieldIssueDto[];
27
+ [key: string]: unknown;
24
28
  }
@@ -11,7 +11,18 @@ export interface UpdateProviderDto {
11
11
  apiType?: UpdateProviderDtoApiType;
12
12
  baseUrl?: string;
13
13
  authType?: UpdateProviderDtoAuthType;
14
+ /**
15
+ * Replace the INLINE credential. Supplying this on a provider that currently
16
+ * holds a `credentialRef` SWITCHES it to the inline form — the service
17
+ * clears the reference in the same write, so the row never holds both.
18
+ */
14
19
  apiKey?: string;
20
+ /**
21
+ * Opaque credential-binding id held by the credential plane. Supplying it switches this provider to the reference form and clears the stored key. Mutually exclusive with `apiKey` in one request.
22
+ * @minLength 1
23
+ * @maxLength 200
24
+ */
25
+ credentialRef?: string;
15
26
  isActive?: boolean;
16
27
  /**
17
28
  * Maximum concurrent requests. Set to null to remove the limit.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/llm-registry-api-client",
3
- "version": "0.8.8",
3
+ "version": "0.8.12",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [
@@ -19,7 +19,7 @@
19
19
  "service": "llm-registry-api",
20
20
  "biome": "agent-runtime",
21
21
  "target": "server",
22
- "generator": "@xemahq/api-client-generator@0.19.0",
22
+ "generator": "@xemahq/api-client-generator@0.21.0",
23
23
  "source": "openapi.public.json"
24
24
  },
25
25
  "license": "LicenseRef-Xema-BSL-1.1",