@vertesia/common 1.6.0-dev.20260918.090710Z → 1.6.0-dev.20260923.085325Z
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.
- package/lib/api-contract/components.generated.json +3562 -2515
- package/lib/api-schemas/account.d.ts +5 -0
- package/lib/api-schemas/account.d.ts.map +1 -1
- package/lib/api-schemas/account.js +7 -0
- package/lib/api-schemas/account.js.map +1 -1
- package/lib/api-schemas/agent-runs.d.ts +930 -300
- package/lib/api-schemas/agent-runs.d.ts.map +1 -1
- package/lib/api-schemas/app-lifecycle.d.ts +4 -0
- package/lib/api-schemas/app-lifecycle.d.ts.map +1 -1
- package/lib/api-schemas/app-lifecycle.js +10 -0
- package/lib/api-schemas/app-lifecycle.js.map +1 -1
- package/lib/api-schemas/app-runtime.d.ts +1360 -420
- package/lib/api-schemas/app-runtime.d.ts.map +1 -1
- package/lib/api-schemas/app-runtime.js +14 -0
- package/lib/api-schemas/app-runtime.js.map +1 -1
- package/lib/api-schemas/apps.d.ts +5 -0
- package/lib/api-schemas/apps.d.ts.map +1 -1
- package/lib/api-schemas/apps.js +6 -3
- package/lib/api-schemas/apps.js.map +1 -1
- package/lib/api-schemas/content.d.ts +465 -150
- package/lib/api-schemas/content.d.ts.map +1 -1
- package/lib/api-schemas/document-processing.d.ts +279 -90
- package/lib/api-schemas/document-processing.d.ts.map +1 -1
- package/lib/api-schemas/embeddings.d.ts +250 -0
- package/lib/api-schemas/embeddings.d.ts.map +1 -1
- package/lib/api-schemas/embeddings.js +163 -0
- package/lib/api-schemas/embeddings.js.map +1 -1
- package/lib/api-schemas/environment.d.ts +2 -2
- package/lib/api-schemas/events.d.ts +837 -270
- package/lib/api-schemas/events.d.ts.map +1 -1
- package/lib/api-schemas/files.d.ts +1 -0
- package/lib/api-schemas/files.d.ts.map +1 -1
- package/lib/api-schemas/files.js +1 -0
- package/lib/api-schemas/files.js.map +1 -1
- package/lib/api-schemas/interaction.d.ts +4260 -1290
- package/lib/api-schemas/interaction.d.ts.map +1 -1
- package/lib/api-schemas/interaction.js +1 -0
- package/lib/api-schemas/interaction.js.map +1 -1
- package/lib/api-schemas/oauth-server.d.ts +27 -0
- package/lib/api-schemas/oauth-server.d.ts.map +1 -1
- package/lib/api-schemas/oauth-server.js +32 -0
- package/lib/api-schemas/oauth-server.js.map +1 -1
- package/lib/api-schemas/process.d.ts +186 -60
- package/lib/api-schemas/process.d.ts.map +1 -1
- package/lib/api-schemas/project-configuration.d.ts +937 -300
- package/lib/api-schemas/project-configuration.d.ts.map +1 -1
- package/lib/api-schemas/project-configuration.js +6 -0
- package/lib/api-schemas/project-configuration.js.map +1 -1
- package/lib/api-schemas/project.d.ts +1416 -450
- package/lib/api-schemas/project.d.ts.map +1 -1
- package/lib/api-schemas/prompt.d.ts +1 -0
- package/lib/api-schemas/prompt.d.ts.map +1 -1
- package/lib/api-schemas/prompt.js +1 -0
- package/lib/api-schemas/prompt.js.map +1 -1
- package/lib/api-schemas/registry.d.ts +12314 -30352
- package/lib/api-schemas/registry.d.ts.map +1 -1
- package/lib/api-schemas/registry.js +62 -34
- package/lib/api-schemas/registry.js.map +1 -1
- package/lib/api-schemas/store.d.ts +4650 -1500
- package/lib/api-schemas/store.d.ts.map +1 -1
- package/lib/api-schemas/sts.d.ts +10 -0
- package/lib/api-schemas/sts.d.ts.map +1 -1
- package/lib/api-schemas/sts.js +14 -0
- package/lib/api-schemas/sts.js.map +1 -1
- package/lib/api-schemas/user.d.ts +28 -12
- package/lib/api-schemas/user.d.ts.map +1 -1
- package/lib/api-schemas/user.js +23 -17
- package/lib/api-schemas/user.js.map +1 -1
- package/lib/api-schemas/workflow-runs.d.ts +186 -60
- package/lib/api-schemas/workflow-runs.d.ts.map +1 -1
- package/lib/apps.d.ts +2 -1
- package/lib/apps.d.ts.map +1 -1
- package/lib/apps.js.map +1 -1
- package/lib/embeddings.d.ts +18 -1
- package/lib/embeddings.d.ts.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/oauth-server.d.ts +5 -1
- package/lib/oauth-server.d.ts.map +1 -1
- package/lib/principal-context.d.ts +21 -12
- package/lib/principal-context.d.ts.map +1 -1
- package/lib/project.d.ts.map +1 -1
- package/lib/project.js +10 -0
- package/lib/project.js.map +1 -1
- package/lib/store/intake-policy-schema.generated.d.ts.map +1 -1
- package/lib/store/intake-policy-schema.generated.js +166 -32
- package/lib/store/intake-policy-schema.generated.js.map +1 -1
- package/lib/store/rendering.d.ts +1 -0
- package/lib/store/rendering.d.ts.map +1 -1
- package/lib/store/rendering.js +4 -0
- package/lib/store/rendering.js.map +1 -1
- package/lib/sts-token-types.d.ts +3 -1
- package/lib/sts-token-types.d.ts.map +1 -1
- package/lib/user.d.ts +2 -1
- package/lib/user.d.ts.map +1 -1
- package/lib/user.js.map +1 -1
- package/lib/vertesia-common.js +2 -2
- package/lib/vertesia-common.js.map +1 -1
- package/package.json +6 -6
- package/src/api-contract/components.generated.json +3562 -2515
- package/src/api-schemas/account.ts +8 -0
- package/src/api-schemas/app-lifecycle.ts +11 -0
- package/src/api-schemas/app-runtime.ts +15 -0
- package/src/api-schemas/apps.ts +6 -3
- package/src/api-schemas/embeddings.ts +184 -0
- package/src/api-schemas/files.ts +1 -0
- package/src/api-schemas/indexing.contract.test.ts +40 -1
- package/src/api-schemas/interaction.ts +1 -0
- package/src/api-schemas/llumiverse.contract.test.ts +70 -40
- package/src/api-schemas/mcp-api-key.contract.test.ts +39 -0
- package/src/api-schemas/oauth-server.ts +36 -0
- package/src/api-schemas/project-configuration.ts +6 -0
- package/src/api-schemas/project.contract.test.ts +15 -0
- package/src/api-schemas/prompt.ts +1 -0
- package/src/api-schemas/registry-groups.test.ts +9 -1
- package/src/api-schemas/registry.ts +136 -32
- package/src/api-schemas/store.contract.test.ts +6 -6
- package/src/api-schemas/sts.ts +16 -0
- package/src/api-schemas/user.contract.test.ts +24 -18
- package/src/api-schemas/user.ts +24 -18
- package/src/api-schemas/views.contract.test.ts +3 -10
- package/src/apps.ts +3 -0
- package/src/embeddings.ts +34 -0
- package/src/index.ts +10 -2
- package/src/oauth-server.ts +11 -0
- package/src/principal-context.ts +22 -12
- package/src/project.ts +10 -0
- package/src/store/intake-policy-schema.generated.ts +166 -32
- package/src/store/rendering.ts +9 -0
- package/src/sts-token-types.ts +5 -0
- package/src/user.ts +8 -1
|
@@ -242,6 +242,21 @@ describe('gate 2 — the closure is closed, bottom-up', () => {
|
|
|
242
242
|
expect(SYSTEM_INTERACTION_CATEGORIES.ContentSearchReranker).toBe(SystemInteractionCategory.analysis);
|
|
243
243
|
});
|
|
244
244
|
|
|
245
|
+
it('uses the agent model default for every app development agent', () => {
|
|
246
|
+
// Each is launched in-code without an environment or model of its own, so an uncategorised
|
|
247
|
+
// one silently resolves to the project BASE default instead of the agent default.
|
|
248
|
+
for (const endpoint of [
|
|
249
|
+
'AppDevelopmentOrchestrator',
|
|
250
|
+
'AppSolutionArchitect',
|
|
251
|
+
'AppDesigner',
|
|
252
|
+
'AppDeveloper',
|
|
253
|
+
'AppReviewer',
|
|
254
|
+
'AppTester',
|
|
255
|
+
]) {
|
|
256
|
+
expect(SYSTEM_INTERACTION_CATEGORIES[endpoint]).toBe(SystemInteractionCategory.agent);
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
|
|
245
260
|
it('publishes the property-mapping map without the propertyNames z.record adds', () => {
|
|
246
261
|
// `Record<string, ProjectSearchPropertyMapping>` is inline in the interface and has no
|
|
247
262
|
// TypeScript name, so it never becomes a canonical alias — it stays canonical AND derived,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
1
|
+
import { describe, expect, expectTypeOf, it } from 'vitest';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
+
import type { NamedInteractionExecutionPayloadSchema } from './interaction.js';
|
|
3
4
|
import { type ApiComponentName, type ApiComponentType, ApiSchemaComponents, mergeComponentGroups } from './registry.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -30,6 +31,13 @@ type ResolvedName<N extends ApiComponentName> = [ApiComponentType<N>] extends [n
|
|
|
30
31
|
* merge actually refuses, which no import of a correct registry can show.
|
|
31
32
|
*/
|
|
32
33
|
describe('mergeComponentGroups', () => {
|
|
34
|
+
it('preserves execution payload types and rejects unregistered component names', () => {
|
|
35
|
+
expectTypeOf<ApiComponentType<'NamedInteractionExecutionPayload'>>().toEqualTypeOf<
|
|
36
|
+
z.infer<typeof NamedInteractionExecutionPayloadSchema>
|
|
37
|
+
>();
|
|
38
|
+
expectTypeOf<'UnregisteredExecutionComponent'>().not.toMatchTypeOf<ApiComponentName>();
|
|
39
|
+
});
|
|
40
|
+
|
|
33
41
|
const A = z.strictObject({ a: z.string() });
|
|
34
42
|
const B = z.strictObject({ b: z.number() });
|
|
35
43
|
|
|
@@ -77,7 +77,12 @@ import {
|
|
|
77
77
|
RoleDefinitionArraySchema,
|
|
78
78
|
SystemRoleDefinitionArraySchema,
|
|
79
79
|
} from './access-control.js';
|
|
80
|
-
import {
|
|
80
|
+
import {
|
|
81
|
+
AccountApiVersionPolicySchema,
|
|
82
|
+
AccountSchema,
|
|
83
|
+
StripeBillingStatusResponseSchema,
|
|
84
|
+
UpdateAccountPayloadSchema,
|
|
85
|
+
} from './account.js';
|
|
81
86
|
import { type JsonObject, toOpenApiComponents } from './adapter.js';
|
|
82
87
|
import * as AgentCommunicationSchemas from './agent-communication.js';
|
|
83
88
|
import * as AgentRunSchemas from './agent-runs.js';
|
|
@@ -175,6 +180,7 @@ import {
|
|
|
175
180
|
StartAppScaffoldResponseSchema,
|
|
176
181
|
StoredTypeRefSchema,
|
|
177
182
|
SystemPackageQuerySchema,
|
|
183
|
+
UpdateAppInstallationOAuthApprovalPayloadSchema,
|
|
178
184
|
UpdateAppInstallationToolAllowlistPayloadSchema,
|
|
179
185
|
UpsertAppVersionRequestSchema,
|
|
180
186
|
ValidateUrlRequestSchema,
|
|
@@ -370,6 +376,22 @@ import {
|
|
|
370
376
|
WorkflowExecutionStatusSchema,
|
|
371
377
|
} from './document-processing.js';
|
|
372
378
|
import {
|
|
379
|
+
EmbeddingBatchApplyRequestSchema,
|
|
380
|
+
EmbeddingBatchApplyResponseSchema,
|
|
381
|
+
EmbeddingBatchCapabilityRequestSchema,
|
|
382
|
+
EmbeddingBatchCapabilityResponseSchema,
|
|
383
|
+
EmbeddingBatchCreateRequestSchema,
|
|
384
|
+
EmbeddingBatchJobRequestSchema,
|
|
385
|
+
EmbeddingBatchJobResponseSchema,
|
|
386
|
+
EmbeddingBatchPrepareRequestSchema,
|
|
387
|
+
EmbeddingBatchPrepareResponseSchema,
|
|
388
|
+
EmbeddingBatchProviderStateSchema,
|
|
389
|
+
EmbeddingBatchRenditionPageRequestSchema,
|
|
390
|
+
EmbeddingBatchRenditionPageResponseSchema,
|
|
391
|
+
EmbeddingBatchRunStateSchema,
|
|
392
|
+
EmbeddingBatchRunSummarySchema,
|
|
393
|
+
EmbeddingBatchSubjobSchema,
|
|
394
|
+
EmbeddingBatchUpdateRequestSchema,
|
|
373
395
|
EmbeddingsApiAudioInputSchema,
|
|
374
396
|
EmbeddingsApiImageInputSchema,
|
|
375
397
|
EmbeddingsApiInputSchema,
|
|
@@ -379,6 +401,7 @@ import {
|
|
|
379
401
|
EmbeddingsApiVideoInputSchema,
|
|
380
402
|
EmbeddingsStatusResponseSchema,
|
|
381
403
|
ProjectConfigurationEmbeddingEnablePayloadSchema,
|
|
404
|
+
RecalculateEmbeddingsQuerySchema,
|
|
382
405
|
} from './embeddings.js';
|
|
383
406
|
import { emitJsonSchema } from './emit-json-schema.js';
|
|
384
407
|
import {
|
|
@@ -613,6 +636,7 @@ import {
|
|
|
613
636
|
CreateOAuthClientPayloadSchema,
|
|
614
637
|
ListOAuthGrantsQuerySchema,
|
|
615
638
|
OAuthAuthorizationDecisionResponseSchema,
|
|
639
|
+
OAuthAuthorizationRequestGeneratedAppSchema,
|
|
616
640
|
OAuthAuthorizationRequestSchema,
|
|
617
641
|
OAuthAuthorizationRequestStatusSchema,
|
|
618
642
|
OAuthAuthorizationServerMetadataSchema,
|
|
@@ -635,6 +659,9 @@ import {
|
|
|
635
659
|
OAuthGrantSortOrderSchema,
|
|
636
660
|
OAuthGrantStatusSchema,
|
|
637
661
|
OAuthGrantTypeSchema,
|
|
662
|
+
OAuthLoginDecisionResponseSchema,
|
|
663
|
+
OAuthLoginPayloadSchema,
|
|
664
|
+
OAuthLoginUserNotFoundResponseSchema,
|
|
638
665
|
OAuthProjectBindingModeSchema,
|
|
639
666
|
OAuthRegistrationSourceSchema,
|
|
640
667
|
OAuthResponseTypeSchema,
|
|
@@ -816,6 +843,7 @@ import * as WorkflowRunSchemas from './workflow-runs.js';
|
|
|
816
843
|
* group approaches the proven-safe size.
|
|
817
844
|
*/
|
|
818
845
|
const IAM_AND_ACCOUNT_SCHEMAS = {
|
|
846
|
+
AccountApiVersionPolicy: AccountApiVersionPolicySchema,
|
|
819
847
|
Account: AccountSchema,
|
|
820
848
|
UpdateAccountPayload: UpdateAccountPayloadSchema,
|
|
821
849
|
StripeBillingStatusResponse: StripeBillingStatusResponseSchema,
|
|
@@ -958,6 +986,10 @@ const OAUTH_SCHEMAS = {
|
|
|
958
986
|
OAuthAuthorizeQuery: OAuthAuthorizeQuerySchema,
|
|
959
987
|
CreateOAuthAuthorizationRequestPayload: CreateOAuthAuthorizationRequestPayloadSchema,
|
|
960
988
|
OAuthAuthorizationRequest: OAuthAuthorizationRequestSchema,
|
|
989
|
+
OAuthAuthorizationRequestGeneratedApp: OAuthAuthorizationRequestGeneratedAppSchema,
|
|
990
|
+
OAuthLoginPayload: OAuthLoginPayloadSchema,
|
|
991
|
+
OAuthLoginUserNotFoundResponse: OAuthLoginUserNotFoundResponseSchema,
|
|
992
|
+
OAuthLoginDecisionResponse: OAuthLoginDecisionResponseSchema,
|
|
961
993
|
ApproveOAuthAuthorizationRequestPayload: ApproveOAuthAuthorizationRequestPayloadSchema,
|
|
962
994
|
OAuthGrantableScopesResponse: OAuthGrantableScopesResponseSchema,
|
|
963
995
|
OAuthAuthorizationDecisionResponse: OAuthAuthorizationDecisionResponseSchema,
|
|
@@ -1199,7 +1231,55 @@ const AGENT_CONVERSATION_SCHEMAS = {
|
|
|
1199
1231
|
ConversationState: ConversationStateSchema,
|
|
1200
1232
|
} as const satisfies Record<string, z.ZodType>;
|
|
1201
1233
|
|
|
1202
|
-
|
|
1234
|
+
// Reference schema types by name to keep declaration output bounded without erasing payload types.
|
|
1235
|
+
type ExecutionRunSchemaMap = {
|
|
1236
|
+
ExecutionRunStatus: typeof ExecutionRunStatusSchema;
|
|
1237
|
+
RunSourceTypes: typeof RunSourceTypesSchema;
|
|
1238
|
+
RunSource: typeof RunSourceSchema;
|
|
1239
|
+
ExecutionRunDocRef: typeof ExecutionRunDocRefSchema;
|
|
1240
|
+
ExecutionRunWorkflow: typeof ExecutionRunWorkflowSchema;
|
|
1241
|
+
ExecutionRunInteraction: typeof ExecutionRunInteractionSchema;
|
|
1242
|
+
ExecutionRun: typeof ExecutionRunSchema;
|
|
1243
|
+
ExecutionRunRef: typeof ExecutionRunRefSchema;
|
|
1244
|
+
ExecutionRunRefArray: typeof ExecutionRunRefArraySchema;
|
|
1245
|
+
UpdateExecutionRunPayload: typeof UpdateExecutionRunPayloadSchema;
|
|
1246
|
+
RunCreatePayload: typeof RunCreatePayloadSchema;
|
|
1247
|
+
SortOrder: typeof SortOrderSchema;
|
|
1248
|
+
SortOption: typeof SortOptionSchema;
|
|
1249
|
+
RunSearchQuery: typeof RunSearchQuerySchema;
|
|
1250
|
+
RunListQuery: typeof RunListQuerySchema;
|
|
1251
|
+
RunSearchPayload: typeof RunSearchPayloadSchema;
|
|
1252
|
+
InteractionExecutionPayload: typeof InteractionExecutionPayloadSchema;
|
|
1253
|
+
NamedInteractionExecutionPayload: typeof NamedInteractionExecutionPayloadSchema;
|
|
1254
|
+
InteractionExecutionResult: typeof InteractionExecutionResultSchema;
|
|
1255
|
+
FindRunResult: typeof FindRunResultSchema;
|
|
1256
|
+
FindRunResultArray: typeof FindRunResultArraySchema;
|
|
1257
|
+
PopulatedExecutionRunResult: typeof PopulatedExecutionRunResultSchema;
|
|
1258
|
+
LegacyExecutionRunResult: typeof LegacyExecutionRunResultSchema;
|
|
1259
|
+
LegacyPopulatedExecutionRunResult: typeof LegacyPopulatedExecutionRunResultSchema;
|
|
1260
|
+
InteractionExecutionConfiguration: typeof InteractionExecutionConfigurationSchema;
|
|
1261
|
+
InteractionExecutionError: typeof InteractionExecutionErrorSchema;
|
|
1262
|
+
ResultStorageOptions: typeof ResultStorageOptionsSchema;
|
|
1263
|
+
ExecuteInteractionByEndpointQuery: typeof ExecuteInteractionByEndpointQuerySchema;
|
|
1264
|
+
ExecuteInteractionByEndpointHeaders: typeof ExecuteInteractionByEndpointHeadersSchema;
|
|
1265
|
+
AsyncCompletionMode: typeof AsyncCompletionModeSchema;
|
|
1266
|
+
AsyncCompletionOptions: typeof AsyncCompletionOptionsSchema;
|
|
1267
|
+
AsyncExecutionPayload: typeof AsyncExecutionPayloadSchema;
|
|
1268
|
+
AsyncInteractionExecutionPayload: typeof AsyncInteractionExecutionPayloadSchema;
|
|
1269
|
+
AsyncConversationExecutionPayload: typeof AsyncConversationExecutionPayloadSchema;
|
|
1270
|
+
AsyncExecutionResult: typeof AsyncExecutionResultSchema;
|
|
1271
|
+
RateLimitRequestPayload: typeof RateLimitRequestPayloadSchema;
|
|
1272
|
+
RateLimitRequestResponse: typeof RateLimitRequestResponseSchema;
|
|
1273
|
+
ComputeRunFacetPayload: typeof ComputeRunFacetPayloadSchema;
|
|
1274
|
+
ComputeRunFacetsResponse: typeof ComputeRunFacetsResponseSchema;
|
|
1275
|
+
RunSearchMetaResponse: typeof RunSearchMetaResponseSchema;
|
|
1276
|
+
ToolResultsPayload: typeof ToolResultsPayloadSchema;
|
|
1277
|
+
UserMessagePayload: typeof UserMessagePayloadSchema;
|
|
1278
|
+
ExecutionResponse: typeof ExecutionResponseSchema;
|
|
1279
|
+
RunClonePayload: typeof RunClonePayloadSchema;
|
|
1280
|
+
};
|
|
1281
|
+
|
|
1282
|
+
const EXECUTION_RUN_SCHEMAS: ExecutionRunSchemaMap = {
|
|
1203
1283
|
// A run: what was executed, by whom, and how it ended.
|
|
1204
1284
|
ExecutionRunStatus: ExecutionRunStatusSchema,
|
|
1205
1285
|
RunSourceTypes: RunSourceTypesSchema,
|
|
@@ -1476,7 +1556,24 @@ const INDEXING_SCHEMAS = {
|
|
|
1476
1556
|
|
|
1477
1557
|
const EMBEDDING_ADMIN_SCHEMAS = {
|
|
1478
1558
|
EmbeddingsStatusResponse: EmbeddingsStatusResponseSchema,
|
|
1559
|
+
RecalculateEmbeddingsQuery: RecalculateEmbeddingsQuerySchema,
|
|
1479
1560
|
ProjectConfigurationEmbeddingEnablePayload: ProjectConfigurationEmbeddingEnablePayloadSchema,
|
|
1561
|
+
EmbeddingBatchProviderState: EmbeddingBatchProviderStateSchema,
|
|
1562
|
+
EmbeddingBatchCapabilityRequest: EmbeddingBatchCapabilityRequestSchema,
|
|
1563
|
+
EmbeddingBatchCapabilityResponse: EmbeddingBatchCapabilityResponseSchema,
|
|
1564
|
+
EmbeddingBatchCreateRequest: EmbeddingBatchCreateRequestSchema,
|
|
1565
|
+
EmbeddingBatchJobRequest: EmbeddingBatchJobRequestSchema,
|
|
1566
|
+
EmbeddingBatchJobResponse: EmbeddingBatchJobResponseSchema,
|
|
1567
|
+
EmbeddingBatchRunState: EmbeddingBatchRunStateSchema,
|
|
1568
|
+
EmbeddingBatchRunSummary: EmbeddingBatchRunSummarySchema,
|
|
1569
|
+
EmbeddingBatchSubjob: EmbeddingBatchSubjobSchema,
|
|
1570
|
+
EmbeddingBatchPrepareRequest: EmbeddingBatchPrepareRequestSchema,
|
|
1571
|
+
EmbeddingBatchPrepareResponse: EmbeddingBatchPrepareResponseSchema,
|
|
1572
|
+
EmbeddingBatchRenditionPageRequest: EmbeddingBatchRenditionPageRequestSchema,
|
|
1573
|
+
EmbeddingBatchRenditionPageResponse: EmbeddingBatchRenditionPageResponseSchema,
|
|
1574
|
+
EmbeddingBatchUpdateRequest: EmbeddingBatchUpdateRequestSchema,
|
|
1575
|
+
EmbeddingBatchApplyRequest: EmbeddingBatchApplyRequestSchema,
|
|
1576
|
+
EmbeddingBatchApplyResponse: EmbeddingBatchApplyResponseSchema,
|
|
1480
1577
|
} as const satisfies Record<string, z.ZodType>;
|
|
1481
1578
|
|
|
1482
1579
|
const COMMAND_SCHEMAS = {
|
|
@@ -2049,6 +2146,7 @@ const VIEW_EXPERIENCE_SCHEMAS = {
|
|
|
2049
2146
|
const APP_LIFECYCLE_SCHEMAS = {
|
|
2050
2147
|
// What an app does once it exists: versions, builds, scaffolds, git repositories,
|
|
2051
2148
|
// development tasks, installations and inspection.
|
|
2149
|
+
UpdateAppInstallationOAuthApprovalPayload: UpdateAppInstallationOAuthApprovalPayloadSchema,
|
|
2052
2150
|
UpdateAppInstallationToolAllowlistPayload: UpdateAppInstallationToolAllowlistPayloadSchema,
|
|
2053
2151
|
ValidateUrlResponse: ValidateUrlResponseSchema,
|
|
2054
2152
|
ValidateUrlRequest: ValidateUrlRequestSchema,
|
|
@@ -2246,6 +2344,8 @@ const STS_SCHEMAS = {
|
|
|
2246
2344
|
EnvironmentTokenRequest: StsSchemas.EnvironmentTokenRequestSchema,
|
|
2247
2345
|
AgentTokenRequest: StsSchemas.AgentTokenRequestSchema,
|
|
2248
2346
|
ServiceAccountTokenRequest: StsSchemas.ServiceAccountTokenRequestSchema,
|
|
2347
|
+
AppSessionTokenRequest: StsSchemas.AppSessionTokenRequestSchema,
|
|
2348
|
+
AppSessionTokenResponse: StsSchemas.AppSessionTokenResponseSchema,
|
|
2249
2349
|
IssueTokenRequest: StsSchemas.IssueTokenRequestSchema,
|
|
2250
2350
|
IssueTokenResponse: StsSchemas.IssueTokenResponseSchema,
|
|
2251
2351
|
IssueTokenForbiddenResponse: StsSchemas.IssueTokenForbiddenResponseSchema,
|
|
@@ -2466,6 +2566,8 @@ const STRICT_COMPONENTS: ReadonlySet<string> = new Set<string>([
|
|
|
2466
2566
|
'EnvironmentTokenRequest',
|
|
2467
2567
|
'AgentTokenRequest',
|
|
2468
2568
|
'ServiceAccountTokenRequest',
|
|
2569
|
+
'AppSessionTokenRequest',
|
|
2570
|
+
'AppSessionTokenResponse',
|
|
2469
2571
|
'IssueTokenResponse',
|
|
2470
2572
|
'IssueTokenForbiddenResponse',
|
|
2471
2573
|
'IssueTokenUnavailableResponse',
|
|
@@ -2481,7 +2583,7 @@ const STRICT_COMPONENTS: ReadonlySet<string> = new Set<string>([
|
|
|
2481
2583
|
'QuotaStandingWindow',
|
|
2482
2584
|
'QuotaStandingAdmissionClass',
|
|
2483
2585
|
'QuotaTierResponse',
|
|
2484
|
-
// The IAM closure.
|
|
2586
|
+
// The IAM closure. AbacPrincipalContext is composed into PrincipalIdentity rather than hoisted,
|
|
2485
2587
|
// so it has no component of its own to list.
|
|
2486
2588
|
'User',
|
|
2487
2589
|
'UpdateUserPayload',
|
|
@@ -2604,34 +2706,12 @@ const STRICT_COMPONENTS: ReadonlySet<string> = new Set<string>([
|
|
|
2604
2706
|
//
|
|
2605
2707
|
// `JSONSchema` is deliberately absent: it is OPEN by design and by long-standing publication —
|
|
2606
2708
|
// a JSON Schema carries keywords the type never enumerated. `JSONSchemaProperties` is a map.
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
'VertexAIGrokOptions',
|
|
2614
|
-
'NovaCanvasOptions',
|
|
2615
|
-
'BedrockConverseOptions',
|
|
2616
|
-
'BedrockNovaOptions',
|
|
2617
|
-
'BedrockMistralOptions',
|
|
2618
|
-
'BedrockAI21Options',
|
|
2619
|
-
'BedrockCohereCommandOptions',
|
|
2620
|
-
'BedrockClaudeOptions',
|
|
2621
|
-
'BedrockPalmyraOptions',
|
|
2622
|
-
'BedrockGptOssOptions',
|
|
2623
|
-
'TwelvelabsPegasusOptions',
|
|
2624
|
-
'BedrockMantleResponsesOptions',
|
|
2625
|
-
'BedrockMantleChatCompletionsOptions',
|
|
2626
|
-
'BedrockMantleClaudeOptions',
|
|
2627
|
-
'OpenAiThinkingOptions',
|
|
2628
|
-
'OpenAiTextOptions',
|
|
2629
|
-
'OpenRouterTextOptions',
|
|
2630
|
-
'OpenAiDalleOptions',
|
|
2631
|
-
'OpenAiGptImageOptions',
|
|
2632
|
-
'XAIGrokImageOptions',
|
|
2633
|
-
'GroqOptions',
|
|
2634
|
-
'MistralTextOptions',
|
|
2709
|
+
// Derive membership so new provider schemas inherit this enforcement check automatically.
|
|
2710
|
+
...ModelOptionsSchema.options.map((schema) => {
|
|
2711
|
+
const id = schema.meta()?.id;
|
|
2712
|
+
if (!id) throw new Error('Model option schemas must declare a component id');
|
|
2713
|
+
return id;
|
|
2714
|
+
}),
|
|
2635
2715
|
// The app-manifest leaves. Every object among them is published closed today, the nested `git`
|
|
2636
2716
|
// block included, and it is spelled `strictObject` so the emission carries it directly. The five
|
|
2637
2717
|
// enums take no `additionalProperties` at all.
|
|
@@ -2799,6 +2879,8 @@ const STRICT_COMPONENTS: ReadonlySet<string> = new Set<string>([
|
|
|
2799
2879
|
'DriftAnalysisResult',
|
|
2800
2880
|
'DriftAnalysisProgress',
|
|
2801
2881
|
'EmbeddingsStatusResponse',
|
|
2882
|
+
'EmbeddingBatchRunSummary',
|
|
2883
|
+
'RecalculateEmbeddingsQuery',
|
|
2802
2884
|
'ProjectConfigurationEmbeddingEnablePayload',
|
|
2803
2885
|
'GenericCommandResponse',
|
|
2804
2886
|
'DriftAnalysisStatusResponse',
|
|
@@ -3040,6 +3122,10 @@ const STRICT_COMPONENTS: ReadonlySet<string> = new Set<string>([
|
|
|
3040
3122
|
'OAuthAuthorizeQuery',
|
|
3041
3123
|
'CreateOAuthAuthorizationRequestPayload',
|
|
3042
3124
|
'OAuthAuthorizationRequest',
|
|
3125
|
+
'OAuthAuthorizationRequestGeneratedApp',
|
|
3126
|
+
'OAuthLoginPayload',
|
|
3127
|
+
'OAuthLoginUserNotFoundResponse',
|
|
3128
|
+
'OAuthLoginDecisionResponse',
|
|
3043
3129
|
'ApproveOAuthAuthorizationRequestPayload',
|
|
3044
3130
|
'OAuthGrantableScopesResponse',
|
|
3045
3131
|
'OAuthAuthorizationDecisionResponse',
|
|
@@ -3280,6 +3366,7 @@ const STRICT_COMPONENTS: ReadonlySet<string> = new Set<string>([
|
|
|
3280
3366
|
'AuditTrailQuery',
|
|
3281
3367
|
'ViewExperienceListQuery',
|
|
3282
3368
|
'UpdateAppInstallationToolAllowlistPayload',
|
|
3369
|
+
'UpdateAppInstallationOAuthApprovalPayload',
|
|
3283
3370
|
'ValidateUrlResponse',
|
|
3284
3371
|
'ValidateUrlRequest',
|
|
3285
3372
|
'AppVersionUrls',
|
|
@@ -3438,8 +3525,25 @@ const STRICT_COMPONENTS: ReadonlySet<string> = new Set<string>([
|
|
|
3438
3525
|
* divergence. Note that `.refine()` is silently DROPPED rather than rejected, so refinements must
|
|
3439
3526
|
* not be used to express contract rules — they would be invisible to both the spec and AJV.
|
|
3440
3527
|
*/
|
|
3528
|
+
function emitSchema(name: string, schema: z.ZodType): unknown {
|
|
3529
|
+
const emitted = emitJsonSchema(schema) as Record<string, unknown>;
|
|
3530
|
+
const rootRef = emitted.$ref;
|
|
3531
|
+
const defs = emitted.$defs;
|
|
3532
|
+
const expectedRef = `#/$defs/${name}`;
|
|
3533
|
+
if (rootRef !== expectedRef || !defs || typeof defs !== 'object' || Array.isArray(defs)) return emitted;
|
|
3534
|
+
|
|
3535
|
+
const root = (defs as Record<string, unknown>)[name];
|
|
3536
|
+
if (!root || typeof root !== 'object' || Array.isArray(root)) return emitted;
|
|
3537
|
+
const remainingDefs = Object.fromEntries(
|
|
3538
|
+
Object.entries(defs as Record<string, unknown>).filter(([id]) => id !== name),
|
|
3539
|
+
);
|
|
3540
|
+
return Object.keys(remainingDefs).length === 0
|
|
3541
|
+
? root
|
|
3542
|
+
: { ...(root as Record<string, unknown>), $defs: remainingDefs };
|
|
3543
|
+
}
|
|
3544
|
+
|
|
3441
3545
|
function emitRawSchemas(): Record<string, unknown> {
|
|
3442
|
-
return Object.fromEntries(Object.entries(API_SCHEMAS).map(([name, schema]) => [name,
|
|
3546
|
+
return Object.fromEntries(Object.entries(API_SCHEMAS).map(([name, schema]) => [name, emitSchema(name, schema)]));
|
|
3443
3547
|
}
|
|
3444
3548
|
|
|
3445
3549
|
/**
|
|
@@ -263,8 +263,8 @@ describe('runtime tightenings — recorded as operation 25 of the 1.5 runbook',
|
|
|
263
263
|
|
|
264
264
|
it('validates model_options against the union instead of accepting any object', () => {
|
|
265
265
|
// Same class: `model_options` was `{type: object, additionalProperties: true}` in the
|
|
266
|
-
// hand-written schema and `$ref: ModelOptions` in the published component.
|
|
267
|
-
//
|
|
266
|
+
// hand-written schema and `$ref: ModelOptions` in the published component. The family hint
|
|
267
|
+
// is optional, but known field types and supplied IDs remain validated.
|
|
268
268
|
expect(ApiSchemaComponents.ContentTypeIntakePolicy).toBeDefined();
|
|
269
269
|
expect(
|
|
270
270
|
validate({
|
|
@@ -272,11 +272,11 @@ describe('runtime tightenings — recorded as operation 25 of the 1.5 runbook',
|
|
|
272
272
|
}),
|
|
273
273
|
errors(),
|
|
274
274
|
).toBe(true);
|
|
275
|
-
expect(validate({ extraction: { config: { model_options: { temperature: 0.5 } } } })).toBe(
|
|
275
|
+
expect(validate({ extraction: { config: { model_options: { temperature: 0.5 } } } })).toBe(true);
|
|
276
276
|
expect(validate({ extraction: { config: { model_options: { _option_id: 'not-a-driver' } } } })).toBe(false);
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
expect(validate({ extraction: { config: { model_options: {} } } })).toBe(false);
|
|
277
|
+
expect(validate({ extraction: { config: { model_options: {} } } })).toBe(true);
|
|
278
|
+
expect(validate({ extraction: { config: { model_options: { temperature: 'hot' } } } })).toBe(false);
|
|
279
|
+
expect(validate({ extraction: { config: { model_options: { unknown_option: true } } } })).toBe(false);
|
|
280
280
|
});
|
|
281
281
|
|
|
282
282
|
it('constrains the two config enums that were unconstrained strings', () => {
|
package/src/api-schemas/sts.ts
CHANGED
|
@@ -124,3 +124,19 @@ export const IssueTokenForbiddenResponseSchema = z
|
|
|
124
124
|
export const IssueTokenUnavailableResponseSchema = z
|
|
125
125
|
.strictObject({ error: z.string(), message: z.string() })
|
|
126
126
|
.meta({ id: 'IssueTokenUnavailableResponse' });
|
|
127
|
+
|
|
128
|
+
export const AppSessionTokenRequestSchema = z
|
|
129
|
+
.strictObject({
|
|
130
|
+
app_name: z.string().min(1),
|
|
131
|
+
scopes: z.array(z.string()).optional(),
|
|
132
|
+
ttl_seconds: z.number().int().min(1).max(900).optional(),
|
|
133
|
+
})
|
|
134
|
+
.meta({ id: 'AppSessionTokenRequest' });
|
|
135
|
+
|
|
136
|
+
export const AppSessionTokenResponseSchema = z
|
|
137
|
+
.strictObject({
|
|
138
|
+
token: z.string(),
|
|
139
|
+
token_type: z.literal('Bearer'),
|
|
140
|
+
expires_in: z.number().int(),
|
|
141
|
+
})
|
|
142
|
+
.meta({ id: 'AppSessionTokenResponse' });
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Ajv2020 } from 'ajv/dist/2020.js';
|
|
2
2
|
import { describe, expect, it } from 'vitest';
|
|
3
|
-
import type {
|
|
3
|
+
import type { AbacPrincipalContext, PrincipalIdentity } from '../principal-context.js';
|
|
4
4
|
import type { UpdateUserPayload, User } from '../user.js';
|
|
5
5
|
import type { JsonObject } from './adapter.js';
|
|
6
6
|
import { ApiSchemaComponents, apiComponentRef, validateApiRequest, validateApiResponse } from './registry.js';
|
|
7
|
-
import type {
|
|
7
|
+
import type { AbacPrincipalContextFromSchema, UserArrayFromSchema } from './user.js';
|
|
8
8
|
|
|
9
9
|
/** Exact type identity — `extends` in both directions is too weak (any/unknown slip through). */
|
|
10
10
|
type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
|
|
@@ -27,19 +27,23 @@ const VALID_USER = {
|
|
|
27
27
|
describe('gate 1 — the schema is the single source of truth for the public IAM types', () => {
|
|
28
28
|
it('publishes the exact schema-derived type, not a hand-written twin', () => {
|
|
29
29
|
assertType<Equals<UserArrayFromSchema, User[]>>(true);
|
|
30
|
-
assertType<Equals<
|
|
30
|
+
assertType<Equals<AbacPrincipalContext, AbacPrincipalContextFromSchema>>(true);
|
|
31
31
|
expect(true).toBe(true);
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
it('derives the
|
|
35
|
-
// PrincipalIdentity
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
assertType<Equals<PrincipalIdentity['
|
|
40
|
-
assertType<Equals<PrincipalIdentity['
|
|
41
|
-
assertType<Equals<PrincipalIdentity['
|
|
42
|
-
assertType<Equals<PrincipalIdentity['
|
|
34
|
+
it('derives the identity fields from the ABAC context rather than restating them', () => {
|
|
35
|
+
// PrincipalIdentity `extends AbacPrincipalContext`, so composing the schemas is what keeps
|
|
36
|
+
// the inherited fields from becoming a twin one level down — the failure mode this batch was
|
|
37
|
+
// scoped to avoid. `kind` and `id` are part of the ABAC context itself (resolvable as
|
|
38
|
+
// `$principal.*`), not identity-only metadata.
|
|
39
|
+
assertType<Equals<PrincipalIdentity['kind'], AbacPrincipalContext['kind']>>(true);
|
|
40
|
+
assertType<Equals<PrincipalIdentity['id'], AbacPrincipalContext['id']>>(true);
|
|
41
|
+
assertType<Equals<PrincipalIdentity['clearance'], AbacPrincipalContext['clearance']>>(true);
|
|
42
|
+
assertType<Equals<PrincipalIdentity['compartments'], AbacPrincipalContext['compartments']>>(true);
|
|
43
|
+
assertType<Equals<PrincipalIdentity['email'], AbacPrincipalContext['email']>>(true);
|
|
44
|
+
assertType<Equals<PrincipalIdentity['tags'], AbacPrincipalContext['tags']>>(true);
|
|
45
|
+
assertType<Equals<PrincipalIdentity['properties'], AbacPrincipalContext['properties']>>(true);
|
|
46
|
+
assertType<Equals<PrincipalIdentity['kind'], 'user' | 'apikey'>>(true);
|
|
43
47
|
assertType<Equals<PrincipalIdentity['id'], string>>(true);
|
|
44
48
|
expect(true).toBe(true);
|
|
45
49
|
});
|
|
@@ -80,20 +84,22 @@ describe('gate 1 — the schema is the single source of truth for the public IAM
|
|
|
80
84
|
});
|
|
81
85
|
|
|
82
86
|
describe('gate 2 — the published components match the closure the types come from', () => {
|
|
83
|
-
it('does not hoist
|
|
87
|
+
it('does not hoist AbacPrincipalContext into a component of its own', () => {
|
|
84
88
|
// It is a public TYPE but has never been a published component. Hoisting it would add a
|
|
85
89
|
// $ref to PrincipalIdentity that every generated client would have to follow.
|
|
86
|
-
expect(Object.keys(ApiSchemaComponents)).not.toContain('
|
|
90
|
+
expect(Object.keys(ApiSchemaComponents)).not.toContain('AbacPrincipalContext');
|
|
87
91
|
const props = ApiSchemaComponents.PrincipalIdentity.properties as Record<string, JsonObject>;
|
|
92
|
+
expect(props.kind).toEqual({ type: 'string', enum: ['user', 'apikey'] });
|
|
88
93
|
expect(props.clearance).toEqual({ type: 'number' });
|
|
89
94
|
expect(props.id).toEqual({ type: 'string' });
|
|
90
95
|
});
|
|
91
96
|
|
|
92
|
-
it('publishes the composed property order
|
|
93
|
-
//
|
|
94
|
-
//
|
|
97
|
+
it('publishes the composed property order — kind and id first', () => {
|
|
98
|
+
// `AbacPrincipalContext` lists its discriminators (kind, id) ahead of the merged BLP
|
|
99
|
+
// attributes; PrincipalIdentity `.extend({})`s it, adding nothing, so the order is the
|
|
100
|
+
// context's own.
|
|
95
101
|
const props = ApiSchemaComponents.PrincipalIdentity.properties as JsonObject;
|
|
96
|
-
expect(Object.keys(props)).toEqual(['clearance', 'compartments', 'email', 'tags', 'properties'
|
|
102
|
+
expect(Object.keys(props)).toEqual(['kind', 'id', 'clearance', 'compartments', 'email', 'tags', 'properties']);
|
|
97
103
|
});
|
|
98
104
|
|
|
99
105
|
it('declares the timestamps the endpoint has always shipped', () => {
|
package/src/api-schemas/user.ts
CHANGED
|
@@ -9,15 +9,22 @@ import { z } from 'zod';
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* The full principal context resolved at token-issue time — every field a rule can reference through
|
|
13
|
+
* `$principal.*`: the principal `kind`, its `id`, and the merged BLP attributes. This is the single
|
|
14
|
+
* source of truth the token server mirrors into the JWT, the shared `buildPrincipalContext`
|
|
15
|
+
* produces, and the UI condition editor offers. `kind` and `id` are first-class members here, not
|
|
16
|
+
* identity-only metadata: they are resolvable in ResourceSet/PrincipalSet conditions, so hiding them
|
|
17
|
+
* (as an earlier split of this schema did) under-declared what the server actually matches against.
|
|
14
18
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
+
* Not hoisted: no `id` in `.meta()`, so the adapter inlines it into `PrincipalIdentity` instead of
|
|
20
|
+
* emitting an `AbacPrincipalContext` component and a `$ref` the document has never published. It
|
|
21
|
+
* still exists as a schema in its own right because it is a public type composed into
|
|
22
|
+
* `PrincipalIdentitySchema` — composing is what keeps the shared fields from becoming a hand-written
|
|
23
|
+
* twin of the schema that publishes them.
|
|
19
24
|
*/
|
|
20
|
-
export const
|
|
25
|
+
export const AbacPrincipalContextSchema = z.object({
|
|
26
|
+
kind: z.enum(['user', 'apikey']),
|
|
27
|
+
id: z.string(),
|
|
21
28
|
clearance: z.number(),
|
|
22
29
|
compartments: z.array(z.string()),
|
|
23
30
|
email: z.string().optional(),
|
|
@@ -26,19 +33,18 @@ export const PrincipalContextSchema = z.object({
|
|
|
26
33
|
});
|
|
27
34
|
|
|
28
35
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
36
|
+
* Response shape of the `/iam/users/identity` endpoint. Extends {@link AbacPrincipalContextSchema}
|
|
37
|
+
* adding nothing today: the two are kept as distinct names so identity-only fields — ones that must
|
|
38
|
+
* NOT become resolvable as `$principal.*` — can be added here later without widening the ABAC
|
|
39
|
+
* surface. Invariant: the ABAC principal context is always a subset of the identity. At this
|
|
40
|
+
* endpoint `kind` is always `user`.
|
|
32
41
|
*/
|
|
33
|
-
export const PrincipalIdentitySchema =
|
|
34
|
-
id: z.string(),
|
|
35
|
-
}).meta({
|
|
42
|
+
export const PrincipalIdentitySchema = AbacPrincipalContextSchema.extend({}).meta({
|
|
36
43
|
id: 'PrincipalIdentity',
|
|
37
44
|
description:
|
|
38
|
-
"Response shape of the `/iam/users/identity` endpoint: the current principal's
|
|
39
|
-
'
|
|
40
|
-
'
|
|
41
|
-
'unintentionally expose `$principal.id` to PrincipalSet rule evaluation.',
|
|
45
|
+
"Response shape of the `/iam/users/identity` endpoint: the current principal's full ABAC " +
|
|
46
|
+
'context — its `kind` (always `user` here), `id`, and the merged BLP attributes a rule can ' +
|
|
47
|
+
'reference through `$principal.*`.',
|
|
42
48
|
});
|
|
43
49
|
|
|
44
50
|
/**
|
|
@@ -194,7 +200,7 @@ export const SignupPayloadSchema = z
|
|
|
194
200
|
* The public IAM types, inferred rather than written. `../principal-context.ts`, `../user.ts` and
|
|
195
201
|
* `../common.ts` re-export these under their public names.
|
|
196
202
|
*/
|
|
197
|
-
export type
|
|
203
|
+
export type AbacPrincipalContextFromSchema = z.infer<typeof AbacPrincipalContextSchema>;
|
|
198
204
|
export type PrincipalIdentityFromSchema = z.infer<typeof PrincipalIdentitySchema>;
|
|
199
205
|
export type UserFromSchema = z.infer<typeof UserSchema>;
|
|
200
206
|
export type UserArrayFromSchema = z.infer<typeof UserArraySchema>;
|
|
@@ -70,19 +70,12 @@ describe('ViewExperienceConfiguration', () => {
|
|
|
70
70
|
).toBe(false);
|
|
71
71
|
});
|
|
72
72
|
|
|
73
|
-
it('accepts View
|
|
74
|
-
//
|
|
75
|
-
// driver is resolved, so they carry no `_option_id`. Validating them against the
|
|
76
|
-
// `ModelOptions` driver union — every branch of which requires that discriminator — meant a
|
|
77
|
-
// stored View could not satisfy its own response schema, and `GET /views` logged a contract
|
|
78
|
-
// violation on every call.
|
|
73
|
+
it('accepts untagged View options and preserves the shared options schema reference', () => {
|
|
74
|
+
// View options and shared model options both permit an omitted family ID.
|
|
79
75
|
const authored = { model_options: { temperature: 0.2, max_tokens: 1024 } };
|
|
80
76
|
expect(validateApiResponse('ViewAgenticExecutionConfiguration', authored).valid).toBe(true);
|
|
81
77
|
|
|
82
|
-
//
|
|
83
|
-
// already resolved, so the shared component keeps the union. Asserted on the published
|
|
84
|
-
// schema because `InteractionExecutionConfiguration` is not itself a response slot — if it
|
|
85
|
-
// ever stops pointing at `ModelOptions`, the relaxation leaked out of Views.
|
|
78
|
+
// Keep the shared component wired to the canonical options contract.
|
|
86
79
|
const modelOptions = (name: string) =>
|
|
87
80
|
(ApiSchemaComponents[name] as { properties: Record<string, unknown> }).properties.model_options;
|
|
88
81
|
expect(modelOptions('InteractionExecutionConfiguration')).toEqual({
|
package/src/apps.ts
CHANGED
|
@@ -51,6 +51,7 @@ import type {
|
|
|
51
51
|
StartAppDevelopmentTaskRequestSchema,
|
|
52
52
|
StartAppScaffoldRequestSchema,
|
|
53
53
|
StartAppScaffoldResponseSchema,
|
|
54
|
+
UpdateAppInstallationOAuthApprovalPayloadSchema,
|
|
54
55
|
UpdateAppInstallationToolAllowlistPayloadSchema,
|
|
55
56
|
UpsertAppVersionRequestSchema,
|
|
56
57
|
ValidateUrlRequestSchema,
|
|
@@ -752,3 +753,5 @@ export type ValidateUrlResponse = z.infer<typeof ValidateUrlResponseSchema>;
|
|
|
752
753
|
* already deleted. Deriving the type is what keeps the two from drifting again.
|
|
753
754
|
*/
|
|
754
755
|
export type AppDeleteSummary = z.infer<typeof AppDeleteSummarySchema>;
|
|
756
|
+
|
|
757
|
+
export type UpdateAppInstallationOAuthApprovalPayload = z.infer<typeof UpdateAppInstallationOAuthApprovalPayloadSchema>;
|
package/src/embeddings.ts
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { EmbeddingsResult } from '@llumiverse/common';
|
|
2
2
|
import type { z } from 'zod';
|
|
3
3
|
import type {
|
|
4
|
+
EmbeddingBatchApplyRequestSchema,
|
|
5
|
+
EmbeddingBatchApplyResponseSchema,
|
|
6
|
+
EmbeddingBatchCapabilityRequestSchema,
|
|
7
|
+
EmbeddingBatchCapabilityResponseSchema,
|
|
8
|
+
EmbeddingBatchCreateRequestSchema,
|
|
9
|
+
EmbeddingBatchJobRequestSchema,
|
|
10
|
+
EmbeddingBatchJobResponseSchema,
|
|
11
|
+
EmbeddingBatchPrepareRequestSchema,
|
|
12
|
+
EmbeddingBatchPrepareResponseSchema,
|
|
13
|
+
EmbeddingBatchProviderStateSchema,
|
|
14
|
+
EmbeddingBatchRenditionPageRequestSchema,
|
|
15
|
+
EmbeddingBatchRenditionPageResponseSchema,
|
|
16
|
+
EmbeddingBatchRunStateSchema,
|
|
17
|
+
EmbeddingBatchRunSummarySchema,
|
|
18
|
+
EmbeddingBatchSubjobSchema,
|
|
19
|
+
EmbeddingBatchUpdateRequestSchema,
|
|
4
20
|
EmbeddingsApiAudioInputSchema,
|
|
5
21
|
EmbeddingsApiImageInputSchema,
|
|
6
22
|
EmbeddingsApiInputSchema,
|
|
@@ -8,6 +24,7 @@ import type {
|
|
|
8
24
|
EmbeddingsApiSourceSchema,
|
|
9
25
|
EmbeddingsApiTextInputSchema,
|
|
10
26
|
EmbeddingsApiVideoInputSchema,
|
|
27
|
+
RecalculateEmbeddingsQuerySchema,
|
|
11
28
|
} from './api-schemas/embeddings.js';
|
|
12
29
|
|
|
13
30
|
/**
|
|
@@ -36,3 +53,20 @@ export type EmbeddingsApiRequest = z.infer<typeof EmbeddingsApiRequestSchema>;
|
|
|
36
53
|
* that prefer to consume types from @vertesia/common.
|
|
37
54
|
*/
|
|
38
55
|
export type EmbeddingsApiResult = EmbeddingsResult;
|
|
56
|
+
export type RecalculateEmbeddingsQuery = z.infer<typeof RecalculateEmbeddingsQuerySchema>;
|
|
57
|
+
export type EmbeddingBatchCapabilityRequest = z.infer<typeof EmbeddingBatchCapabilityRequestSchema>;
|
|
58
|
+
export type EmbeddingBatchCapabilityResponse = z.infer<typeof EmbeddingBatchCapabilityResponseSchema>;
|
|
59
|
+
export type EmbeddingBatchCreateRequest = z.infer<typeof EmbeddingBatchCreateRequestSchema>;
|
|
60
|
+
export type EmbeddingBatchJobRequest = z.infer<typeof EmbeddingBatchJobRequestSchema>;
|
|
61
|
+
export type EmbeddingBatchJobResponse = z.infer<typeof EmbeddingBatchJobResponseSchema>;
|
|
62
|
+
export type EmbeddingBatchProviderState = z.infer<typeof EmbeddingBatchProviderStateSchema>;
|
|
63
|
+
export type EmbeddingBatchRunState = z.infer<typeof EmbeddingBatchRunStateSchema>;
|
|
64
|
+
export type EmbeddingBatchRunSummary = z.infer<typeof EmbeddingBatchRunSummarySchema>;
|
|
65
|
+
export type EmbeddingBatchSubjob = z.infer<typeof EmbeddingBatchSubjobSchema>;
|
|
66
|
+
export type EmbeddingBatchPrepareRequest = z.infer<typeof EmbeddingBatchPrepareRequestSchema>;
|
|
67
|
+
export type EmbeddingBatchPrepareResponse = z.infer<typeof EmbeddingBatchPrepareResponseSchema>;
|
|
68
|
+
export type EmbeddingBatchRenditionPageRequest = z.infer<typeof EmbeddingBatchRenditionPageRequestSchema>;
|
|
69
|
+
export type EmbeddingBatchRenditionPageResponse = z.infer<typeof EmbeddingBatchRenditionPageResponseSchema>;
|
|
70
|
+
export type EmbeddingBatchUpdateRequest = z.infer<typeof EmbeddingBatchUpdateRequestSchema>;
|
|
71
|
+
export type EmbeddingBatchApplyRequest = z.infer<typeof EmbeddingBatchApplyRequestSchema>;
|
|
72
|
+
export type EmbeddingBatchApplyResponse = z.infer<typeof EmbeddingBatchApplyResponseSchema>;
|