@xemahq/llm-registry-api-client 0.8.13 → 0.10.1

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.
Files changed (33) hide show
  1. package/dist/custom-fetch.d.ts +37 -8
  2. package/dist/custom-fetch.js +176 -16
  3. package/dist/endpoints/model-strategies/model-strategies.d.ts +11 -1
  4. package/dist/endpoints/model-strategies/model-strategies.js +31 -1
  5. package/dist/models/agentCapabilitySetExpressionDto.d.ts +9 -0
  6. package/dist/models/agentCapabilitySetExpressionDto.js +7 -0
  7. package/dist/models/agentNodeDto.d.ts +10 -0
  8. package/dist/models/delegatedAgentRefDto.d.ts +10 -0
  9. package/dist/models/delegatedAgentRefDto.js +7 -0
  10. package/dist/models/delegatedAgentSubjectDto.d.ts +10 -0
  11. package/dist/models/delegatedAgentSubjectDto.js +2 -0
  12. package/dist/models/delegatedAgentSubjectDtoKind.d.ts +9 -0
  13. package/dist/models/delegatedAgentSubjectDtoKind.js +11 -0
  14. package/dist/models/delegatedApertureConstraintsDto.d.ts +11 -0
  15. package/dist/models/delegatedApertureConstraintsDto.js +2 -0
  16. package/dist/models/exactAgentRevisionAuthorityResponseDto.d.ts +9 -0
  17. package/dist/models/index.d.ts +9 -0
  18. package/dist/models/index.js +9 -0
  19. package/dist/models/modelCapability.d.ts +1 -1
  20. package/dist/models/modelStrategyResponseDto.d.ts +2 -0
  21. package/dist/models/modelVocabularyKeyDto.d.ts +2 -0
  22. package/dist/models/providerOwnerSpaceKind.d.ts +13 -0
  23. package/dist/models/providerOwnerSpaceKind.js +12 -0
  24. package/dist/models/providerResponseDto.d.ts +8 -1
  25. package/dist/models/resolveModelForInvocationDto.d.ts +1 -1
  26. package/dist/models/resolvedDelegatedApertureDto.d.ts +21 -0
  27. package/dist/models/resolvedDelegatedApertureDto.js +2 -0
  28. package/dist/models/resolvedDelegatedApertureDtoReachTier.d.ts +12 -0
  29. package/dist/models/resolvedDelegatedApertureDtoReachTier.js +14 -0
  30. package/dist/models/upsertModelStrategyEntriesDto.d.ts +5 -0
  31. package/dist/models/upsertModelStrategyEntryDto.d.ts +17 -0
  32. package/dist/models/upsertModelStrategyEntryDto.js +7 -0
  33. package/package.json +2 -2
@@ -1,11 +1,21 @@
1
1
  /**
2
2
  * Configurable fetch wrapper for Orval-generated clients.
3
3
  *
4
- * GENERATED by `@xemahq/api-client-generator` — do not edit. Every client in
5
- * the fleet ships this file byte-for-byte; a local edit is erased by the next
6
- * `pnpm refresh` and, until then, makes this one client speak to the platform
7
- * differently from all of its siblings. Change the template instead:
8
- * `api-client-generator/src/lib/custom-fetch-template.ts`.
4
+ * AUTO-GENERATED by `@xemahq/api-client-generator` — DO NOT EDIT. Every client
5
+ * in the fleet ships this file byte-for-byte; a hand edit is erased by the next
6
+ * regeneration and, until then, makes this one client speak to the platform
7
+ * differently from all of its siblings.
8
+ *
9
+ * Canonical source: `CANONICAL_CUSTOM_FETCH` in
10
+ * `packages/sdks/api-client-generator/src/lib/custom-fetch-template.ts`
11
+ * (repository `xema-kernel-sdk`). Change it there.
12
+ *
13
+ * Regenerate, from the root of THIS repository:
14
+ * pnpm --filter <owning-service> run openapi
15
+ * pnpm --filter <owning-service> run client:generate
16
+ * A mirror of this client under `xema-host-web` is not regenerated there: it
17
+ * is written by the frontend bridge, `tooling/frontend-bridge` in the
18
+ * xema-monorepo aggregator.
9
19
  *
10
20
  * Consumers must call `configureClient()` before using any endpoint function.
11
21
  * The baseUrl is prepended to the relative paths generated by Orval.
@@ -31,6 +41,21 @@ export interface RetryNotice {
31
41
  /** HTTP method being re-requested. */
32
42
  method: string;
33
43
  }
44
+ /**
45
+ * Per-request context handed to the callbacks this transport awaits BEFORE it
46
+ * sends the request.
47
+ *
48
+ * `signal` is the request's own `AbortSignal` (`options.signal`). It is the
49
+ * CALLER's cancellation: a callback may use it to stop work that is private to
50
+ * this request, but a callback serving several requests from one shared,
51
+ * single-flight acquisition (a token refresh) must NOT abort that shared work
52
+ * because one caller stopped — every other caller waiting on it would fail.
53
+ * The transport stops WAITING on its own regardless, so a callback that
54
+ * ignores the signal still cannot hold an aborted request.
55
+ */
56
+ export interface ClientCallbackOptions {
57
+ signal?: AbortSignal;
58
+ }
34
59
  export interface ClientConfig {
35
60
  /**
36
61
  * Static base URL (e.g. 'http://localhost:3140') — no trailing slash.
@@ -42,9 +67,13 @@ export interface ClientConfig {
42
67
  * the service registry on EVERY request (boot-order-safe). Wired by
43
68
  * `configureOrvalClientResolved` from `@xemahq/platform-common`.
44
69
  */
45
- baseUrlResolver?: () => string | Promise<string>;
46
- /** Optional async callback to get an auth token. Auto-sets Authorization header on every request. */
47
- getAuthToken?: () => Promise<string>;
70
+ baseUrlResolver?: (options?: ClientCallbackOptions) => string | Promise<string>;
71
+ /**
72
+ * Optional async callback to get an auth token. Auto-sets Authorization
73
+ * header on every request. Receives the request's signal — see
74
+ * {@link ClientCallbackOptions} for what it may and may not abort.
75
+ */
76
+ getAuthToken?: (options?: ClientCallbackOptions) => Promise<string>;
48
77
  /** Optional callback returning headers to inject on every request. Per-call headers take precedence. */
49
78
  getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;
50
79
  /**
@@ -2,11 +2,21 @@
2
2
  /**
3
3
  * Configurable fetch wrapper for Orval-generated clients.
4
4
  *
5
- * GENERATED by `@xemahq/api-client-generator` — do not edit. Every client in
6
- * the fleet ships this file byte-for-byte; a local edit is erased by the next
7
- * `pnpm refresh` and, until then, makes this one client speak to the platform
8
- * differently from all of its siblings. Change the template instead:
9
- * `api-client-generator/src/lib/custom-fetch-template.ts`.
5
+ * AUTO-GENERATED by `@xemahq/api-client-generator` — DO NOT EDIT. Every client
6
+ * in the fleet ships this file byte-for-byte; a hand edit is erased by the next
7
+ * regeneration and, until then, makes this one client speak to the platform
8
+ * differently from all of its siblings.
9
+ *
10
+ * Canonical source: `CANONICAL_CUSTOM_FETCH` in
11
+ * `packages/sdks/api-client-generator/src/lib/custom-fetch-template.ts`
12
+ * (repository `xema-kernel-sdk`). Change it there.
13
+ *
14
+ * Regenerate, from the root of THIS repository:
15
+ * pnpm --filter <owning-service> run openapi
16
+ * pnpm --filter <owning-service> run client:generate
17
+ * A mirror of this client under `xema-host-web` is not regenerated there: it
18
+ * is written by the frontend bridge, `tooling/frontend-bridge` in the
19
+ * xema-monorepo aggregator.
10
20
  *
11
21
  * Consumers must call `configureClient()` before using any endpoint function.
12
22
  * The baseUrl is prepended to the relative paths generated by Orval.
@@ -77,6 +87,11 @@ class ClientError extends Error {
77
87
  // identity marker, not payload.
78
88
  Object.defineProperty(this, CLIENT_ERROR_BRAND, { value: true });
79
89
  }
90
+ // `override` because the member shadows `Function.prototype[Symbol.hasInstance]`,
91
+ // which a class constructor inherits: TypeScript 5.9+ reports TS4114 without it
92
+ // under `noImplicitOverride`. Measured to compile on 5.5.4, 5.9.3, 6.0.3 and
93
+ // 7.0.2 with the flag on AND off — pinned by
94
+ // tests/custom-fetch-compiles-standalone.test.cjs.
80
95
  static [Symbol.hasInstance](candidate) {
81
96
  return (typeof candidate === 'object' &&
82
97
  candidate !== null &&
@@ -85,6 +100,50 @@ class ClientError extends Error {
85
100
  }
86
101
  exports.ClientError = ClientError;
87
102
  let clientConfig = null;
103
+ /**
104
+ * THE MOUNT SCOPE — how one process can host several services without their
105
+ * clients speaking for each other.
106
+ *
107
+ * `clientConfig` below is a MODULE global, and in a single-service process
108
+ * that is correct: one writer, one configuration. Compose two services into one
109
+ * process and both call `configureClient` on THIS SAME module instance, so the
110
+ * second overwrites the first and every outbound call from BOTH services leaves
111
+ * as whichever wired itself last — wrong base URL, and, because
112
+ * `getAuthToken` is part of the config, WRONG BEARER. That is one tenant's
113
+ * service calling a peer holding another tenant's credential, and it is silent.
114
+ *
115
+ * A composing host installs a hook under this well-known symbol that answers
116
+ * one question: WHICH MOUNT is currently on the stack. Nothing else crosses.
117
+ * `configureClient` then files the config under that mount, and
118
+ * `getClientConfig` reads it back out under the same key.
119
+ *
120
+ * Three properties make this safe rather than clever:
121
+ *
122
+ * - The CONFIG is still built by the mount's own wiring, exactly as today.
123
+ * The hook never supplies one. So a mount's base URL and bearer are
124
+ * resolved FROM THE MOUNT; the scope only decides which drawer they go in.
125
+ * A hook that RETURNED configuration would be a mount taking its identity
126
+ * from ambient storage a neighbour can write — the inversion to refuse.
127
+ * - The key is an OPAQUE OBJECT and the store is a `WeakMap`, so a mount's
128
+ * configuration becomes unreachable when the host drops the mount, and no
129
+ * client can enumerate the mounts or reach a sibling's entry.
130
+ * - With NO hook installed — every process in the fleet today — both
131
+ * functions behave exactly as they did before this existed.
132
+ *
133
+ * `Symbol.for` is the seam because a generated client must keep its
134
+ * dependency surface at zero and a host cannot enumerate the clients a process
135
+ * happens to load. It is the same instrument, and the same reasoning, as the
136
+ * `ClientError` brand above.
137
+ */
138
+ const XEMA_CLIENT_CONFIG_SCOPE = Symbol.for('xema.client-config-scope');
139
+ function mountScopeHook() {
140
+ const hook = globalThis[XEMA_CLIENT_CONFIG_SCOPE];
141
+ return typeof hook === 'function' ? hook : undefined;
142
+ }
143
+ function currentMountKey() {
144
+ return mountScopeHook()?.();
145
+ }
146
+ const perMountConfig = new WeakMap();
88
147
  function configureClient(config) {
89
148
  // Fail at WIRING time, not on the request that happens to be retried. A
90
149
  // client configured to retry without an observer is the exact defect this
@@ -94,9 +153,38 @@ function configureClient(config) {
94
153
  'reports is indistinguishable from a slow server, which is how two ' +
95
154
  'silent re-attempts were read as a 3,312ms call.');
96
155
  }
156
+ const hook = mountScopeHook();
157
+ if (hook !== undefined) {
158
+ const mount = hook();
159
+ if (mount === undefined) {
160
+ // A composing host is installed and no member is on the stack, so this
161
+ // configuration belongs to NO member. Filing it in the module global
162
+ // would hand it to every member that did not configure this client —
163
+ // someone else's base URL and bearer, silently.
164
+ throw new Error('configureClient: called in a composed process outside every member. ' +
165
+ 'Configure the client inside the member that uses it (its providers ' +
166
+ 'and factories already run there).');
167
+ }
168
+ perMountConfig.set(mount, config);
169
+ return;
170
+ }
97
171
  clientConfig = config;
98
172
  }
99
173
  function getClientConfig() {
174
+ const mount = currentMountKey();
175
+ if (mount !== undefined) {
176
+ const scoped = perMountConfig.get(mount);
177
+ if (scoped) {
178
+ return scoped;
179
+ }
180
+ // A member that never configured THIS client behaves exactly like a
181
+ // dedicated service that did not either: it is refused. It used to fall
182
+ // through to the module global, which in a composed process can only have
183
+ // been written by some OTHER code — so the member called peers under a
184
+ // base URL and bearer that were never its own.
185
+ throw new Error('Client not configured for this member. Call configureClient({ baseUrl }) ' +
186
+ 'inside the member before using endpoint functions.');
187
+ }
100
188
  if (!clientConfig) {
101
189
  throw new Error('Client not configured. Call configureClient({ baseUrl }) before using endpoint functions.');
102
190
  }
@@ -155,11 +243,64 @@ const CORRELATION_ID_HEADER = 'X-Correlation-Id';
155
243
  const BASE_BACKOFF_MS = 1000;
156
244
  /** Ceiling on a single backoff, however many attempts have elapsed. */
157
245
  const MAX_BACKOFF_MS = 30_000;
158
- async function buildHeaders(config, callerHeaders) {
246
+ /*
247
+ * CALLER CANCELLATION REACHES EVERY WAIT BEFORE THE REQUEST IS SENT.
248
+ *
249
+ * `fetch` always honoured `options.signal`, but everything this transport
250
+ * awaits BEFORE `fetch` — base-URL resolution, the header callbacks, the auth
251
+ * token — did not, so a caller that aborted while a token was being minted sat
252
+ * out the mint and then, at best, had its request refused. The only way to
253
+ * cancel that wait was a process-wide interceptor aborting every outbound
254
+ * request, which also aborts a SHARED single-flight token refresh and so fails
255
+ * every other caller waiting on it.
256
+ *
257
+ * So each pre-send wait is RACED against the signal: the caller stops waiting
258
+ * at once, and the work it was waiting on carries on for anybody else. The
259
+ * rejection is the signal's own reason — exactly what `fetch` rejects with —
260
+ * so a caller sees ONE abort shape whenever it aborts. An aborted request is
261
+ * never retried. Without a signal nothing here changes.
262
+ */
263
+ function abortedReason(signal) {
264
+ // `abort()` with no argument sets a DOMException reason, so this is only
265
+ // ever `undefined` for a hand-built signal; say so rather than throw it.
266
+ return signal.reason ?? new DOMException('This operation was aborted', 'AbortError');
267
+ }
268
+ function throwIfAborted(signal) {
269
+ if (signal?.aborted) {
270
+ throw abortedReason(signal);
271
+ }
272
+ }
273
+ function raceAbort(pending, signal) {
274
+ const promise = Promise.resolve(pending);
275
+ if (!signal) {
276
+ return promise;
277
+ }
278
+ if (signal.aborted) {
279
+ promise.catch(() => undefined);
280
+ return Promise.reject(abortedReason(signal));
281
+ }
282
+ return new Promise((resolve, reject) => {
283
+ const onAbort = () => {
284
+ // The pending work may be shared; it carries on, and its eventual
285
+ // rejection must not surface as an unhandled one on this side.
286
+ promise.catch(() => undefined);
287
+ reject(abortedReason(signal));
288
+ };
289
+ signal.addEventListener('abort', onAbort, { once: true });
290
+ promise.then((value) => {
291
+ signal.removeEventListener('abort', onAbort);
292
+ resolve(value);
293
+ }, (err) => {
294
+ signal.removeEventListener('abort', onAbort);
295
+ reject(err);
296
+ });
297
+ });
298
+ }
299
+ async function buildHeaders(config, callerHeaders, signal) {
159
300
  const headers = new Headers(callerHeaders);
160
301
  // Global headers from config (caller-provided headers take precedence)
161
302
  if (config.getHeaders) {
162
- const globalHeaders = await Promise.resolve(config.getHeaders());
303
+ const globalHeaders = await raceAbort(config.getHeaders(), signal);
163
304
  for (const [key, value] of Object.entries(globalHeaders)) {
164
305
  if (!headers.has(key)) {
165
306
  headers.set(key, value);
@@ -178,14 +319,14 @@ async function buildHeaders(config, callerHeaders) {
178
319
  // receiver mints and a new trace begins, which is the truthful outcome when
179
320
  // there is nothing to continue.
180
321
  if (config.getCorrelationId && !headers.has(CORRELATION_ID_HEADER)) {
181
- const correlationId = await Promise.resolve(config.getCorrelationId());
322
+ const correlationId = await raceAbort(config.getCorrelationId(), signal);
182
323
  if (correlationId) {
183
324
  headers.set(CORRELATION_ID_HEADER, correlationId);
184
325
  }
185
326
  }
186
327
  // Auth token (caller or global headers take precedence)
187
328
  if (config.getAuthToken && !headers.has('Authorization')) {
188
- const token = await config.getAuthToken();
329
+ const token = await raceAbort(config.getAuthToken(signal ? { signal } : undefined), signal);
189
330
  headers.set('Authorization', `Bearer ${token}`);
190
331
  }
191
332
  return headers;
@@ -215,8 +356,10 @@ async function buildHeaders(config, callerHeaders) {
215
356
  */
216
357
  const customFetch = async (url, options) => {
217
358
  const config = getClientConfig();
359
+ const signal = options.signal ?? undefined;
360
+ throwIfAborted(signal);
218
361
  const base = config.baseUrlResolver
219
- ? await config.baseUrlResolver()
362
+ ? await raceAbort(config.baseUrlResolver(signal ? { signal } : undefined), signal)
220
363
  : config.baseUrl;
221
364
  if (base === undefined) {
222
365
  throw new Error('Client not configured: set baseUrl or baseUrlResolver via configureClient().');
@@ -228,7 +371,7 @@ const customFetch = async (url, options) => {
228
371
  // re-sending would replay the identical failing request with the identical
229
372
  // credential: one wasted round trip, plus a global refresh nobody asked for.
230
373
  const callerSuppliedAuth = new Headers(options.headers).has('Authorization');
231
- const headers = await buildHeaders(config, options.headers);
374
+ const headers = await buildHeaders(config, options.headers, signal);
232
375
  const requestInit = { ...options, headers };
233
376
  let delay = BASE_BACKOFF_MS;
234
377
  for (let attempt = 0;; attempt++) {
@@ -237,8 +380,8 @@ const customFetch = async (url, options) => {
237
380
  config.onUnauthorized &&
238
381
  !callerSuppliedAuth &&
239
382
  attempt === 0) {
240
- await config.onUnauthorized();
241
- const refreshedHeaders = await buildHeaders(config, options.headers);
383
+ await raceAbort(config.onUnauthorized(), signal);
384
+ const refreshedHeaders = await buildHeaders(config, options.headers, signal);
242
385
  const retryResponse = await fetch(fullUrl, {
243
386
  ...options,
244
387
  headers: refreshedHeaders,
@@ -270,7 +413,7 @@ const customFetch = async (url, options) => {
270
413
  url: fullUrl,
271
414
  method: options.method ?? 'GET',
272
415
  });
273
- await sleep(waitMs);
416
+ await sleep(waitMs, signal);
274
417
  delay = Math.min(delay * 2, MAX_BACKOFF_MS);
275
418
  }
276
419
  };
@@ -351,7 +494,24 @@ function parseRetryAfter(value) {
351
494
  function addJitter(delay) {
352
495
  return delay + (Math.random() * 2 - 1) * delay * 0.25;
353
496
  }
354
- function sleep(ms) {
355
- return new Promise((resolve) => setTimeout(resolve, ms));
497
+ /** A retry backoff; the caller's signal ends it at once and is never retried. */
498
+ function sleep(ms, signal) {
499
+ if (!signal) {
500
+ return new Promise((resolve) => setTimeout(resolve, ms));
501
+ }
502
+ if (signal.aborted) {
503
+ return Promise.reject(abortedReason(signal));
504
+ }
505
+ return new Promise((resolve, reject) => {
506
+ const onAbort = () => {
507
+ clearTimeout(timer);
508
+ reject(abortedReason(signal));
509
+ };
510
+ const timer = setTimeout(() => {
511
+ signal.removeEventListener('abort', onAbort);
512
+ resolve();
513
+ }, ms);
514
+ signal.addEventListener('abort', onAbort, { once: true });
515
+ });
356
516
  }
357
517
  exports.default = exports.customFetch;
@@ -3,7 +3,7 @@
3
3
  * LLM Registry API
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
- import type { BindModelStrategyDto, CreateModelStrategyDto, ModelStrategyControllerGetProjectBinding200, ModelStrategyResponseDtoDataArrayEnvelope, ModelStrategyResponseDtoDataEnvelope, OrgDefaultStrategyStatusResponseDtoDataEnvelope, ProjectModelStrategyBindingResponseDtoDataEnvelope, StrategyDeletionImpactResponseDtoDataEnvelope, StrategyTemplateResponseDtoDataArrayEnvelope, UpdateModelStrategyDto, UpsertModelStrategyEntriesDto } from '../../models';
6
+ import type { BindModelStrategyDto, CreateModelStrategyDto, ModelStrategyControllerGetProjectBinding200, ModelStrategyResponseDtoDataArrayEnvelope, ModelStrategyResponseDtoDataEnvelope, OrgDefaultStrategyStatusResponseDtoDataEnvelope, ProjectModelStrategyBindingResponseDtoDataEnvelope, StrategyDeletionImpactResponseDtoDataEnvelope, StrategyTemplateResponseDtoDataArrayEnvelope, UpdateModelStrategyDto, UpsertModelStrategyEntriesDto, UpsertModelStrategyEntryDto } from '../../models';
7
7
  export declare const getModelStrategyControllerCreateStrategyUrl: () => string;
8
8
  /**
9
9
  * @summary Create a model strategy
@@ -54,6 +54,16 @@ export declare const getModelStrategyControllerUpsertEntriesUrl: (id: string) =>
54
54
  * @summary Replace all strategy entries
55
55
  */
56
56
  export declare const modelStrategyControllerUpsertEntries: (id: string, upsertModelStrategyEntriesDto: UpsertModelStrategyEntriesDto, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
57
+ export declare const getModelStrategyControllerUpsertEntryUrl: (id: string, lane: string) => string;
58
+ /**
59
+ * @summary Bind one model lane, leaving every other lane untouched
60
+ */
61
+ export declare const modelStrategyControllerUpsertEntry: (id: string, lane: string, upsertModelStrategyEntryDto: UpsertModelStrategyEntryDto, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
62
+ export declare const getModelStrategyControllerDeleteEntryUrl: (id: string, lane: string) => string;
63
+ /**
64
+ * @summary Clear one model lane, so it falls back to the default binding
65
+ */
66
+ export declare const modelStrategyControllerDeleteEntry: (id: string, lane: string, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
57
67
  export declare const getModelStrategyControllerBindStrategyUrl: (projectId: string) => string;
58
68
  /**
59
69
  * @summary Bind a model strategy to a project
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.modelStrategyControllerUnbindStrategy = exports.getModelStrategyControllerUnbindStrategyUrl = exports.modelStrategyControllerGetProjectBinding = exports.getModelStrategyControllerGetProjectBindingUrl = exports.modelStrategyControllerBindStrategy = exports.getModelStrategyControllerBindStrategyUrl = exports.modelStrategyControllerUpsertEntries = exports.getModelStrategyControllerUpsertEntriesUrl = exports.modelStrategyControllerGetStrategyDeletionImpact = exports.getModelStrategyControllerGetStrategyDeletionImpactUrl = exports.modelStrategyControllerDeleteStrategy = exports.getModelStrategyControllerDeleteStrategyUrl = exports.modelStrategyControllerUpdateStrategy = exports.getModelStrategyControllerUpdateStrategyUrl = exports.modelStrategyControllerGetStrategy = exports.getModelStrategyControllerGetStrategyUrl = exports.modelStrategyControllerAdoptTemplate = exports.getModelStrategyControllerAdoptTemplateUrl = exports.modelStrategyControllerListTemplates = exports.getModelStrategyControllerListTemplatesUrl = exports.modelStrategyControllerGetOrgDefaultStatus = exports.getModelStrategyControllerGetOrgDefaultStatusUrl = exports.modelStrategyControllerListStrategies = exports.getModelStrategyControllerListStrategiesUrl = exports.modelStrategyControllerCreateStrategy = exports.getModelStrategyControllerCreateStrategyUrl = void 0;
3
+ exports.modelStrategyControllerUnbindStrategy = exports.getModelStrategyControllerUnbindStrategyUrl = exports.modelStrategyControllerGetProjectBinding = exports.getModelStrategyControllerGetProjectBindingUrl = exports.modelStrategyControllerBindStrategy = exports.getModelStrategyControllerBindStrategyUrl = exports.modelStrategyControllerDeleteEntry = exports.getModelStrategyControllerDeleteEntryUrl = exports.modelStrategyControllerUpsertEntry = exports.getModelStrategyControllerUpsertEntryUrl = exports.modelStrategyControllerUpsertEntries = exports.getModelStrategyControllerUpsertEntriesUrl = exports.modelStrategyControllerGetStrategyDeletionImpact = exports.getModelStrategyControllerGetStrategyDeletionImpactUrl = exports.modelStrategyControllerDeleteStrategy = exports.getModelStrategyControllerDeleteStrategyUrl = exports.modelStrategyControllerUpdateStrategy = exports.getModelStrategyControllerUpdateStrategyUrl = exports.modelStrategyControllerGetStrategy = exports.getModelStrategyControllerGetStrategyUrl = exports.modelStrategyControllerAdoptTemplate = exports.getModelStrategyControllerAdoptTemplateUrl = exports.modelStrategyControllerListTemplates = exports.getModelStrategyControllerListTemplatesUrl = exports.modelStrategyControllerGetOrgDefaultStatus = exports.getModelStrategyControllerGetOrgDefaultStatusUrl = exports.modelStrategyControllerListStrategies = exports.getModelStrategyControllerListStrategiesUrl = exports.modelStrategyControllerCreateStrategy = exports.getModelStrategyControllerCreateStrategyUrl = void 0;
4
4
  const custom_fetch_1 = require("../../custom-fetch");
5
5
  const getModelStrategyControllerCreateStrategyUrl = () => {
6
6
  return `/model-strategies`;
@@ -148,6 +148,36 @@ const modelStrategyControllerUpsertEntries = async (id, upsertModelStrategyEntri
148
148
  });
149
149
  };
150
150
  exports.modelStrategyControllerUpsertEntries = modelStrategyControllerUpsertEntries;
151
+ const getModelStrategyControllerUpsertEntryUrl = (id, lane) => {
152
+ return `/model-strategies/${id}/entries/${lane}`;
153
+ };
154
+ exports.getModelStrategyControllerUpsertEntryUrl = getModelStrategyControllerUpsertEntryUrl;
155
+ /**
156
+ * @summary Bind one model lane, leaving every other lane untouched
157
+ */
158
+ const modelStrategyControllerUpsertEntry = async (id, lane, upsertModelStrategyEntryDto, options) => {
159
+ return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerUpsertEntryUrl)(id, lane), {
160
+ ...options,
161
+ method: 'PUT',
162
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
163
+ body: JSON.stringify(upsertModelStrategyEntryDto)
164
+ });
165
+ };
166
+ exports.modelStrategyControllerUpsertEntry = modelStrategyControllerUpsertEntry;
167
+ const getModelStrategyControllerDeleteEntryUrl = (id, lane) => {
168
+ return `/model-strategies/${id}/entries/${lane}`;
169
+ };
170
+ exports.getModelStrategyControllerDeleteEntryUrl = getModelStrategyControllerDeleteEntryUrl;
171
+ /**
172
+ * @summary Clear one model lane, so it falls back to the default binding
173
+ */
174
+ const modelStrategyControllerDeleteEntry = async (id, lane, options) => {
175
+ return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerDeleteEntryUrl)(id, lane), {
176
+ ...options,
177
+ method: 'DELETE'
178
+ });
179
+ };
180
+ exports.modelStrategyControllerDeleteEntry = modelStrategyControllerDeleteEntry;
151
181
  const getModelStrategyControllerBindStrategyUrl = (projectId) => {
152
182
  return `/projects/${projectId}/model-strategy`;
153
183
  };
@@ -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
+ export interface AgentCapabilitySetExpressionDto {
7
+ include: string[];
8
+ exclude: string[];
9
+ }
@@ -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 });
@@ -4,6 +4,7 @@
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
6
  import type { AgentBiomeAvailabilityDto } from './agentBiomeAvailabilityDto.js';
7
+ import type { AgentCapabilitySetExpressionDto } from './agentCapabilitySetExpressionDto.js';
7
8
  import type { AgentModelOverrideDto } from './agentModelOverrideDto.js';
8
9
  import type { AgentNodeDtoPermission } from './agentNodeDtoPermission.js';
9
10
  import type { AgentNodeDtoPromptMode } from './agentNodeDtoPromptMode.js';
@@ -31,6 +32,15 @@ export interface AgentNodeDto {
31
32
  * Mirrors the kernel `BiomeAvailabilityScoped` mixin on `AgentNode`.
32
33
  */
33
34
  biomeAvailability?: AgentBiomeAvailabilityDto;
35
+ /**
36
+ * DELEGATION BOUNDARY — a ceiling on the authority this node may be granted
37
+ * by the agent that delegates to it (kernel `AgentNode.delegationBoundary`).
38
+ * `effective(this) = effective(parent) ∩ own(this) ∩ delegationBoundary`;
39
+ * absent ⇒ no ADDITIONAL attenuation — the parent's authority still bounds
40
+ * this node. Meaningless on the ROOT node (nothing delegates to it) and
41
+ * refused there by `AgentNodeValidator`.
42
+ */
43
+ delegationBoundary?: AgentCapabilitySetExpressionDto;
34
44
  /**
35
45
  * Server-stamped, resolve-only: SHA-256 of the STABLE revision of the agent this node references. Rejected on write.
36
46
  * @pattern ^[a-f0-9]{64}$
@@ -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 DelegatedAgentRefDto {
7
+ slug: string;
8
+ /** Generated revision number (decimal string). */
9
+ version: 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,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
+ import type { DelegatedAgentSubjectDtoKind } from './delegatedAgentSubjectDtoKind.js';
7
+ export interface DelegatedAgentSubjectDto {
8
+ kind: DelegatedAgentSubjectDtoKind;
9
+ id: string;
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ 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
+ export type DelegatedAgentSubjectDtoKind = typeof DelegatedAgentSubjectDtoKind[keyof typeof DelegatedAgentSubjectDtoKind];
7
+ export declare const DelegatedAgentSubjectDtoKind: {
8
+ readonly agent: "agent";
9
+ };
@@ -0,0 +1,11 @@
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.DelegatedAgentSubjectDtoKind = void 0;
9
+ exports.DelegatedAgentSubjectDtoKind = {
10
+ agent: 'agent',
11
+ };
@@ -0,0 +1,11 @@
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 { AgentCapabilityApertureDto } from './agentCapabilityApertureDto.js';
7
+ import type { AgentCapabilitySetExpressionDto } from './agentCapabilitySetExpressionDto.js';
8
+ export interface DelegatedApertureConstraintsDto {
9
+ apertures: AgentCapabilityApertureDto[];
10
+ boundaries: AgentCapabilitySetExpressionDto[];
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -7,6 +7,7 @@ import type { AgentCapabilityApertureDto } from './agentCapabilityApertureDto.js
7
7
  import type { AgentOwnerSpaceRefDto } from './agentOwnerSpaceRefDto.js';
8
8
  import type { ExactAgentRevisionAuthorityResponseDtoReachTier } from './exactAgentRevisionAuthorityResponseDtoReachTier.js';
9
9
  import type { ExactAgentRevisionResolvedGraphDto } from './exactAgentRevisionResolvedGraphDto.js';
10
+ import type { ResolvedDelegatedApertureDto } from './resolvedDelegatedApertureDto.js';
10
11
  export interface ExactAgentRevisionAuthorityResponseDto {
11
12
  resourceId: string;
12
13
  revisionId: string;
@@ -16,4 +17,12 @@ export interface ExactAgentRevisionAuthorityResponseDto {
16
17
  resolvedGraph: ExactAgentRevisionResolvedGraphDto;
17
18
  capabilityAperture: AgentCapabilityApertureDto;
18
19
  reachTier: ExactAgentRevisionAuthorityResponseDtoReachTier;
20
+ /**
21
+ * Every agent reachable by DELEGATION from the primary agent (composition
22
+ * children and intrinsic delegates, cycles resolved to a fixed point,
23
+ * bounded by the platform delegation depth), each with its effective
24
+ * authority `parent ∩ own ∩ boundary`. Sorted by `agentKey`; exactly one
25
+ * entry (the primary agent) has a null parent.
26
+ */
27
+ delegatedApertures: ResolvedDelegatedApertureDto[];
19
28
  }
@@ -13,6 +13,7 @@ export * from './agentCapabilityApertureDtoKind';
13
13
  export * from './agentCapabilityLayerDto';
14
14
  export * from './agentCapabilityLayerDtoMayEditRepos';
15
15
  export * from './agentCapabilityLayerDtoWritePolicy';
16
+ export * from './agentCapabilitySetExpressionDto';
16
17
  export * from './agentConfigBlockDto';
17
18
  export * from './agentConfigBlockDtoColor';
18
19
  export * from './agentConfigBlockDtoPermission';
@@ -134,6 +135,10 @@ export * from './createProviderDto';
134
135
  export * from './createProviderDtoApiType';
135
136
  export * from './createProviderDtoAuthType';
136
137
  export * from './credentialKind';
138
+ export * from './delegatedAgentRefDto';
139
+ export * from './delegatedAgentSubjectDto';
140
+ export * from './delegatedAgentSubjectDtoKind';
141
+ export * from './delegatedApertureConstraintsDto';
137
142
  export * from './durableWorkspaceRefDto';
138
143
  export * from './embeddingCommitmentActivationDto';
139
144
  export * from './embeddingCommitmentActivationDtoDataEnvelope';
@@ -246,6 +251,7 @@ export * from './promptMergeMode';
246
251
  export * from './providerDeletionAffectedStrategyDto';
247
252
  export * from './providerDeletionImpactResponseDto';
248
253
  export * from './providerDeletionImpactResponseDtoDataEnvelope';
254
+ export * from './providerOwnerSpaceKind';
249
255
  export * from './providerProbeResponseDto';
250
256
  export * from './providerProbeResponseDtoDataEnvelope';
251
257
  export * from './providerResponseDto';
@@ -280,6 +286,8 @@ export * from './resolvedConfigSnapshotResponseDto';
280
286
  export * from './resolvedConfigSnapshotResponseDtoDataEnvelope';
281
287
  export * from './resolvedConfigSnapshotResponseDtoPayload';
282
288
  export * from './resolvedConfigSnapshotResponseDtoPayloadObjectKey';
289
+ export * from './resolvedDelegatedApertureDto';
290
+ export * from './resolvedDelegatedApertureDtoReachTier';
283
291
  export * from './resolvedEmbeddingCommitmentDto';
284
292
  export * from './resolvedEmbeddingCommitmentDtoDataEnvelope';
285
293
  export * from './resolvedEmbeddingCommitmentDtoState';
@@ -350,6 +358,7 @@ export * from './upsertAgentModelOverrideDto';
350
358
  export * from './upsertAgentModelOverrideDtoScope';
351
359
  export * from './upsertEmbeddingCommitmentDto';
352
360
  export * from './upsertModelStrategyEntriesDto';
361
+ export * from './upsertModelStrategyEntryDto';
353
362
  export * from './upsertToolProfileDto';
354
363
  export * from './widgetKindDto';
355
364
  export * from './widgetKindDtoPayloadSchema';
@@ -30,6 +30,7 @@ __exportStar(require("./agentCapabilityApertureDtoKind"), exports);
30
30
  __exportStar(require("./agentCapabilityLayerDto"), exports);
31
31
  __exportStar(require("./agentCapabilityLayerDtoMayEditRepos"), exports);
32
32
  __exportStar(require("./agentCapabilityLayerDtoWritePolicy"), exports);
33
+ __exportStar(require("./agentCapabilitySetExpressionDto"), exports);
33
34
  __exportStar(require("./agentConfigBlockDto"), exports);
34
35
  __exportStar(require("./agentConfigBlockDtoColor"), exports);
35
36
  __exportStar(require("./agentConfigBlockDtoPermission"), exports);
@@ -151,6 +152,10 @@ __exportStar(require("./createProviderDto"), exports);
151
152
  __exportStar(require("./createProviderDtoApiType"), exports);
152
153
  __exportStar(require("./createProviderDtoAuthType"), exports);
153
154
  __exportStar(require("./credentialKind"), exports);
155
+ __exportStar(require("./delegatedAgentRefDto"), exports);
156
+ __exportStar(require("./delegatedAgentSubjectDto"), exports);
157
+ __exportStar(require("./delegatedAgentSubjectDtoKind"), exports);
158
+ __exportStar(require("./delegatedApertureConstraintsDto"), exports);
154
159
  __exportStar(require("./durableWorkspaceRefDto"), exports);
155
160
  __exportStar(require("./embeddingCommitmentActivationDto"), exports);
156
161
  __exportStar(require("./embeddingCommitmentActivationDtoDataEnvelope"), exports);
@@ -263,6 +268,7 @@ __exportStar(require("./promptMergeMode"), exports);
263
268
  __exportStar(require("./providerDeletionAffectedStrategyDto"), exports);
264
269
  __exportStar(require("./providerDeletionImpactResponseDto"), exports);
265
270
  __exportStar(require("./providerDeletionImpactResponseDtoDataEnvelope"), exports);
271
+ __exportStar(require("./providerOwnerSpaceKind"), exports);
266
272
  __exportStar(require("./providerProbeResponseDto"), exports);
267
273
  __exportStar(require("./providerProbeResponseDtoDataEnvelope"), exports);
268
274
  __exportStar(require("./providerResponseDto"), exports);
@@ -297,6 +303,8 @@ __exportStar(require("./resolvedConfigSnapshotResponseDto"), exports);
297
303
  __exportStar(require("./resolvedConfigSnapshotResponseDtoDataEnvelope"), exports);
298
304
  __exportStar(require("./resolvedConfigSnapshotResponseDtoPayload"), exports);
299
305
  __exportStar(require("./resolvedConfigSnapshotResponseDtoPayloadObjectKey"), exports);
306
+ __exportStar(require("./resolvedDelegatedApertureDto"), exports);
307
+ __exportStar(require("./resolvedDelegatedApertureDtoReachTier"), exports);
300
308
  __exportStar(require("./resolvedEmbeddingCommitmentDto"), exports);
301
309
  __exportStar(require("./resolvedEmbeddingCommitmentDtoDataEnvelope"), exports);
302
310
  __exportStar(require("./resolvedEmbeddingCommitmentDtoState"), exports);
@@ -367,6 +375,7 @@ __exportStar(require("./upsertAgentModelOverrideDto"), exports);
367
375
  __exportStar(require("./upsertAgentModelOverrideDtoScope"), exports);
368
376
  __exportStar(require("./upsertEmbeddingCommitmentDto"), exports);
369
377
  __exportStar(require("./upsertModelStrategyEntriesDto"), exports);
378
+ __exportStar(require("./upsertModelStrategyEntryDto"), exports);
370
379
  __exportStar(require("./upsertToolProfileDto"), exports);
371
380
  __exportStar(require("./widgetKindDto"), exports);
372
381
  __exportStar(require("./widgetKindDtoPayloadSchema"), exports);
@@ -4,7 +4,7 @@
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
6
  /**
7
- * A modality this invocation REQUIRES — the Matrix `modelCapability` dimension, so one rule can route every vision-needing invocation to a multimodal model without pinning a provider. Closed kernel set; an unknown value is a 400.
7
+ * A modality this invocation REQUIRES — the Matrix `modelCapability` dimension, so one rule can route every vision-needing invocation to a multimodal model without pinning a provider. It is ALSO a requirement on whatever the resolution selects: a resolved model that does not provide it is refused with 422 `MODEL_CAPABILITY_UNSUPPORTED` rather than returned, and no other model is substituted. Closed kernel set; an unknown value is a 400.
8
8
  */
9
9
  export type ModelCapability = typeof ModelCapability[keyof typeof ModelCapability];
10
10
  export declare const ModelCapability: {
@@ -17,6 +17,8 @@ export interface ModelStrategyResponseDto {
17
17
  isSystem: boolean;
18
18
  isDefault: boolean;
19
19
  createdBy: string;
20
+ /** The entry set's concurrency counter. Send it back as `expectedVersion` when replacing the whole entry set. Moves on every write that changes the entries — including a per-lane write — and not on an unrelated metadata edit. */
21
+ version: number;
20
22
  createdAt: string;
21
23
  updatedAt: string;
22
24
  /**
@@ -12,4 +12,6 @@ export interface ModelVocabularyKeyDto {
12
12
  title: string;
13
13
  /** What work this key names, in the reader's words. */
14
14
  description: string;
15
+ /** The biome(s) that declare this key, among the declarations visible to the caller — sorted, de-duplicated, and EVERY declarer rather than one: two biomes may declare the same key, and both are reported. Empty for a key no biome declared. PROVENANCE, NOT IDENTITY: the key alone is the stable identifier, and this list moves when a biome is renamed or replaced — group or explain by it, never key a binding on it. */
16
+ declaringBiomeIds: string[];
15
17
  }
@@ -0,0 +1,13 @@
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
+ * Owner tier: `system` (platform-owned) or `org`.
8
+ */
9
+ export type ProviderOwnerSpaceKind = typeof ProviderOwnerSpaceKind[keyof typeof ProviderOwnerSpaceKind];
10
+ export declare const ProviderOwnerSpaceKind: {
11
+ readonly system: "system";
12
+ readonly org: "org";
13
+ };
@@ -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.ProviderOwnerSpaceKind = void 0;
9
+ exports.ProviderOwnerSpaceKind = {
10
+ system: 'system',
11
+ org: 'org',
12
+ };
@@ -4,11 +4,18 @@
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
6
  import type { ModelResponseDto } from './modelResponseDto.js';
7
+ import type { ProviderOwnerSpaceKind } from './providerOwnerSpaceKind.js';
7
8
  import type { ProviderResponseDtoApiType } from './providerResponseDtoApiType.js';
8
9
  import type { ProviderResponseDtoAuthType } from './providerResponseDtoAuthType.js';
9
10
  export interface ProviderResponseDto {
10
11
  id: string;
11
- orgId: string;
12
+ /**
13
+ * The owning organisation, or null for a PLATFORM-owned provider (ownerSpaceKind = system).
14
+ * @nullable
15
+ */
16
+ orgId: string | null;
17
+ /** Owner tier: `system` (platform-owned) or `org`. */
18
+ ownerSpaceKind: ProviderOwnerSpaceKind;
12
19
  name: string;
13
20
  slug: string;
14
21
  apiType: ProviderResponseDtoApiType;
@@ -49,6 +49,6 @@ export interface ResolveModelForInvocationDto {
49
49
  * @maxLength 512
50
50
  */
51
51
  skillSlug?: string;
52
- /** A modality this invocation REQUIRES — the Matrix `modelCapability` dimension, so one rule can route every vision-needing invocation to a multimodal model without pinning a provider. Closed kernel set; an unknown value is a 400. */
52
+ /** A modality this invocation REQUIRES — the Matrix `modelCapability` dimension, so one rule can route every vision-needing invocation to a multimodal model without pinning a provider. It is ALSO a requirement on whatever the resolution selects: a resolved model that does not provide it is refused with 422 `MODEL_CAPABILITY_UNSUPPORTED` rather than returned, and no other model is substituted. Closed kernel set; an unknown value is a 400. */
53
53
  modelCapability?: ModelCapability;
54
54
  }
@@ -0,0 +1,21 @@
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 { DelegatedAgentRefDto } from './delegatedAgentRefDto.js';
7
+ import type { DelegatedAgentSubjectDto } from './delegatedAgentSubjectDto.js';
8
+ import type { DelegatedApertureConstraintsDto } from './delegatedApertureConstraintsDto.js';
9
+ import type { ResolvedDelegatedApertureDtoReachTier } from './resolvedDelegatedApertureDtoReachTier.js';
10
+ export interface ResolvedDelegatedApertureDto {
11
+ agentKey: string;
12
+ agentRef: DelegatedAgentRefDto;
13
+ /** @nullable */
14
+ parentAgentKey: string | null;
15
+ depth: number;
16
+ authoredPath: DelegatedAgentSubjectDto[];
17
+ constraints: DelegatedApertureConstraintsDto;
18
+ reachTier: ResolvedDelegatedApertureDtoReachTier;
19
+ /** Every entry this authority may delegate to (all routes, not only the canonical parent), sorted. */
20
+ delegateAgentKeys: string[];
21
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
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 ResolvedDelegatedApertureDtoReachTier = typeof ResolvedDelegatedApertureDtoReachTier[keyof typeof ResolvedDelegatedApertureDtoReachTier];
7
+ export declare const ResolvedDelegatedApertureDtoReachTier: {
8
+ readonly sandbox: "sandbox";
9
+ readonly 'as-owner': "as-owner";
10
+ readonly connected: "connected";
11
+ readonly full: "full";
12
+ };
@@ -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.ResolvedDelegatedApertureDtoReachTier = void 0;
9
+ exports.ResolvedDelegatedApertureDtoReachTier = {
10
+ sandbox: 'sandbox',
11
+ 'as-owner': 'as-owner',
12
+ connected: 'connected',
13
+ full: 'full',
14
+ };
@@ -7,4 +7,9 @@ import type { CreateModelStrategyEntryDto } from './createModelStrategyEntryDto.
7
7
  export interface UpsertModelStrategyEntriesDto {
8
8
  /** Role entries (replaces all entries) */
9
9
  entries: CreateModelStrategyEntryDto[];
10
+ /**
11
+ * The `version` read from this strategy. When sent, a stale value is refused with 409 `MODEL_STRATEGY_VERSION_MISMATCH`, which carries `currentVersion` to retry with. Send it: it is optional only for one transition and will become REQUIRED — without it this route replaces the whole entry set unconditionally, so a concurrent edit to a DIFFERENT lane is silently discarded. To change one lane, use PUT /model-strategies/:id/entries/:lane, which needs no version.
12
+ * @minimum 1
13
+ */
14
+ expectedVersion?: number;
10
15
  }
@@ -0,0 +1,17 @@
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 UpsertModelStrategyEntryDto {
7
+ /** Model slug/ID to match against LlmModel.modelId */
8
+ modelSlug: string;
9
+ /**
10
+ * Temperature (0-2). Omitted = the engine/model owns it; no platform value is ever materialized.
11
+ * @minimum 0
12
+ * @maximum 2
13
+ */
14
+ temperature?: number;
15
+ /** Reasoning effort asked of the model — the kernel's `ModelOptions.reasoningEffort`, an open string the provider interprets (`low`/`medium`/`high`/…). Omitted = the engine/model owns it. */
16
+ reasoningEffort?: string;
17
+ }
@@ -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 });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/llm-registry-api-client",
3
- "version": "0.8.13",
3
+ "version": "0.10.1",
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@1.1.2",
22
+ "generator": "@xemahq/api-client-generator@2.1.1",
23
23
  "source": "openapi.public.json"
24
24
  },
25
25
  "license": "LicenseRef-Xema-BSL-1.1",