@xemahq/llm-registry-api-client 0.15.0 → 0.17.0

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 (103) hide show
  1. package/README.md +1 -1
  2. package/dist/custom-fetch.d.ts +15 -1
  3. package/dist/custom-fetch.js +9 -8
  4. package/dist/endpoints/llm-registry/llm-registry.d.ts +5 -5
  5. package/dist/endpoints/llm-registry/llm-registry.js +46 -8
  6. package/dist/endpoints/model-resolution-matrix/model-resolution-matrix.d.ts +7 -1
  7. package/dist/endpoints/model-resolution-matrix/model-resolution-matrix.js +18 -1
  8. package/dist/endpoints/model-strategies/model-strategies.d.ts +10 -25
  9. package/dist/endpoints/model-strategies/model-strategies.js +24 -66
  10. package/dist/endpoints/org-model-default/org-model-default.d.ts +21 -0
  11. package/dist/endpoints/org-model-default/org-model-default.js +48 -0
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.js +1 -0
  14. package/dist/models/agentKernelResponseDto.d.ts +3 -2
  15. package/dist/models/agentProfileDto.d.ts +3 -2
  16. package/dist/models/createAgentKernelDto.d.ts +1 -1
  17. package/dist/models/createModelResolutionRuleDto.d.ts +3 -15
  18. package/dist/models/createModelStrategyDto.d.ts +3 -23
  19. package/dist/models/embeddingStorageDeclarationDto.d.ts +8 -12
  20. package/dist/models/index.d.ts +9 -22
  21. package/dist/models/index.js +9 -22
  22. package/dist/models/llmReadinessResponseDtoAction.d.ts +2 -2
  23. package/dist/models/llmReadinessResponseDtoAction.js +2 -2
  24. package/dist/models/llmReadinessResponseDtoStatus.d.ts +2 -2
  25. package/dist/models/llmReadinessResponseDtoStatus.js +2 -2
  26. package/dist/models/llmRegistryControllerDeleteModelParams.d.ts +11 -0
  27. package/dist/models/llmRegistryControllerDeleteProviderParams.d.ts +11 -0
  28. package/dist/models/migrationConsumerDelegationDto.d.ts +3 -1
  29. package/dist/models/migrationTargetDto.d.ts +1 -1
  30. package/dist/models/modelResolutionRuleResponseDto.d.ts +7 -45
  31. package/dist/models/modelResolutionSource.d.ts +1 -1
  32. package/dist/models/modelResolutionSource.js +1 -1
  33. package/dist/models/modelStrategyResponseDto.d.ts +7 -37
  34. package/dist/models/modelStrategySource.d.ts +12 -0
  35. package/dist/models/modelStrategySource.js +11 -0
  36. package/dist/models/orgModelDefaultResponseDto.d.ts +15 -0
  37. package/dist/models/orgModelDefaultResponseDtoDataEnvelope.d.ts +9 -0
  38. package/dist/models/providerDeletionImpactResponseDto.d.ts +4 -2
  39. package/dist/models/resolveFullResponseDto.d.ts +5 -2
  40. package/dist/models/resolveModelForInvocationDto.d.ts +4 -4
  41. package/dist/models/resolvedAgentKernelResponseDto.d.ts +3 -2
  42. package/dist/models/resolvedModelRefDto.d.ts +3 -7
  43. package/dist/models/resolvedModelRefDtoKind.d.ts +3 -1
  44. package/dist/models/resolvedModelRefDtoKind.js +0 -1
  45. package/dist/models/resolvedModelSelectionDtoSource.d.ts +1 -1
  46. package/dist/models/resolvedModelSelectionDtoSource.js +1 -1
  47. package/dist/models/resolvedModelStubDtoSource.d.ts +1 -1
  48. package/dist/models/resolvedModelStubDtoSource.js +1 -1
  49. package/dist/models/resolvedPhaseConfigDto.d.ts +3 -0
  50. package/dist/models/setOrgModelDefaultDto.d.ts +9 -0
  51. package/dist/models/strategyDeletionImpactResponseDto.d.ts +0 -14
  52. package/dist/models/updateAgentKernelDto.d.ts +1 -1
  53. package/dist/models/updateModelResolutionRuleDto.d.ts +0 -5
  54. package/dist/models/updateModelStrategyDto.d.ts +0 -5
  55. package/dist/models/updateModelStrategyDto.js +5 -0
  56. package/dist/models/upsertModelStrategyLaneRuleDto.d.ts +19 -0
  57. package/dist/models/upsertModelStrategyRulesDto.d.ts +15 -0
  58. package/dist/models/upsertOrgLaneRuleDto.d.ts +19 -0
  59. package/package.json +6 -3
  60. package/dist/models/createModelResolutionRuleDtoTargetKind.d.ts +0 -13
  61. package/dist/models/createModelResolutionRuleDtoTargetKind.js +0 -12
  62. package/dist/models/createModelStrategyDtoProviderFocus.d.ts +0 -14
  63. package/dist/models/createModelStrategyDtoProviderFocus.js +0 -16
  64. package/dist/models/createModelStrategyDtoTier.d.ts +0 -12
  65. package/dist/models/createModelStrategyDtoTier.js +0 -14
  66. package/dist/models/createModelStrategyEntryDto.d.ts +0 -19
  67. package/dist/models/modelBindingResponseDto.d.ts +0 -19
  68. package/dist/models/modelLaneBindingSource.d.ts +0 -14
  69. package/dist/models/modelLaneBindingSource.js +0 -13
  70. package/dist/models/modelLaneEffectiveBindingDto.d.ts +0 -15
  71. package/dist/models/modelResolutionRuleResponseDtoDefaultTargetOverridePrevTargetKind.d.ts +0 -14
  72. package/dist/models/modelResolutionRuleResponseDtoDefaultTargetOverridePrevTargetKind.js +0 -12
  73. package/dist/models/modelResolutionRuleResponseDtoTargetKind.d.ts +0 -10
  74. package/dist/models/modelResolutionRuleResponseDtoTargetKind.js +0 -12
  75. package/dist/models/modelStrategyEntryResponseDto.d.ts +0 -25
  76. package/dist/models/modelStrategyLaneEffectiveResponseDto.d.ts +0 -11
  77. package/dist/models/orgDefaultStrategyStatusResponseDto.d.ts +0 -9
  78. package/dist/models/orgDefaultStrategyStatusResponseDtoDataEnvelope.d.ts +0 -9
  79. package/dist/models/orgDefaultStrategyStatusResponseDtoDataEnvelope.js +0 -2
  80. package/dist/models/strategyTemplateAvailabilityDto.d.ts +0 -17
  81. package/dist/models/strategyTemplateAvailabilityDto.js +0 -2
  82. package/dist/models/strategyTemplateAvailabilityDtoReasonsItem.d.ts +0 -12
  83. package/dist/models/strategyTemplateAvailabilityDtoReasonsItem.js +0 -14
  84. package/dist/models/strategyTemplateEntryDto.d.ts +0 -21
  85. package/dist/models/strategyTemplateResponseDto.d.ts +0 -33
  86. package/dist/models/strategyTemplateResponseDto.js +0 -2
  87. package/dist/models/strategyTemplateResponseDtoDataArrayEnvelope.d.ts +0 -9
  88. package/dist/models/strategyTemplateResponseDtoDataArrayEnvelope.js +0 -2
  89. package/dist/models/updateModelResolutionRuleDtoTargetKind.d.ts +0 -10
  90. package/dist/models/updateModelResolutionRuleDtoTargetKind.js +0 -12
  91. package/dist/models/updateModelStrategyDefaultBindingDto.d.ts +0 -21
  92. package/dist/models/upsertModelStrategyEntriesDto.d.ts +0 -15
  93. package/dist/models/upsertModelStrategyEntriesDto.js +0 -2
  94. package/dist/models/upsertModelStrategyEntryDto.d.ts +0 -17
  95. package/dist/models/upsertModelStrategyEntryDto.js +0 -7
  96. /package/dist/models/{createModelStrategyEntryDto.js → llmRegistryControllerDeleteModelParams.js} +0 -0
  97. /package/dist/models/{modelBindingResponseDto.js → llmRegistryControllerDeleteProviderParams.js} +0 -0
  98. /package/dist/models/{modelStrategyEntryResponseDto.js → orgModelDefaultResponseDto.js} +0 -0
  99. /package/dist/models/{modelLaneEffectiveBindingDto.js → orgModelDefaultResponseDtoDataEnvelope.js} +0 -0
  100. /package/dist/models/{orgDefaultStrategyStatusResponseDto.js → setOrgModelDefaultDto.js} +0 -0
  101. /package/dist/models/{strategyTemplateEntryDto.js → upsertModelStrategyLaneRuleDto.js} +0 -0
  102. /package/dist/models/{modelStrategyLaneEffectiveResponseDto.js → upsertModelStrategyRulesDto.js} +0 -0
  103. /package/dist/models/{updateModelStrategyDefaultBindingDto.js → upsertOrgLaneRuleDto.js} +0 -0
package/README.md CHANGED
@@ -59,4 +59,4 @@ from the service's OpenAPI spec.
59
59
 
60
60
  ## License
61
61
 
62
- Proprietary — © Xema. All rights reserved. — [xema.dev](https://xema.dev)
62
+ LicenseRef-Xema-BSL-1.1 — © Neuralchowder Inc.. All rights reserved.
@@ -56,6 +56,16 @@ export interface RetryNotice {
56
56
  export interface ClientCallbackOptions {
57
57
  signal?: AbortSignal;
58
58
  }
59
+ /** What {@link ClientConfig.onUnauthorized} is told about the 401 it answers. */
60
+ export interface UnauthorizedContext {
61
+ /**
62
+ * The token `getAuthToken` returned for the attempt the server rejected.
63
+ * `undefined` when no `getAuthToken` produced the Authorization header
64
+ * (a header from `getHeaders` or no credential at all): there is then no
65
+ * client-held token to drop.
66
+ */
67
+ readonly rejectedToken: string | undefined;
68
+ }
59
69
  export interface ClientConfig {
60
70
  /**
61
71
  * Static base URL (e.g. 'http://localhost:3140') — no trailing slash.
@@ -102,8 +112,12 @@ export interface ClientConfig {
102
112
  * Optional callback invoked on a 401 before ONE re-attempt. Supplying it is
103
113
  * what opts this client into that re-attempt; without it a 401 comes back to
104
114
  * the caller as a `ClientError` like any other 4xx.
115
+ *
116
+ * It is told WHAT was rejected (see {@link UnauthorizedContext}), so a
117
+ * callback that drops a cached credential can drop exactly that one and leave
118
+ * a newer one, minted by a concurrent request, alone.
105
119
  */
106
- onUnauthorized?: () => Promise<void>;
120
+ onUnauthorized?: (context: UnauthorizedContext) => Promise<void>;
107
121
  /**
108
122
  * Re-attempts for a retryable status. **Defaults to 0 — no retry.**
109
123
  *
@@ -325,11 +325,12 @@ async function buildHeaders(config, callerHeaders, signal) {
325
325
  }
326
326
  }
327
327
  // Auth token (caller or global headers take precedence)
328
+ let authToken;
328
329
  if (config.getAuthToken && !headers.has('Authorization')) {
329
- const token = await raceAbort(config.getAuthToken(signal ? { signal } : undefined), signal);
330
- headers.set('Authorization', `Bearer ${token}`);
330
+ authToken = await raceAbort(config.getAuthToken(signal ? { signal } : undefined), signal);
331
+ headers.set('Authorization', `Bearer ${authToken}`);
331
332
  }
332
- return headers;
333
+ return { headers, authToken };
333
334
  }
334
335
  /*
335
336
  * THE TRANSPORT RETURNS THE BODY UNCHANGED. Do not reintroduce an unwrap here.
@@ -371,8 +372,8 @@ const customFetch = async (url, options) => {
371
372
  // re-sending would replay the identical failing request with the identical
372
373
  // credential: one wasted round trip, plus a global refresh nobody asked for.
373
374
  const callerSuppliedAuth = new Headers(options.headers).has('Authorization');
374
- const headers = await buildHeaders(config, options.headers, signal);
375
- const requestInit = { ...options, headers };
375
+ const built = await buildHeaders(config, options.headers, signal);
376
+ const requestInit = { ...options, headers: built.headers };
376
377
  let delay = BASE_BACKOFF_MS;
377
378
  for (let attempt = 0;; attempt++) {
378
379
  const response = await fetch(fullUrl, requestInit);
@@ -380,11 +381,11 @@ const customFetch = async (url, options) => {
380
381
  config.onUnauthorized &&
381
382
  !callerSuppliedAuth &&
382
383
  attempt === 0) {
383
- await raceAbort(config.onUnauthorized(), signal);
384
- const refreshedHeaders = await buildHeaders(config, options.headers, signal);
384
+ await raceAbort(config.onUnauthorized({ rejectedToken: built.authToken }), signal);
385
+ const refreshed = await buildHeaders(config, options.headers, signal);
385
386
  const retryResponse = await fetch(fullUrl, {
386
387
  ...options,
387
- headers: refreshedHeaders,
388
+ headers: refreshed.headers,
388
389
  });
389
390
  const retryBody = await parseBody(retryResponse);
390
391
  if (retryResponse.status >= 400) {
@@ -3,7 +3,7 @@
3
3
  * LLM Registry API
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
- import type { CreateModelDto, CreateProviderDto, LlmRegistryControllerGetResolvedModelConfig200, ModelResponseDtoDataArrayEnvelope, ModelResponseDtoDataEnvelope, ProbeProviderDto, ProviderDeletionImpactResponseDtoDataEnvelope, ProviderProbeResponseDtoDataEnvelope, ProviderResponseDtoDataArrayEnvelope, ProviderResponseDtoDataEnvelope, ProviderTestResponseDtoDataEnvelope, ResolveModelForInvocationDto, ResolvedPhaseConfigDtoDataEnvelope, SyncModelsResponseDtoDataEnvelope, UpdateModelDto, UpdateProviderDto } from '../../models';
6
+ import type { CreateModelDto, CreateProviderDto, LlmRegistryControllerDeleteModelParams, LlmRegistryControllerDeleteProviderParams, LlmRegistryControllerGetResolvedModelConfig200, ModelResponseDtoDataArrayEnvelope, ModelResponseDtoDataEnvelope, ProbeProviderDto, ProviderDeletionImpactResponseDtoDataEnvelope, ProviderProbeResponseDtoDataEnvelope, ProviderResponseDtoDataArrayEnvelope, ProviderResponseDtoDataEnvelope, ProviderTestResponseDtoDataEnvelope, ResolveModelForInvocationDto, ResolvedPhaseConfigDtoDataEnvelope, SyncModelsResponseDtoDataEnvelope, UpdateModelDto, UpdateProviderDto } from '../../models';
7
7
  export declare const getLlmRegistryControllerCreateProviderUrl: () => string;
8
8
  /**
9
9
  * @summary Create an LLM provider
@@ -24,11 +24,11 @@ export declare const getLlmRegistryControllerUpdateProviderUrl: (id: string) =>
24
24
  * @summary Update an LLM provider
25
25
  */
26
26
  export declare const llmRegistryControllerUpdateProvider: (id: string, updateProviderDto: UpdateProviderDto, options?: RequestInit) => Promise<ProviderResponseDtoDataEnvelope>;
27
- export declare const getLlmRegistryControllerDeleteProviderUrl: (id: string) => string;
27
+ export declare const getLlmRegistryControllerDeleteProviderUrl: (id: string, params?: LlmRegistryControllerDeleteProviderParams) => string;
28
28
  /**
29
29
  * @summary Delete an LLM provider
30
30
  */
31
- export declare const llmRegistryControllerDeleteProvider: (id: string, options?: RequestInit) => Promise<unknown>;
31
+ export declare const llmRegistryControllerDeleteProvider: (id: string, params?: LlmRegistryControllerDeleteProviderParams, options?: RequestInit) => Promise<unknown>;
32
32
  export declare const getLlmRegistryControllerGetProviderDeletionImpactUrl: (id: string) => string;
33
33
  /**
34
34
  * @summary Get impact analysis before deleting a provider
@@ -69,11 +69,11 @@ export declare const getLlmRegistryControllerGetModelUrl: (id: string) => string
69
69
  * @summary Get a model by id (org-scoped, across providers)
70
70
  */
71
71
  export declare const llmRegistryControllerGetModel: (id: string, options?: RequestInit) => Promise<ModelResponseDtoDataEnvelope>;
72
- export declare const getLlmRegistryControllerDeleteModelUrl: (id: string) => string;
72
+ export declare const getLlmRegistryControllerDeleteModelUrl: (id: string, params?: LlmRegistryControllerDeleteModelParams) => string;
73
73
  /**
74
74
  * @summary Delete a model by id (org-scoped, across providers)
75
75
  */
76
- export declare const llmRegistryControllerDeleteModel: (id: string, options?: RequestInit) => Promise<unknown>;
76
+ export declare const llmRegistryControllerDeleteModel: (id: string, params?: LlmRegistryControllerDeleteModelParams, options?: RequestInit) => Promise<unknown>;
77
77
  export declare const getLlmRegistryControllerUpdateModelUrl: (modelId: string) => string;
78
78
  /**
79
79
  * @summary Update a model (toggle active, change display name, etc.)
@@ -62,15 +62,34 @@ const llmRegistryControllerUpdateProvider = async (id, updateProviderDto, option
62
62
  });
63
63
  };
64
64
  exports.llmRegistryControllerUpdateProvider = llmRegistryControllerUpdateProvider;
65
- const getLlmRegistryControllerDeleteProviderUrl = (id) => {
66
- return `/providers/${id}`;
65
+ const getLlmRegistryControllerDeleteProviderUrl = (id, params) => {
66
+ const normalizedParams = new URLSearchParams();
67
+ Object.entries(params || {}).forEach(([key, value]) => {
68
+ if (value === undefined)
69
+ return;
70
+ if (value === null) {
71
+ normalizedParams.append(key, 'null');
72
+ return;
73
+ }
74
+ if (Array.isArray(value)) {
75
+ for (const item of value) {
76
+ if (item === undefined || item === null)
77
+ continue;
78
+ normalizedParams.append(key, item.toString());
79
+ }
80
+ return;
81
+ }
82
+ normalizedParams.append(key, value.toString());
83
+ });
84
+ const stringifiedParams = normalizedParams.toString();
85
+ return stringifiedParams.length > 0 ? `/providers/${id}?${stringifiedParams}` : `/providers/${id}`;
67
86
  };
68
87
  exports.getLlmRegistryControllerDeleteProviderUrl = getLlmRegistryControllerDeleteProviderUrl;
69
88
  /**
70
89
  * @summary Delete an LLM provider
71
90
  */
72
- const llmRegistryControllerDeleteProvider = async (id, options) => {
73
- return (0, custom_fetch_1.customFetch)((0, exports.getLlmRegistryControllerDeleteProviderUrl)(id), {
91
+ const llmRegistryControllerDeleteProvider = async (id, params, options) => {
92
+ return (0, custom_fetch_1.customFetch)((0, exports.getLlmRegistryControllerDeleteProviderUrl)(id, params), {
74
93
  ...options,
75
94
  method: 'DELETE'
76
95
  });
@@ -192,15 +211,34 @@ const llmRegistryControllerGetModel = async (id, options) => {
192
211
  });
193
212
  };
194
213
  exports.llmRegistryControllerGetModel = llmRegistryControllerGetModel;
195
- const getLlmRegistryControllerDeleteModelUrl = (id) => {
196
- return `/models/${id}`;
214
+ const getLlmRegistryControllerDeleteModelUrl = (id, params) => {
215
+ const normalizedParams = new URLSearchParams();
216
+ Object.entries(params || {}).forEach(([key, value]) => {
217
+ if (value === undefined)
218
+ return;
219
+ if (value === null) {
220
+ normalizedParams.append(key, 'null');
221
+ return;
222
+ }
223
+ if (Array.isArray(value)) {
224
+ for (const item of value) {
225
+ if (item === undefined || item === null)
226
+ continue;
227
+ normalizedParams.append(key, item.toString());
228
+ }
229
+ return;
230
+ }
231
+ normalizedParams.append(key, value.toString());
232
+ });
233
+ const stringifiedParams = normalizedParams.toString();
234
+ return stringifiedParams.length > 0 ? `/models/${id}?${stringifiedParams}` : `/models/${id}`;
197
235
  };
198
236
  exports.getLlmRegistryControllerDeleteModelUrl = getLlmRegistryControllerDeleteModelUrl;
199
237
  /**
200
238
  * @summary Delete a model by id (org-scoped, across providers)
201
239
  */
202
- const llmRegistryControllerDeleteModel = async (id, options) => {
203
- return (0, custom_fetch_1.customFetch)((0, exports.getLlmRegistryControllerDeleteModelUrl)(id), {
240
+ const llmRegistryControllerDeleteModel = async (id, params, options) => {
241
+ return (0, custom_fetch_1.customFetch)((0, exports.getLlmRegistryControllerDeleteModelUrl)(id, params), {
204
242
  ...options,
205
243
  method: 'DELETE'
206
244
  });
@@ -3,7 +3,7 @@
3
3
  * LLM Registry API
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
- import type { CreateModelResolutionRuleDto, ModelResolutionRuleResponseDtoDataArrayEnvelope, ModelResolutionRuleResponseDtoDataEnvelope, UpdateModelResolutionRuleDto } from '../../models';
6
+ import type { CreateModelResolutionRuleDto, ModelResolutionRuleResponseDtoDataArrayEnvelope, ModelResolutionRuleResponseDtoDataEnvelope, UpdateModelResolutionRuleDto, UpsertOrgLaneRuleDto } from '../../models';
7
7
  export declare const getModelResolutionRuleControllerListUrl: () => string;
8
8
  /**
9
9
  * @summary List the org Model Resolution Matrix rules
@@ -29,3 +29,9 @@ export declare const getModelResolutionRuleControllerDeleteUrl: (id: string) =>
29
29
  * @summary Delete a Model Resolution Matrix rule
30
30
  */
31
31
  export declare const modelResolutionRuleControllerDelete: (id: string, options?: RequestInit) => Promise<unknown>;
32
+ export declare const getModelResolutionRuleControllerUpsertOrgLaneUrl: (modelLane: string) => string;
33
+ /**
34
+ * Answers 409 `MODEL_RULE_LANE_MANAGED` when the lane rule is managed by `system` or `iac` (it is never overwritten here), 409 `MODEL_RULE_LANE_EXISTS` when a concurrent writer holds the lane, and 409 `MODEL_RULE_LANE_CHANGED` when the lane rule was deleted between the read and the update (nothing was written; re-read and retry).
35
+ * @summary Set the organisation's rule for one model lane (idempotent upsert)
36
+ */
37
+ export declare const modelResolutionRuleControllerUpsertOrgLane: (modelLane: string, upsertOrgLaneRuleDto: UpsertOrgLaneRuleDto, options?: RequestInit) => Promise<ModelResolutionRuleResponseDtoDataEnvelope>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.modelResolutionRuleControllerDelete = exports.getModelResolutionRuleControllerDeleteUrl = exports.modelResolutionRuleControllerUpdate = exports.getModelResolutionRuleControllerUpdateUrl = exports.modelResolutionRuleControllerGet = exports.getModelResolutionRuleControllerGetUrl = exports.modelResolutionRuleControllerCreate = exports.getModelResolutionRuleControllerCreateUrl = exports.modelResolutionRuleControllerList = exports.getModelResolutionRuleControllerListUrl = void 0;
3
+ exports.modelResolutionRuleControllerUpsertOrgLane = exports.getModelResolutionRuleControllerUpsertOrgLaneUrl = exports.modelResolutionRuleControllerDelete = exports.getModelResolutionRuleControllerDeleteUrl = exports.modelResolutionRuleControllerUpdate = exports.getModelResolutionRuleControllerUpdateUrl = exports.modelResolutionRuleControllerGet = exports.getModelResolutionRuleControllerGetUrl = exports.modelResolutionRuleControllerCreate = exports.getModelResolutionRuleControllerCreateUrl = exports.modelResolutionRuleControllerList = exports.getModelResolutionRuleControllerListUrl = void 0;
4
4
  const custom_fetch_1 = require("../../custom-fetch");
5
5
  const getModelResolutionRuleControllerListUrl = () => {
6
6
  return `/model-resolution-rules`;
@@ -76,3 +76,20 @@ const modelResolutionRuleControllerDelete = async (id, options) => {
76
76
  });
77
77
  };
78
78
  exports.modelResolutionRuleControllerDelete = modelResolutionRuleControllerDelete;
79
+ const getModelResolutionRuleControllerUpsertOrgLaneUrl = (modelLane) => {
80
+ return `/model-resolution-rules/lane/${modelLane}`;
81
+ };
82
+ exports.getModelResolutionRuleControllerUpsertOrgLaneUrl = getModelResolutionRuleControllerUpsertOrgLaneUrl;
83
+ /**
84
+ * Answers 409 `MODEL_RULE_LANE_MANAGED` when the lane rule is managed by `system` or `iac` (it is never overwritten here), 409 `MODEL_RULE_LANE_EXISTS` when a concurrent writer holds the lane, and 409 `MODEL_RULE_LANE_CHANGED` when the lane rule was deleted between the read and the update (nothing was written; re-read and retry).
85
+ * @summary Set the organisation's rule for one model lane (idempotent upsert)
86
+ */
87
+ const modelResolutionRuleControllerUpsertOrgLane = async (modelLane, upsertOrgLaneRuleDto, options) => {
88
+ return (0, custom_fetch_1.customFetch)((0, exports.getModelResolutionRuleControllerUpsertOrgLaneUrl)(modelLane), {
89
+ ...options,
90
+ method: 'PUT',
91
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
92
+ body: JSON.stringify(upsertOrgLaneRuleDto)
93
+ });
94
+ };
95
+ exports.modelResolutionRuleControllerUpsertOrgLane = modelResolutionRuleControllerUpsertOrgLane;
@@ -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, UpsertModelStrategyEntryDto } from '../../models';
6
+ import type { BindModelStrategyDto, CreateModelStrategyDto, ModelStrategyControllerGetProjectBinding200, ModelStrategyResponseDtoDataArrayEnvelope, ModelStrategyResponseDtoDataEnvelope, ProjectModelStrategyBindingResponseDtoDataEnvelope, StrategyDeletionImpactResponseDtoDataEnvelope, UpdateModelStrategyDto, UpsertModelStrategyLaneRuleDto, UpsertModelStrategyRulesDto } from '../../models';
7
7
  export declare const getModelStrategyControllerCreateStrategyUrl: () => string;
8
8
  /**
9
9
  * @summary Create a model strategy
@@ -14,21 +14,6 @@ export declare const getModelStrategyControllerListStrategiesUrl: () => string;
14
14
  * @summary List all model strategies
15
15
  */
16
16
  export declare const modelStrategyControllerListStrategies: (options?: RequestInit) => Promise<ModelStrategyResponseDtoDataArrayEnvelope>;
17
- export declare const getModelStrategyControllerGetOrgDefaultStatusUrl: () => string;
18
- /**
19
- * @summary Check whether the org has a usable default strategy
20
- */
21
- export declare const modelStrategyControllerGetOrgDefaultStatus: (options?: RequestInit) => Promise<OrgDefaultStrategyStatusResponseDtoDataEnvelope>;
22
- export declare const getModelStrategyControllerListTemplatesUrl: () => string;
23
- /**
24
- * @summary List the shipped model-strategy presets, annotated with whether this org can run each
25
- */
26
- export declare const modelStrategyControllerListTemplates: (options?: RequestInit) => Promise<StrategyTemplateResponseDtoDataArrayEnvelope>;
27
- export declare const getModelStrategyControllerAdoptTemplateUrl: (slug: string) => string;
28
- /**
29
- * @summary Adopt a shipped preset as the org default, as a strategy the org owns
30
- */
31
- export declare const modelStrategyControllerAdoptTemplate: (slug: string, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
32
17
  export declare const getModelStrategyControllerGetStrategyUrl: (id: string) => string;
33
18
  /**
34
19
  * @summary Get a model strategy
@@ -49,21 +34,21 @@ export declare const getModelStrategyControllerGetStrategyDeletionImpactUrl: (id
49
34
  * @summary What deleting this model strategy would change for projects bound to it
50
35
  */
51
36
  export declare const modelStrategyControllerGetStrategyDeletionImpact: (id: string, options?: RequestInit) => Promise<StrategyDeletionImpactResponseDtoDataEnvelope>;
52
- export declare const getModelStrategyControllerUpsertEntriesUrl: (id: string) => string;
37
+ export declare const getModelStrategyControllerUpsertRulesUrl: (id: string) => string;
53
38
  /**
54
- * @summary Replace all strategy entries
39
+ * @summary Replace all strategy rules
55
40
  */
56
- export declare const modelStrategyControllerUpsertEntries: (id: string, upsertModelStrategyEntriesDto: UpsertModelStrategyEntriesDto, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
57
- export declare const getModelStrategyControllerUpsertEntryUrl: (id: string, lane: string) => string;
41
+ export declare const modelStrategyControllerUpsertRules: (id: string, upsertModelStrategyRulesDto: UpsertModelStrategyRulesDto, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
42
+ export declare const getModelStrategyControllerUpsertRuleUrl: (id: string, lane: string) => string;
58
43
  /**
59
- * @summary Bind one model lane, leaving every other lane untouched
44
+ * @summary Set the rule for one model lane, leaving every other rule untouched
60
45
  */
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;
46
+ export declare const modelStrategyControllerUpsertRule: (id: string, lane: string, upsertModelStrategyLaneRuleDto: UpsertModelStrategyLaneRuleDto, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
47
+ export declare const getModelStrategyControllerDeleteRuleUrl: (id: string, lane: string) => string;
63
48
  /**
64
- * @summary Clear one model lane, so it falls back to the default binding
49
+ * @summary Clear the rule for one model lane
65
50
  */
66
- export declare const modelStrategyControllerDeleteEntry: (id: string, lane: string, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
51
+ export declare const modelStrategyControllerDeleteRule: (id: string, lane: string, options?: RequestInit) => Promise<ModelStrategyResponseDtoDataEnvelope>;
67
52
  export declare const getModelStrategyControllerBindStrategyUrl: (projectId: string) => string;
68
53
  /**
69
54
  * @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.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;
3
+ exports.modelStrategyControllerUnbindStrategy = exports.getModelStrategyControllerUnbindStrategyUrl = exports.modelStrategyControllerGetProjectBinding = exports.getModelStrategyControllerGetProjectBindingUrl = exports.modelStrategyControllerBindStrategy = exports.getModelStrategyControllerBindStrategyUrl = exports.modelStrategyControllerDeleteRule = exports.getModelStrategyControllerDeleteRuleUrl = exports.modelStrategyControllerUpsertRule = exports.getModelStrategyControllerUpsertRuleUrl = exports.modelStrategyControllerUpsertRules = exports.getModelStrategyControllerUpsertRulesUrl = exports.modelStrategyControllerGetStrategyDeletionImpact = exports.getModelStrategyControllerGetStrategyDeletionImpactUrl = exports.modelStrategyControllerDeleteStrategy = exports.getModelStrategyControllerDeleteStrategyUrl = exports.modelStrategyControllerUpdateStrategy = exports.getModelStrategyControllerUpdateStrategyUrl = exports.modelStrategyControllerGetStrategy = exports.getModelStrategyControllerGetStrategyUrl = 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`;
@@ -32,48 +32,6 @@ const modelStrategyControllerListStrategies = async (options) => {
32
32
  });
33
33
  };
34
34
  exports.modelStrategyControllerListStrategies = modelStrategyControllerListStrategies;
35
- const getModelStrategyControllerGetOrgDefaultStatusUrl = () => {
36
- return `/model-strategies/org-default-status`;
37
- };
38
- exports.getModelStrategyControllerGetOrgDefaultStatusUrl = getModelStrategyControllerGetOrgDefaultStatusUrl;
39
- /**
40
- * @summary Check whether the org has a usable default strategy
41
- */
42
- const modelStrategyControllerGetOrgDefaultStatus = async (options) => {
43
- return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerGetOrgDefaultStatusUrl)(), {
44
- ...options,
45
- method: 'GET'
46
- });
47
- };
48
- exports.modelStrategyControllerGetOrgDefaultStatus = modelStrategyControllerGetOrgDefaultStatus;
49
- const getModelStrategyControllerListTemplatesUrl = () => {
50
- return `/model-strategies/templates`;
51
- };
52
- exports.getModelStrategyControllerListTemplatesUrl = getModelStrategyControllerListTemplatesUrl;
53
- /**
54
- * @summary List the shipped model-strategy presets, annotated with whether this org can run each
55
- */
56
- const modelStrategyControllerListTemplates = async (options) => {
57
- return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerListTemplatesUrl)(), {
58
- ...options,
59
- method: 'GET'
60
- });
61
- };
62
- exports.modelStrategyControllerListTemplates = modelStrategyControllerListTemplates;
63
- const getModelStrategyControllerAdoptTemplateUrl = (slug) => {
64
- return `/model-strategies/templates/${slug}/adopt`;
65
- };
66
- exports.getModelStrategyControllerAdoptTemplateUrl = getModelStrategyControllerAdoptTemplateUrl;
67
- /**
68
- * @summary Adopt a shipped preset as the org default, as a strategy the org owns
69
- */
70
- const modelStrategyControllerAdoptTemplate = async (slug, options) => {
71
- return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerAdoptTemplateUrl)(slug), {
72
- ...options,
73
- method: 'POST'
74
- });
75
- };
76
- exports.modelStrategyControllerAdoptTemplate = modelStrategyControllerAdoptTemplate;
77
35
  const getModelStrategyControllerGetStrategyUrl = (id) => {
78
36
  return `/model-strategies/${id}`;
79
37
  };
@@ -132,52 +90,52 @@ const modelStrategyControllerGetStrategyDeletionImpact = async (id, options) =>
132
90
  });
133
91
  };
134
92
  exports.modelStrategyControllerGetStrategyDeletionImpact = modelStrategyControllerGetStrategyDeletionImpact;
135
- const getModelStrategyControllerUpsertEntriesUrl = (id) => {
136
- return `/model-strategies/${id}/entries`;
93
+ const getModelStrategyControllerUpsertRulesUrl = (id) => {
94
+ return `/model-strategies/${id}/rules`;
137
95
  };
138
- exports.getModelStrategyControllerUpsertEntriesUrl = getModelStrategyControllerUpsertEntriesUrl;
96
+ exports.getModelStrategyControllerUpsertRulesUrl = getModelStrategyControllerUpsertRulesUrl;
139
97
  /**
140
- * @summary Replace all strategy entries
98
+ * @summary Replace all strategy rules
141
99
  */
142
- const modelStrategyControllerUpsertEntries = async (id, upsertModelStrategyEntriesDto, options) => {
143
- return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerUpsertEntriesUrl)(id), {
100
+ const modelStrategyControllerUpsertRules = async (id, upsertModelStrategyRulesDto, options) => {
101
+ return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerUpsertRulesUrl)(id), {
144
102
  ...options,
145
103
  method: 'PUT',
146
104
  headers: { 'Content-Type': 'application/json', ...options?.headers },
147
- body: JSON.stringify(upsertModelStrategyEntriesDto)
105
+ body: JSON.stringify(upsertModelStrategyRulesDto)
148
106
  });
149
107
  };
150
- exports.modelStrategyControllerUpsertEntries = modelStrategyControllerUpsertEntries;
151
- const getModelStrategyControllerUpsertEntryUrl = (id, lane) => {
152
- return `/model-strategies/${id}/entries/lane/${lane}`;
108
+ exports.modelStrategyControllerUpsertRules = modelStrategyControllerUpsertRules;
109
+ const getModelStrategyControllerUpsertRuleUrl = (id, lane) => {
110
+ return `/model-strategies/${id}/rules/lane/${lane}`;
153
111
  };
154
- exports.getModelStrategyControllerUpsertEntryUrl = getModelStrategyControllerUpsertEntryUrl;
112
+ exports.getModelStrategyControllerUpsertRuleUrl = getModelStrategyControllerUpsertRuleUrl;
155
113
  /**
156
- * @summary Bind one model lane, leaving every other lane untouched
114
+ * @summary Set the rule for one model lane, leaving every other rule untouched
157
115
  */
158
- const modelStrategyControllerUpsertEntry = async (id, lane, upsertModelStrategyEntryDto, options) => {
159
- return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerUpsertEntryUrl)(id, lane), {
116
+ const modelStrategyControllerUpsertRule = async (id, lane, upsertModelStrategyLaneRuleDto, options) => {
117
+ return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerUpsertRuleUrl)(id, lane), {
160
118
  ...options,
161
119
  method: 'PUT',
162
120
  headers: { 'Content-Type': 'application/json', ...options?.headers },
163
- body: JSON.stringify(upsertModelStrategyEntryDto)
121
+ body: JSON.stringify(upsertModelStrategyLaneRuleDto)
164
122
  });
165
123
  };
166
- exports.modelStrategyControllerUpsertEntry = modelStrategyControllerUpsertEntry;
167
- const getModelStrategyControllerDeleteEntryUrl = (id, lane) => {
168
- return `/model-strategies/${id}/entries/lane/${lane}`;
124
+ exports.modelStrategyControllerUpsertRule = modelStrategyControllerUpsertRule;
125
+ const getModelStrategyControllerDeleteRuleUrl = (id, lane) => {
126
+ return `/model-strategies/${id}/rules/lane/${lane}`;
169
127
  };
170
- exports.getModelStrategyControllerDeleteEntryUrl = getModelStrategyControllerDeleteEntryUrl;
128
+ exports.getModelStrategyControllerDeleteRuleUrl = getModelStrategyControllerDeleteRuleUrl;
171
129
  /**
172
- * @summary Clear one model lane, so it falls back to the default binding
130
+ * @summary Clear the rule for one model lane
173
131
  */
174
- const modelStrategyControllerDeleteEntry = async (id, lane, options) => {
175
- return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerDeleteEntryUrl)(id, lane), {
132
+ const modelStrategyControllerDeleteRule = async (id, lane, options) => {
133
+ return (0, custom_fetch_1.customFetch)((0, exports.getModelStrategyControllerDeleteRuleUrl)(id, lane), {
176
134
  ...options,
177
135
  method: 'DELETE'
178
136
  });
179
137
  };
180
- exports.modelStrategyControllerDeleteEntry = modelStrategyControllerDeleteEntry;
138
+ exports.modelStrategyControllerDeleteRule = modelStrategyControllerDeleteRule;
181
139
  const getModelStrategyControllerBindStrategyUrl = (projectId) => {
182
140
  return `/projects/${projectId}/model-strategy`;
183
141
  };
@@ -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 { OrgModelDefaultResponseDtoDataEnvelope, SetOrgModelDefaultDto } from '../../models';
7
+ export declare const getOrgModelDefaultControllerGetUrl: () => string;
8
+ /**
9
+ * @summary Get the organisation default model
10
+ */
11
+ export declare const orgModelDefaultControllerGet: (options?: RequestInit) => Promise<OrgModelDefaultResponseDtoDataEnvelope>;
12
+ export declare const getOrgModelDefaultControllerSetUrl: () => string;
13
+ /**
14
+ * @summary Set the organisation default model
15
+ */
16
+ export declare const orgModelDefaultControllerSet: (setOrgModelDefaultDto: SetOrgModelDefaultDto, options?: RequestInit) => Promise<OrgModelDefaultResponseDtoDataEnvelope>;
17
+ export declare const getOrgModelDefaultControllerUnsetUrl: () => string;
18
+ /**
19
+ * @summary Unset the organisation default model
20
+ */
21
+ export declare const orgModelDefaultControllerUnset: (options?: RequestInit) => Promise<unknown>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.orgModelDefaultControllerUnset = exports.getOrgModelDefaultControllerUnsetUrl = exports.orgModelDefaultControllerSet = exports.getOrgModelDefaultControllerSetUrl = exports.orgModelDefaultControllerGet = exports.getOrgModelDefaultControllerGetUrl = void 0;
4
+ const custom_fetch_1 = require("../../custom-fetch");
5
+ const getOrgModelDefaultControllerGetUrl = () => {
6
+ return `/org-model-default`;
7
+ };
8
+ exports.getOrgModelDefaultControllerGetUrl = getOrgModelDefaultControllerGetUrl;
9
+ /**
10
+ * @summary Get the organisation default model
11
+ */
12
+ const orgModelDefaultControllerGet = async (options) => {
13
+ return (0, custom_fetch_1.customFetch)((0, exports.getOrgModelDefaultControllerGetUrl)(), {
14
+ ...options,
15
+ method: 'GET'
16
+ });
17
+ };
18
+ exports.orgModelDefaultControllerGet = orgModelDefaultControllerGet;
19
+ const getOrgModelDefaultControllerSetUrl = () => {
20
+ return `/org-model-default`;
21
+ };
22
+ exports.getOrgModelDefaultControllerSetUrl = getOrgModelDefaultControllerSetUrl;
23
+ /**
24
+ * @summary Set the organisation default model
25
+ */
26
+ const orgModelDefaultControllerSet = async (setOrgModelDefaultDto, options) => {
27
+ return (0, custom_fetch_1.customFetch)((0, exports.getOrgModelDefaultControllerSetUrl)(), {
28
+ ...options,
29
+ method: 'PUT',
30
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
31
+ body: JSON.stringify(setOrgModelDefaultDto)
32
+ });
33
+ };
34
+ exports.orgModelDefaultControllerSet = orgModelDefaultControllerSet;
35
+ const getOrgModelDefaultControllerUnsetUrl = () => {
36
+ return `/org-model-default`;
37
+ };
38
+ exports.getOrgModelDefaultControllerUnsetUrl = getOrgModelDefaultControllerUnsetUrl;
39
+ /**
40
+ * @summary Unset the organisation default model
41
+ */
42
+ const orgModelDefaultControllerUnset = async (options) => {
43
+ return (0, custom_fetch_1.customFetch)((0, exports.getOrgModelDefaultControllerUnsetUrl)(), {
44
+ ...options,
45
+ method: 'DELETE'
46
+ });
47
+ };
48
+ exports.orgModelDefaultControllerUnset = orgModelDefaultControllerUnset;
package/dist/index.d.ts CHANGED
@@ -13,6 +13,7 @@ export * from './endpoints/llm-readiness/llm-readiness';
13
13
  export * from './endpoints/llm-registry/llm-registry';
14
14
  export * from './endpoints/model-resolution-matrix/model-resolution-matrix';
15
15
  export * from './endpoints/model-strategies/model-strategies';
16
+ export * from './endpoints/org-model-default/org-model-default';
16
17
  export * from './endpoints/project-kits/project-kits';
17
18
  export * from './endpoints/role-capabilities/role-capabilities';
18
19
  export * from './endpoints/tool-profiles/tool-profiles';
package/dist/index.js CHANGED
@@ -35,6 +35,7 @@ __exportStar(require("./endpoints/llm-readiness/llm-readiness"), exports);
35
35
  __exportStar(require("./endpoints/llm-registry/llm-registry"), exports);
36
36
  __exportStar(require("./endpoints/model-resolution-matrix/model-resolution-matrix"), exports);
37
37
  __exportStar(require("./endpoints/model-strategies/model-strategies"), exports);
38
+ __exportStar(require("./endpoints/org-model-default/org-model-default"), exports);
38
39
  __exportStar(require("./endpoints/project-kits/project-kits"), exports);
39
40
  __exportStar(require("./endpoints/role-capabilities/role-capabilities"), exports);
40
41
  __exportStar(require("./endpoints/tool-profiles/tool-profiles"), exports);
@@ -48,10 +48,11 @@ export interface AgentKernelResponseDto {
48
48
  description?: string | null;
49
49
  systemPrompt: string;
50
50
  /**
51
- * The model LANE this agent routes on — strategy entries map a lane to a modelSlug. An OPEN vocabulary: every key is declared by a `model-lane` contribution, and `GET /work-kinds?kind=model-lane` enumerates what this organisation may use. Distinct from AgentRunRole (permissions).
51
+ * The model LANE this agent routes on — rules select on it. An OPEN vocabulary: every key is declared by a `model-lane` contribution, and `GET /work-kinds?kind=model-lane` enumerates what this organisation may use. Distinct from AgentRunRole (permissions).
52
+ * @nullable
52
53
  * @pattern ^[a-z][a-z0-9-]{0,62}$
53
54
  */
54
- modelLane: string;
55
+ modelLane: string | null;
55
56
  /**
56
57
  * `null` defers to the engine/model default.
57
58
  * @nullable
@@ -16,10 +16,11 @@ export interface AgentProfileDto {
16
16
  avatarSeed?: AgentProfileDtoAvatarSeed;
17
17
  avatarStyle: string;
18
18
  /**
19
- * The model LANE this agent routes on — strategy entries map a lane to a modelSlug. An OPEN vocabulary: every key is declared by a `model-lane` contribution, and `GET /work-kinds?kind=model-lane` enumerates what this organisation may use. Distinct from AgentRunRole (permissions).
19
+ * The model LANE this agent routes on — rules select on it. An OPEN vocabulary: every key is declared by a `model-lane` contribution, and `GET /work-kinds?kind=model-lane` enumerates what this organisation may use. Distinct from AgentRunRole (permissions).
20
+ * @nullable
20
21
  * @pattern ^[a-z][a-z0-9-]{0,62}$
21
22
  */
22
- modelLane: string;
23
+ modelLane: string | null;
23
24
  skills: string[];
24
25
  isActive: boolean;
25
26
  identityVersion: number;
@@ -14,7 +14,7 @@ export interface CreateAgentKernelDto {
14
14
  /** Base system prompt. */
15
15
  systemPrompt: string;
16
16
  /**
17
- * The model LANE this agent routes on — strategy entries map a lane to a modelSlug. An OPEN vocabulary: every key is declared by a `model-lane` contribution, and `GET /work-kinds?kind=model-lane` enumerates what this organisation may use. Distinct from AgentRunRole (permissions).
17
+ * The model LANE this agent routes on — rules select on it. An OPEN vocabulary: every key is declared by a `model-lane` contribution, and `GET /work-kinds?kind=model-lane` enumerates what this organisation may use. Distinct from AgentRunRole (permissions).
18
18
  * @pattern ^[a-z][a-z0-9-]{0,62}$
19
19
  */
20
20
  modelLane: string;
@@ -3,22 +3,12 @@
3
3
  * LLM Registry API
4
4
  * OpenAPI spec version: 0.1.3
5
5
  */
6
- import type { CreateModelResolutionRuleDtoTargetKind } from './createModelResolutionRuleDtoTargetKind.js';
7
6
  import type { ModelResolutionSelectorDto } from './modelResolutionSelectorDto.js';
8
7
  export interface CreateModelResolutionRuleDto {
9
- /** Dimensional selector. Omit entirely (or pass an empty object) for the default rule — `isDefault` must then be true. */
8
+ /** Dimensional selector. At least one dimension is required: an empty selector is refused (set the org default via the org model default). */
10
9
  selector?: ModelResolutionSelectorDto;
11
- /** Target kind: `concrete` pins (modelId, providerSlug); `strategy` routes through a ModelStrategy class. */
12
- targetKind: CreateModelResolutionRuleDtoTargetKind;
13
- /** Concrete model id. Required when targetKind=concrete. */
14
- targetModelId?: string;
15
- /** Provider slug disambiguating the concrete model. Optional partner to targetModelId. */
16
- targetProviderSlug?: string;
17
- /**
18
- * Work kind this rule routes through. Required when targetKind=strategy. OPEN vocabulary with no kernel core: every lane is declared by a `model-lane` contribution, so `GET /work-kinds?kind=model-lane` enumerates the lanes this organisation may use. Checked against the org's declared set on write.
19
- * @pattern ^[a-z][a-z0-9-]{0,62}$
20
- */
21
- targetModelLane?: string;
10
+ /** Registry model record id (LlmModel.id) the rule routes to. It must be an active model on an active provider the organisation or the platform owns; otherwise the write is refused with 422 MODEL_NOT_SERVED. */
11
+ targetModelId: string;
22
12
  /**
23
13
  * Optional temperature override carried by the resolved model.
24
14
  * @minimum 0
@@ -29,6 +19,4 @@ export interface CreateModelResolutionRuleDto {
29
19
  targetReasoningEffort?: string;
30
20
  /** Tie-break hint when two rules match the same number of dimensions and the fixed dimension-priority ladder does not separate them. Higher wins. Defaults to 0. */
31
21
  priority?: number;
32
- /** Marks the org default rule (empty selector, always matches). Exactly one per org. Defaults to false. */
33
- isDefault?: boolean;
34
22
  }