@cohesivesystems/relations 0.1.0-alpha.12 → 0.1.0-alpha.129

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.
@@ -1,5 +1,312 @@
1
+ export type GraphDeltaKind = 'Unspecified' | 'Overlay' | 'Version';
2
+ export declare const graphDeltaKinds: {
3
+ readonly unspecified: "Unspecified";
4
+ readonly overlay: "Overlay";
5
+ readonly version: "Version";
6
+ };
7
+ export declare const graphDeltaKindLabels: Record<GraphDeltaKind, string>;
1
8
  export type GraphId = string;
9
+ export type GraphDeltaOperation = {
10
+ readonly $operation: 'addShape';
11
+ } & AddShapeOperation | {
12
+ readonly $operation: 'removeShape';
13
+ } & RemoveShapeOperation | {
14
+ readonly $operation: 'replaceShape';
15
+ } & ReplaceShapeOperation | {
16
+ readonly $operation: 'setGraphAnnotation';
17
+ } & SetGraphAnnotationOperation | {
18
+ readonly $operation: 'removeGraphAnnotation';
19
+ } & RemoveGraphAnnotationOperation | {
20
+ readonly $operation: 'addNamedType';
21
+ } & AddNamedTypeOperation | {
22
+ readonly $operation: 'removeNamedType';
23
+ } & RemoveNamedTypeOperation | {
24
+ readonly $operation: 'replaceNamedType';
25
+ } & ReplaceNamedTypeOperation | {
26
+ readonly $operation: 'addShapeField';
27
+ } & AddShapeFieldOperation | {
28
+ readonly $operation: 'removeShapeField';
29
+ } & RemoveShapeFieldOperation | {
30
+ readonly $operation: 'replaceShapeField';
31
+ } & ReplaceShapeFieldOperation | {
32
+ readonly $operation: 'addTypeField';
33
+ } & AddTypeFieldOperation | {
34
+ readonly $operation: 'removeTypeField';
35
+ } & RemoveTypeFieldOperation | {
36
+ readonly $operation: 'replaceTypeField';
37
+ } & ReplaceTypeFieldOperation | {
38
+ readonly $operation: 'setFieldType';
39
+ } & SetFieldTypeOperation | {
40
+ readonly $operation: 'setFieldPresence';
41
+ } & SetFieldPresenceOperation | {
42
+ readonly $operation: 'setFieldCardinality';
43
+ } & SetFieldCardinalityOperation | {
44
+ readonly $operation: 'setFieldNullability';
45
+ } & SetFieldNullabilityOperation | {
46
+ readonly $operation: 'addFieldConstraint';
47
+ } & AddFieldConstraintOperation | {
48
+ readonly $operation: 'removeFieldConstraint';
49
+ } & RemoveFieldConstraintOperation | {
50
+ readonly $operation: 'setShapeAnnotation';
51
+ } & SetShapeAnnotationOperation | {
52
+ readonly $operation: 'removeShapeAnnotation';
53
+ } & RemoveShapeAnnotationOperation | {
54
+ readonly $operation: 'setTypeAnnotation';
55
+ } & SetTypeAnnotationOperation | {
56
+ readonly $operation: 'removeTypeAnnotation';
57
+ } & RemoveTypeAnnotationOperation | {
58
+ readonly $operation: 'setFieldAnnotation';
59
+ } & SetFieldAnnotationOperation | {
60
+ readonly $operation: 'removeFieldAnnotation';
61
+ } & RemoveFieldAnnotationOperation | {
62
+ readonly $operation: 'restrictAllowedValues';
63
+ } & RestrictAllowedValuesOperation | {
64
+ readonly $operation: 'extendAllowedValues';
65
+ } & ExtendAllowedValuesOperation | {
66
+ readonly $operation: 'addEnumValue';
67
+ } & AddEnumValueOperation | {
68
+ readonly $operation: 'removeEnumValue';
69
+ } & RemoveEnumValueOperation;
70
+ export interface AddShapeOperation {
71
+ shape: Shape;
72
+ ordinal?: number | null;
73
+ note?: string | null;
74
+ }
75
+ export interface RemoveShapeOperation {
76
+ note?: string | null;
77
+ shapeId: ShapeId;
78
+ }
79
+ export interface ReplaceShapeOperation {
80
+ note?: string | null;
81
+ shape: Shape;
82
+ }
83
+ export interface SetGraphAnnotationOperation {
84
+ note?: string | null;
85
+ key: AnnotationKey;
86
+ value: AnnotationValue;
87
+ }
88
+ export interface RemoveGraphAnnotationOperation {
89
+ note?: string | null;
90
+ key: AnnotationKey;
91
+ }
92
+ export interface AddNamedTypeOperation {
93
+ type: TypeDefinition;
94
+ ordinal?: number | null;
95
+ note?: string | null;
96
+ }
97
+ export interface RemoveNamedTypeOperation {
98
+ note?: string | null;
99
+ typeId: TypeId;
100
+ }
101
+ export interface ReplaceNamedTypeOperation {
102
+ note?: string | null;
103
+ type: TypeDefinition;
104
+ }
105
+ export interface AddShapeFieldOperation {
106
+ shapeId: ShapeId;
107
+ field: FieldDefinition;
108
+ ordinal?: number | null;
109
+ note?: string | null;
110
+ }
111
+ export interface RemoveShapeFieldOperation {
112
+ note?: string | null;
113
+ shapeId: ShapeId;
114
+ fieldName: FieldName;
115
+ replacementPath?: string | null;
116
+ }
117
+ export interface ReplaceShapeFieldOperation {
118
+ note?: string | null;
119
+ shapeId: ShapeId;
120
+ field: FieldDefinition;
121
+ }
122
+ export interface AddTypeFieldOperation {
123
+ typeId: TypeId;
124
+ field: StructuralField;
125
+ ordinal?: number | null;
126
+ note?: string | null;
127
+ }
128
+ export interface RemoveTypeFieldOperation {
129
+ note?: string | null;
130
+ typeId: TypeId;
131
+ fieldName: FieldName;
132
+ replacementPath?: string | null;
133
+ }
134
+ export interface ReplaceTypeFieldOperation {
135
+ note?: string | null;
136
+ typeId: TypeId;
137
+ field: StructuralField;
138
+ }
139
+ export interface SetFieldTypeOperation {
140
+ note?: string | null;
141
+ target: GraphFieldPath;
142
+ type: TypeRef;
143
+ }
144
+ export interface SetFieldPresenceOperation {
145
+ note?: string | null;
146
+ target: GraphFieldPath;
147
+ presence: FieldPresence;
148
+ }
149
+ export interface SetFieldCardinalityOperation {
150
+ note?: string | null;
151
+ target: GraphFieldPath;
152
+ cardinality: FieldCardinality;
153
+ }
154
+ export interface SetFieldNullabilityOperation {
155
+ note?: string | null;
156
+ target: GraphFieldPath;
157
+ nullability: FieldNullability;
158
+ }
159
+ export interface AddFieldConstraintOperation {
160
+ target: GraphFieldPath;
161
+ constraint: ShapeConstraint;
162
+ note?: string | null;
163
+ }
164
+ export interface RemoveFieldConstraintOperation {
165
+ note?: string | null;
166
+ target: GraphFieldPath;
167
+ constraint: ShapeConstraint;
168
+ }
169
+ export interface SetShapeAnnotationOperation {
170
+ note?: string | null;
171
+ shapeId: ShapeId;
172
+ key: AnnotationKey;
173
+ value: AnnotationValue;
174
+ }
175
+ export interface RemoveShapeAnnotationOperation {
176
+ note?: string | null;
177
+ shapeId: ShapeId;
178
+ key: AnnotationKey;
179
+ }
180
+ export interface SetTypeAnnotationOperation {
181
+ note?: string | null;
182
+ typeId: TypeId;
183
+ key: AnnotationKey;
184
+ value: AnnotationValue;
185
+ }
186
+ export interface RemoveTypeAnnotationOperation {
187
+ note?: string | null;
188
+ typeId: TypeId;
189
+ key: AnnotationKey;
190
+ }
191
+ export interface SetFieldAnnotationOperation {
192
+ note?: string | null;
193
+ target: GraphFieldPath;
194
+ key: AnnotationKey;
195
+ value: AnnotationValue;
196
+ }
197
+ export interface RemoveFieldAnnotationOperation {
198
+ note?: string | null;
199
+ target: GraphFieldPath;
200
+ key: AnnotationKey;
201
+ }
202
+ export interface RestrictAllowedValuesOperation {
203
+ note?: string | null;
204
+ target: GraphFieldPath;
205
+ values: string[];
206
+ }
207
+ export interface ExtendAllowedValuesOperation {
208
+ target: GraphFieldPath;
209
+ values: string[];
210
+ note?: string | null;
211
+ }
212
+ export interface AddEnumValueOperation {
213
+ typeId: TypeId;
214
+ value: EnumValue;
215
+ note?: string | null;
216
+ }
217
+ export interface RemoveEnumValueOperation {
218
+ note?: string | null;
219
+ typeId: TypeId;
220
+ valueName: string;
221
+ }
222
+ export type AnnotationKey = string;
223
+ export type AnnotationValue = unknown;
2
224
  export type ShapeId = string;
225
+ export interface ShapeGraphDocumentMetadata {
226
+ origin: DocumentOrigin;
227
+ name?: string | null;
228
+ description?: string | null;
229
+ sourceUri?: string | null;
230
+ createdAtUtc?: string | null;
231
+ updatedAtUtc?: string | null;
232
+ annotations: Record<string, AnnotationValue>;
233
+ }
234
+ export interface ShapeGraph {
235
+ id: GraphId;
236
+ shapes: Shape[];
237
+ namedTypes: TypeDefinition[];
238
+ annotations: Record<string, AnnotationValue>;
239
+ diagnostics: GraphDiagnostic[];
240
+ hasErrors: boolean;
241
+ }
242
+ export type TypeRef = {
243
+ readonly $type: 'named';
244
+ } & NamedTypeRef | {
245
+ readonly $type: 'opaque';
246
+ } & OpaqueRuntimeTypeRef | {
247
+ readonly $type: 'scalar';
248
+ } & ScalarTypeRef | {
249
+ readonly $type: 'enum';
250
+ } & EnumTypeRef | {
251
+ readonly $type: 'entityRef';
252
+ } & EntityReferenceTypeRef | {
253
+ readonly $type: 'array';
254
+ } & ArrayTypeRef | {
255
+ readonly $type: 'object';
256
+ } & ObjectTypeRef | {
257
+ readonly $type: 'quantity';
258
+ } & QuantityTypeRef | {
259
+ readonly $type: 'json';
260
+ } & JsonTypeRef;
261
+ export interface NamedTypeRef {
262
+ typeId: TypeId;
263
+ }
264
+ export interface OpaqueRuntimeTypeRef {
265
+ runtimeType: string;
266
+ inferenceDiagnostic?: TypeInferenceDiagnostic | null;
267
+ }
268
+ export interface ScalarTypeRef {
269
+ kind: ScalarTypeKind;
270
+ format: PrimitiveFormat;
271
+ }
272
+ export interface EnumTypeRef {
273
+ name: string;
274
+ members: string[];
275
+ }
276
+ export interface EntityReferenceTypeRef {
277
+ entity: EntityTypeName;
278
+ }
279
+ export interface ArrayTypeRef {
280
+ elementType: TypeRef;
281
+ }
282
+ export interface ObjectTypeRef {
283
+ fields: ObjectFieldTypeDef[];
284
+ }
285
+ export interface QuantityTypeRef {
286
+ quantity: string;
287
+ baseKind: ScalarTypeKind;
288
+ }
289
+ export interface JsonTypeRef {
290
+ kind: JsonTypeKind;
291
+ }
292
+ export type FieldCardinality = 'Single' | 'Many';
293
+ export declare const fieldCardinalities: {
294
+ readonly single: "Single";
295
+ readonly many: "Many";
296
+ };
297
+ export declare const fieldCardinalityLabels: Record<FieldCardinality, string>;
298
+ export type FieldPresence = 'Required' | 'Optional';
299
+ export declare const fieldPresences: {
300
+ readonly required: "Required";
301
+ readonly optional: "Optional";
302
+ };
303
+ export declare const fieldPresenceLabels: Record<FieldPresence, string>;
304
+ export type FieldNullability = 'NonNullable' | 'Nullable';
305
+ export declare const fieldNullabilities: {
306
+ readonly nonNullable: "NonNullable";
307
+ readonly nullable: "Nullable";
308
+ };
309
+ export declare const fieldNullabilityLabels: Record<FieldNullability, string>;
3
310
  export type RelationQueryExplainStage = {
4
311
  readonly $stage: 'staticCompilation';
5
312
  } & RelationQueryStaticCompilationExplainStage | {
@@ -370,6 +677,198 @@ export interface RelationshipCatalogDocumentMetadata {
370
677
  updatedAtUtc?: string | null;
371
678
  annotations: Record<string, AnnotationValue>;
372
679
  }
680
+ export interface Shape {
681
+ id: ShapeId;
682
+ fields: FieldDefinition[];
683
+ constraints: ShapeConstraint[];
684
+ annotations: Record<string, AnnotationValue>;
685
+ role?: string | null;
686
+ entityType?: EntityTypeName | null;
687
+ }
688
+ export type TypeDefinition = {
689
+ readonly $typeDef: 'structural';
690
+ } & Structural | {
691
+ readonly $typeDef: 'enum';
692
+ } & Enum | {
693
+ readonly $typeDef: 'union';
694
+ } & Union;
695
+ export interface Structural {
696
+ id: TypeId;
697
+ name: string;
698
+ fields: StructuralField[];
699
+ constraints: ShapeConstraint[];
700
+ annotations: Record<string, AnnotationValue>;
701
+ }
702
+ export interface Enum {
703
+ id: TypeId;
704
+ name: string;
705
+ underlying: PrimitiveType;
706
+ values: EnumValue[];
707
+ annotations: Record<string, AnnotationValue>;
708
+ }
709
+ export interface Union {
710
+ id: TypeId;
711
+ name: string;
712
+ discriminator: UnionDiscriminator;
713
+ cases: UnionCase[];
714
+ annotations: Record<string, AnnotationValue>;
715
+ }
716
+ export type TypeId = string;
717
+ export interface FieldDefinition {
718
+ name: FieldName;
719
+ type: TypeRef;
720
+ cardinality: FieldCardinality;
721
+ presence: FieldPresence;
722
+ role: FieldRole;
723
+ nullability: FieldNullability;
724
+ mutability: FieldMutability;
725
+ compute?: ComputeDefinition | null;
726
+ constraints: ShapeConstraint[];
727
+ annotations: Record<string, AnnotationValue>;
728
+ }
729
+ export type FieldName = string;
730
+ export interface StructuralField {
731
+ name: FieldName;
732
+ type: TypeRef;
733
+ cardinality: FieldCardinality;
734
+ presence: FieldPresence;
735
+ nullability: FieldNullability;
736
+ role: FieldRole;
737
+ constraints: ShapeConstraint[];
738
+ annotations: Record<string, AnnotationValue>;
739
+ }
740
+ export interface GraphFieldPath {
741
+ shapeId?: ShapeId | null;
742
+ typeId?: TypeId | null;
743
+ path: FieldPath;
744
+ }
745
+ export type ShapeConstraint = {
746
+ readonly $constraint: 'required';
747
+ } & RequiredConstraint | {
748
+ readonly $constraint: 'minLength';
749
+ } & MinLengthConstraint | {
750
+ readonly $constraint: 'maxLength';
751
+ } & MaxLengthConstraint | {
752
+ readonly $constraint: 'range';
753
+ } & RangeConstraint | {
754
+ readonly $constraint: 'regex';
755
+ } & RegexConstraint | {
756
+ readonly $constraint: 'allowedValues';
757
+ } & AllowedValuesConstraint | {
758
+ readonly $constraint: 'occurrence';
759
+ } & OccurrenceConstraint;
760
+ export interface RequiredConstraint {
761
+ field?: FieldPath | null;
762
+ message?: string | null;
763
+ }
764
+ export interface MinLengthConstraint {
765
+ value: number;
766
+ field?: FieldPath | null;
767
+ message?: string | null;
768
+ }
769
+ export interface MaxLengthConstraint {
770
+ value: number;
771
+ field?: FieldPath | null;
772
+ message?: string | null;
773
+ }
774
+ export interface RangeConstraint {
775
+ minimum?: number | null;
776
+ maximum?: number | null;
777
+ field?: FieldPath | null;
778
+ message?: string | null;
779
+ }
780
+ export interface RegexConstraint {
781
+ pattern: string;
782
+ field?: FieldPath | null;
783
+ message?: string | null;
784
+ }
785
+ export interface AllowedValuesConstraint {
786
+ values: string[];
787
+ field?: FieldPath | null;
788
+ message?: string | null;
789
+ }
790
+ export interface OccurrenceConstraint {
791
+ minimum?: number | null;
792
+ maximum?: number | null;
793
+ field?: FieldPath | null;
794
+ message?: string | null;
795
+ }
796
+ export interface EnumValue {
797
+ name: string;
798
+ value?: string | null;
799
+ label?: string | null;
800
+ description?: string | null;
801
+ }
802
+ export type DocumentOrigin = 'Unknown' | 'User' | 'System' | 'Imported' | 'Generated' | 'Compiled' | 'Extracted';
803
+ export declare const documentOrigins: {
804
+ readonly unknown: "Unknown";
805
+ readonly user: "User";
806
+ readonly system: "System";
807
+ readonly imported: "Imported";
808
+ readonly generated: "Generated";
809
+ readonly compiled: "Compiled";
810
+ readonly extracted: "Extracted";
811
+ };
812
+ export declare const documentOriginLabels: Record<DocumentOrigin, string>;
813
+ export interface GraphDiagnostic {
814
+ id: DiagnosticId;
815
+ severity: DiagnosticSeverity;
816
+ message: string;
817
+ shapeId?: ShapeId | null;
818
+ fieldIdentity?: string | null;
819
+ typeId?: TypeId | null;
820
+ }
821
+ export interface TypeInferenceDiagnostic {
822
+ reason: string;
823
+ message?: string | null;
824
+ }
825
+ export type ScalarTypeKind = 'Bool' | 'Int32' | 'Int64' | 'Decimal' | 'String' | 'Guid' | 'Date' | 'DateTime' | 'Instant' | 'Bytes';
826
+ export declare const scalarTypeKinds: {
827
+ readonly bool: "Bool";
828
+ readonly int32: "Int32";
829
+ readonly int64: "Int64";
830
+ readonly decimal: "Decimal";
831
+ readonly string: "String";
832
+ readonly guid: "Guid";
833
+ readonly date: "Date";
834
+ readonly dateTime: "DateTime";
835
+ readonly instant: "Instant";
836
+ readonly bytes: "Bytes";
837
+ };
838
+ export declare const scalarTypeKindLabels: Record<ScalarTypeKind, string>;
839
+ export type PrimitiveFormat = 'None' | 'Uuid' | 'IsoDate' | 'IsoDateTime' | 'IsoInstant' | 'CurrencyCode' | 'CountryCode' | 'Email' | 'Uri' | 'Base64';
840
+ export declare const primitiveFormats: {
841
+ readonly none: "None";
842
+ readonly uuid: "Uuid";
843
+ readonly isoDate: "IsoDate";
844
+ readonly isoDateTime: "IsoDateTime";
845
+ readonly isoInstant: "IsoInstant";
846
+ readonly currencyCode: "CurrencyCode";
847
+ readonly countryCode: "CountryCode";
848
+ readonly email: "Email";
849
+ readonly uri: "Uri";
850
+ readonly base64: "Base64";
851
+ };
852
+ export declare const primitiveFormatLabels: Record<PrimitiveFormat, string>;
853
+ export type EntityTypeName = string;
854
+ export interface ObjectFieldTypeDef {
855
+ name: string;
856
+ type: TypeRef;
857
+ cardinality: FieldCardinality;
858
+ presence: FieldPresence;
859
+ nullability: FieldNullability;
860
+ annotations: Record<string, AnnotationValue>;
861
+ }
862
+ export type JsonTypeKind = 'Any' | 'Object' | 'Array' | 'String' | 'Number' | 'Boolean';
863
+ export declare const jsonTypeKinds: {
864
+ readonly any: "Any";
865
+ readonly object: "Object";
866
+ readonly array: "Array";
867
+ readonly string: "String";
868
+ readonly number: "Number";
869
+ readonly boolean: "Boolean";
870
+ };
871
+ export declare const jsonTypeKindLabels: Record<JsonTypeKind, string>;
373
872
  export type RelationQueryExplainStageStatus = 'Complete' | 'Unavailable' | 'Invalid' | 'Incomplete' | 'Failed';
374
873
  export declare const relationQueryExplainStageStatuses: {
375
874
  readonly complete: "Complete";
@@ -859,19 +1358,6 @@ export interface InvariantDefinition {
859
1358
  expression: Expr;
860
1359
  message?: string | null;
861
1360
  }
862
- export type DocumentOrigin = 'Unknown' | 'User' | 'System' | 'Imported' | 'Generated' | 'Compiled' | 'Extracted';
863
- export declare const documentOrigins: {
864
- readonly unknown: "Unknown";
865
- readonly user: "User";
866
- readonly system: "System";
867
- readonly imported: "Imported";
868
- readonly generated: "Generated";
869
- readonly compiled: "Compiled";
870
- readonly extracted: "Extracted";
871
- };
872
- export declare const documentOriginLabels: Record<DocumentOrigin, string>;
873
- export type AnnotationKey = string;
874
- export type AnnotationValue = unknown;
875
1361
  export interface RelationDraftProducerArtifactReference {
876
1362
  kind: string;
877
1363
  value: string;
@@ -913,6 +1399,49 @@ export interface RelationshipDefinition {
913
1399
  targetKey: RelationshipTargetKey;
914
1400
  sourceReferenceUniqueness: SourceReferenceUniqueness;
915
1401
  }
1402
+ export type PrimitiveType = 'Bool' | 'Int32' | 'Int64' | 'Decimal' | 'String' | 'Guid' | 'Date' | 'DateTime' | 'Instant' | 'Bytes';
1403
+ export declare const primitiveTypes: {
1404
+ readonly bool: "Bool";
1405
+ readonly int32: "Int32";
1406
+ readonly int64: "Int64";
1407
+ readonly decimal: "Decimal";
1408
+ readonly string: "String";
1409
+ readonly guid: "Guid";
1410
+ readonly date: "Date";
1411
+ readonly dateTime: "DateTime";
1412
+ readonly instant: "Instant";
1413
+ readonly bytes: "Bytes";
1414
+ };
1415
+ export declare const primitiveTypeLabels: Record<PrimitiveType, string>;
1416
+ export interface UnionDiscriminator {
1417
+ fieldName: string;
1418
+ type: PrimitiveType;
1419
+ }
1420
+ export interface UnionCase {
1421
+ name: string;
1422
+ type: TypeRef;
1423
+ discriminatorValue: string;
1424
+ }
1425
+ export type FieldRole = 'Data' | 'Identity' | 'Reference' | 'Computed' | 'Metadata';
1426
+ export declare const fieldRoles: {
1427
+ readonly data: "Data";
1428
+ readonly identity: "Identity";
1429
+ readonly reference: "Reference";
1430
+ readonly computed: "Computed";
1431
+ readonly metadata: "Metadata";
1432
+ };
1433
+ export declare const fieldRoleLabels: Record<FieldRole, string>;
1434
+ export type FieldMutability = 'Mutable' | 'WriteOnce' | 'Computed';
1435
+ export declare const fieldMutabilities: {
1436
+ readonly mutable: "Mutable";
1437
+ readonly writeOnce: "WriteOnce";
1438
+ readonly computed: "Computed";
1439
+ };
1440
+ export declare const fieldMutabilityLabels: Record<FieldMutability, string>;
1441
+ export interface ComputeDefinition {
1442
+ expression: Expr;
1443
+ }
1444
+ export type DiagnosticId = string;
916
1445
  export interface RelationQueryLogicalPlan {
917
1446
  nodes: RelationQueryLogicalPlanNode[];
918
1447
  retainedNodes: QueryNodeId[];
@@ -1040,7 +1569,7 @@ export declare const relationQueryBoundAssessmentStatuses: {
1040
1569
  readonly blocked: "Blocked";
1041
1570
  };
1042
1571
  export declare const relationQueryBoundAssessmentStatusLabels: Record<RelationQueryBoundAssessmentStatus, string>;
1043
- export type RelationQueryLogicalCapabilityKind = 'Source' | 'Filter' | 'RelationshipTraversal' | 'ForwardRelationshipTraversal' | 'InverseRelationshipTraversal' | 'AtMostOneRelationshipTraversal' | 'ManyRelationshipTraversal' | 'RequiredRelationshipTraversal' | 'OptionalRelationshipTraversal' | 'Join' | 'InnerJoin' | 'LeftOuterJoin' | 'RightOuterJoin' | 'FullOuterJoin' | 'TemporalJoin' | 'ExpandCollection' | 'Projection' | 'ProjectionAssignment' | 'DistinctRows' | 'DistinctKeys' | 'Aggregation' | 'AggregateGrouping' | 'AggregateFilter' | 'CountAggregate' | 'SumAggregate' | 'MinimumAggregate' | 'MaximumAggregate' | 'AnyAggregate' | 'AllAggregate' | 'Ordering' | 'AscendingOrdering' | 'DescendingOrdering' | 'NullsFirst' | 'NullsLast' | 'StableTieOrdering' | 'OffsetPaging' | 'KeysetPaging' | 'OnePerRootRelationOutput' | 'ZeroOrOnePerRootRelationOutput' | 'ManyPerRootRelationOutput' | 'SetRelationOutput' | 'RelationOutputIdentity' | 'RelationInvariant' | 'QueryRowsResult' | 'QueryAggregationResult' | 'AlwaysPresentBinding' | 'MayBeAbsentBinding' | 'AverageAggregate';
1572
+ export type RelationQueryLogicalCapabilityKind = 'Source' | 'Filter' | 'RelationshipTraversal' | 'ForwardRelationshipTraversal' | 'InverseRelationshipTraversal' | 'AtMostOneRelationshipTraversal' | 'ManyRelationshipTraversal' | 'RequiredRelationshipTraversal' | 'OptionalRelationshipTraversal' | 'Join' | 'InnerJoin' | 'LeftOuterJoin' | 'RightOuterJoin' | 'FullOuterJoin' | 'TemporalJoin' | 'ExpandCollection' | 'Projection' | 'ProjectionAssignment' | 'DistinctRows' | 'DistinctKeys' | 'Aggregation' | 'AggregateGrouping' | 'AggregateFilter' | 'CountAggregate' | 'SumAggregate' | 'MinimumAggregate' | 'MaximumAggregate' | 'AnyAggregate' | 'AllAggregate' | 'Ordering' | 'AscendingOrdering' | 'DescendingOrdering' | 'NullsFirst' | 'NullsLast' | 'StableTieOrdering' | 'OffsetPaging' | 'KeysetPaging' | 'OnePerRootRelationOutput' | 'ZeroOrOnePerRootRelationOutput' | 'ManyPerRootRelationOutput' | 'SetRelationOutput' | 'RelationOutputIdentity' | 'RelationInvariant' | 'QueryRowsResult' | 'QueryAggregationResult' | 'AlwaysPresentBinding' | 'MayBeAbsentBinding' | 'AverageAggregate' | 'SelectRepresentative';
1044
1573
  export declare const relationQueryLogicalCapabilityKinds: {
1045
1574
  readonly source: "Source";
1046
1575
  readonly filter: "Filter";
@@ -1090,6 +1619,7 @@ export declare const relationQueryLogicalCapabilityKinds: {
1090
1619
  readonly alwaysPresentBinding: "AlwaysPresentBinding";
1091
1620
  readonly mayBeAbsentBinding: "MayBeAbsentBinding";
1092
1621
  readonly averageAggregate: "AverageAggregate";
1622
+ readonly selectRepresentative: "SelectRepresentative";
1093
1623
  };
1094
1624
  export declare const relationQueryLogicalCapabilityKindLabels: Record<RelationQueryLogicalCapabilityKind, string>;
1095
1625
  export interface ExprCapabilityId {
@@ -1232,6 +1762,8 @@ export type LogicalQueryNode = {
1232
1762
  } & ProjectQueryNode | {
1233
1763
  readonly $node: 'distinct';
1234
1764
  } & DistinctQueryNode | {
1765
+ readonly $node: 'selectRepresentative';
1766
+ } & SelectRepresentativeQueryNode | {
1235
1767
  readonly $node: 'aggregate';
1236
1768
  } & AggregateQueryNode | {
1237
1769
  readonly $node: 'order';
@@ -1278,6 +1810,7 @@ export interface ExpandCollectionQueryNode {
1278
1810
  collection: Expr;
1279
1811
  itemBinding: ValueBindingId;
1280
1812
  itemType: TypeRef;
1813
+ itemShape?: QualifiedShapeId | null;
1281
1814
  id: QueryNodeId;
1282
1815
  }
1283
1816
  export interface ProjectQueryNode {
@@ -1292,6 +1825,12 @@ export interface DistinctQueryNode {
1292
1825
  keys: Expr[];
1293
1826
  id: QueryNodeId;
1294
1827
  }
1828
+ export interface SelectRepresentativeQueryNode {
1829
+ id: QueryNodeId;
1830
+ input: QueryNodeId;
1831
+ keys: Expr[];
1832
+ orderings: QueryOrdering[];
1833
+ }
1295
1834
  export interface AggregateQueryNode {
1296
1835
  input: QueryNodeId;
1297
1836
  resultBinding: ValueBindingId;
@@ -1344,56 +1883,6 @@ export declare const binaryOperators: {
1344
1883
  readonly div: "Div";
1345
1884
  };
1346
1885
  export declare const binaryOperatorLabels: Record<BinaryOperator, string>;
1347
- export type TypeRef = {
1348
- readonly $type: 'named';
1349
- } & NamedTypeRef | {
1350
- readonly $type: 'opaque';
1351
- } & OpaqueRuntimeTypeRef | {
1352
- readonly $type: 'scalar';
1353
- } & ScalarTypeRef | {
1354
- readonly $type: 'enum';
1355
- } & EnumTypeRef | {
1356
- readonly $type: 'entityRef';
1357
- } & EntityReferenceTypeRef | {
1358
- readonly $type: 'array';
1359
- } & ArrayTypeRef | {
1360
- readonly $type: 'object';
1361
- } & ObjectTypeRef | {
1362
- readonly $type: 'quantity';
1363
- } & QuantityTypeRef | {
1364
- readonly $type: 'json';
1365
- } & JsonTypeRef;
1366
- export interface NamedTypeRef {
1367
- typeId: TypeId;
1368
- }
1369
- export interface OpaqueRuntimeTypeRef {
1370
- runtimeType: string;
1371
- inferenceDiagnostic?: TypeInferenceDiagnostic | null;
1372
- }
1373
- export interface ScalarTypeRef {
1374
- kind: ScalarTypeKind;
1375
- format: PrimitiveFormat;
1376
- }
1377
- export interface EnumTypeRef {
1378
- name: string;
1379
- members: string[];
1380
- }
1381
- export interface EntityReferenceTypeRef {
1382
- entity: EntityTypeName;
1383
- }
1384
- export interface ArrayTypeRef {
1385
- elementType: TypeRef;
1386
- }
1387
- export interface ObjectTypeRef {
1388
- fields: ObjectFieldTypeDef[];
1389
- }
1390
- export interface QuantityTypeRef {
1391
- quantity: string;
1392
- baseKind: ScalarTypeKind;
1393
- }
1394
- export interface JsonTypeRef {
1395
- kind: JsonTypeKind;
1396
- }
1397
1886
  export type AggregateOperator = 'Count' | 'Sum' | 'Min' | 'Max' | 'Any' | 'All' | 'Average';
1398
1887
  export declare const aggregateOperators: {
1399
1888
  readonly count: "Count";
@@ -1580,6 +2069,11 @@ export interface ProjectionAssignment {
1580
2069
  target: FieldPath;
1581
2070
  value: Expr;
1582
2071
  }
2072
+ export interface QueryOrdering {
2073
+ key: Expr;
2074
+ direction: QuerySortDirection;
2075
+ nullPlacement: QueryNullPlacement;
2076
+ }
1583
2077
  export interface QueryGrouping {
1584
2078
  id: QueryAssignmentId;
1585
2079
  target: FieldPath;
@@ -1592,11 +2086,6 @@ export interface QueryAggregateAssignment {
1592
2086
  value?: Expr | null;
1593
2087
  filter?: Expr | null;
1594
2088
  }
1595
- export interface QueryOrdering {
1596
- key: Expr;
1597
- direction: QuerySortDirection;
1598
- nullPlacement: QueryNullPlacement;
1599
- }
1600
2089
  export type QueryPageDefinition = {
1601
2090
  readonly $page: 'offset';
1602
2091
  } & OffsetPageDefinition | {
@@ -1611,12 +2100,6 @@ export interface KeysetPageDefinition {
1611
2100
  limit: number;
1612
2101
  }
1613
2102
  export type QueryParameterId = string;
1614
- export type FieldPresence = 'Required' | 'Optional';
1615
- export declare const fieldPresences: {
1616
- readonly required: "Required";
1617
- readonly optional: "Optional";
1618
- };
1619
- export declare const fieldPresenceLabels: Record<FieldPresence, string>;
1620
2103
  export type QueryParameterDefaultKind = 'None' | 'Value';
1621
2104
  export declare const queryParameterDefaultKinds: {
1622
2105
  readonly none: "None";
@@ -1646,58 +2129,6 @@ export interface UnresolvedRelationDraftAssignmentResolution {
1646
2129
  export interface AmbiguousRelationDraftAssignmentResolution {
1647
2130
  candidateIds: RelationDraftCandidateId[];
1648
2131
  }
1649
- export type TypeId = string;
1650
- export interface TypeInferenceDiagnostic {
1651
- reason: string;
1652
- message?: string | null;
1653
- }
1654
- export type ScalarTypeKind = 'Bool' | 'Int32' | 'Int64' | 'Decimal' | 'String' | 'Guid' | 'Date' | 'DateTime' | 'Instant' | 'Bytes';
1655
- export declare const scalarTypeKinds: {
1656
- readonly bool: "Bool";
1657
- readonly int32: "Int32";
1658
- readonly int64: "Int64";
1659
- readonly decimal: "Decimal";
1660
- readonly string: "String";
1661
- readonly guid: "Guid";
1662
- readonly date: "Date";
1663
- readonly dateTime: "DateTime";
1664
- readonly instant: "Instant";
1665
- readonly bytes: "Bytes";
1666
- };
1667
- export declare const scalarTypeKindLabels: Record<ScalarTypeKind, string>;
1668
- export type PrimitiveFormat = 'None' | 'Uuid' | 'IsoDate' | 'IsoDateTime' | 'IsoInstant' | 'CurrencyCode' | 'CountryCode' | 'Email' | 'Uri' | 'Base64';
1669
- export declare const primitiveFormats: {
1670
- readonly none: "None";
1671
- readonly uuid: "Uuid";
1672
- readonly isoDate: "IsoDate";
1673
- readonly isoDateTime: "IsoDateTime";
1674
- readonly isoInstant: "IsoInstant";
1675
- readonly currencyCode: "CurrencyCode";
1676
- readonly countryCode: "CountryCode";
1677
- readonly email: "Email";
1678
- readonly uri: "Uri";
1679
- readonly base64: "Base64";
1680
- };
1681
- export declare const primitiveFormatLabels: Record<PrimitiveFormat, string>;
1682
- export type EntityTypeName = string;
1683
- export interface ObjectFieldTypeDef {
1684
- name: string;
1685
- type: TypeRef;
1686
- cardinality: FieldCardinality;
1687
- presence: FieldPresence;
1688
- nullability: FieldNullability;
1689
- annotations: Record<string, AnnotationValue>;
1690
- }
1691
- export type JsonTypeKind = 'Any' | 'Object' | 'Array' | 'String' | 'Number' | 'Boolean';
1692
- export declare const jsonTypeKinds: {
1693
- readonly any: "Any";
1694
- readonly object: "Object";
1695
- readonly array: "Array";
1696
- readonly string: "String";
1697
- readonly number: "Number";
1698
- readonly boolean: "Boolean";
1699
- };
1700
- export declare const jsonTypeKindLabels: Record<JsonTypeKind, string>;
1701
2132
  export interface RelationQueryLogicalPlanInput {
1702
2133
  canonicalInput: QueryNodeId;
1703
2134
  effectiveInput: QueryNodeId;
@@ -1730,7 +2161,7 @@ export declare const relationQueryRealizationTraceStepKinds: {
1730
2161
  readonly terminal: "Terminal";
1731
2162
  };
1732
2163
  export declare const relationQueryRealizationTraceStepKindLabels: Record<RelationQueryRealizationTraceStepKind, string>;
1733
- export type RelationQueryExpressionSiteKind = 'FilterPredicate' | 'JoinPredicate' | 'ExpandCollection' | 'ProjectionAssignmentValue' | 'DistinctKey' | 'AggregateGroupingKey' | 'AggregateAssignmentValue' | 'AggregateAssignmentFilter' | 'OrderKey' | 'KeysetBoundary' | 'RelationOutputKey' | 'RelationInvariant' | 'TemporalJoinCorrelation' | 'TemporalJoinPoint' | 'TemporalJoinIntervalLowerBound' | 'TemporalJoinIntervalUpperBound';
2164
+ export type RelationQueryExpressionSiteKind = 'FilterPredicate' | 'JoinPredicate' | 'ExpandCollection' | 'ProjectionAssignmentValue' | 'DistinctKey' | 'AggregateGroupingKey' | 'AggregateAssignmentValue' | 'AggregateAssignmentFilter' | 'OrderKey' | 'KeysetBoundary' | 'RelationOutputKey' | 'RelationInvariant' | 'TemporalJoinCorrelation' | 'TemporalJoinPoint' | 'TemporalJoinIntervalLowerBound' | 'TemporalJoinIntervalUpperBound' | 'RepresentativeKey';
1734
2165
  export declare const relationQueryExpressionSiteKinds: {
1735
2166
  readonly filterPredicate: "FilterPredicate";
1736
2167
  readonly joinPredicate: "JoinPredicate";
@@ -1748,6 +2179,7 @@ export declare const relationQueryExpressionSiteKinds: {
1748
2179
  readonly temporalJoinPoint: "TemporalJoinPoint";
1749
2180
  readonly temporalJoinIntervalLowerBound: "TemporalJoinIntervalLowerBound";
1750
2181
  readonly temporalJoinIntervalUpperBound: "TemporalJoinIntervalUpperBound";
2182
+ readonly representativeKey: "RepresentativeKey";
1751
2183
  };
1752
2184
  export declare const relationQueryExpressionSiteKindLabels: Record<RelationQueryExpressionSiteKind, string>;
1753
2185
  export type ExprSiteId = string;
@@ -1780,18 +2212,6 @@ export declare const relationDraftUnresolvedReasons: {
1780
2212
  readonly multipleCandidates: "MultipleCandidates";
1781
2213
  };
1782
2214
  export declare const relationDraftUnresolvedReasonLabels: Record<RelationDraftUnresolvedReason, string>;
1783
- export type FieldCardinality = 'Single' | 'Many';
1784
- export declare const fieldCardinalities: {
1785
- readonly single: "Single";
1786
- readonly many: "Many";
1787
- };
1788
- export declare const fieldCardinalityLabels: Record<FieldCardinality, string>;
1789
- export type FieldNullability = 'NonNullable' | 'Nullable';
1790
- export declare const fieldNullabilities: {
1791
- readonly nonNullable: "NonNullable";
1792
- readonly nullable: "Nullable";
1793
- };
1794
- export declare const fieldNullabilityLabels: Record<FieldNullability, string>;
1795
2215
  export interface RelationQueryLogicalBypass {
1796
2216
  kind: RelationQueryLogicalBypassKind;
1797
2217
  node: QueryNodeId;
@@ -1845,10 +2265,32 @@ export declare const temporalNullBoundBehaviors: {
1845
2265
  readonly unbounded: "Unbounded";
1846
2266
  };
1847
2267
  export declare const temporalNullBoundBehaviorLabels: Record<TemporalNullBoundBehavior, string>;
2268
+ export interface GraphDelta {
2269
+ id: string;
2270
+ kind: GraphDeltaKind;
2271
+ sourceGraphId?: GraphId | null;
2272
+ targetGraphId?: GraphId | null;
2273
+ sourceVersion?: string | null;
2274
+ targetVersion?: string | null;
2275
+ operations: GraphDeltaOperation[];
2276
+ annotations: Record<string, AnnotationValue>;
2277
+ }
1848
2278
  export interface QualifiedShapeId {
1849
2279
  graphId: GraphId;
1850
2280
  shapeId: ShapeId;
1851
2281
  }
2282
+ export interface ShapeGraphDocument {
2283
+ schemaVersion: string;
2284
+ metadata: ShapeGraphDocumentMetadata;
2285
+ graph: ShapeGraph;
2286
+ }
2287
+ export interface ValueContract {
2288
+ type?: TypeRef | null;
2289
+ shape?: QualifiedShapeId | null;
2290
+ cardinality: FieldCardinality;
2291
+ presence: FieldPresence;
2292
+ nullability: FieldNullability;
2293
+ }
1852
2294
  export interface RelationQueryExplainArtifact {
1853
2295
  schemaVersion: string;
1854
2296
  stages: RelationQueryExplainStage[];