@cohesivesystems/relations 0.1.0-alpha.4 → 0.1.0-alpha.6

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,35 +1,1055 @@
1
1
  /* <auto-generated/> */
2
2
 
3
- export interface GraphId {
4
- Value: string;
3
+ export type GraphId = string;
4
+
5
+ export type ShapeId = string;
6
+
7
+ export type RelationQueryExplainStage = {
8
+ readonly $stage: 'staticCompilation';
9
+ } & RelationQueryStaticCompilationExplainStage | {
10
+ readonly $stage: 'profileFeasibility';
11
+ } & RelationQueryProfileFeasibilityExplainStage | {
12
+ readonly $stage: 'sourcePlacement';
13
+ } & RelationQuerySourcePlacementExplainStage | {
14
+ readonly $stage: 'boundRealization';
15
+ } & RelationQueryBoundRealizationExplainStage | {
16
+ readonly $stage: 'physicalPlanning';
17
+ } & RelationQueryPhysicalPlanningExplainStage | {
18
+ readonly $stage: 'nativeCompilation';
19
+ } & RelationQueryNativeCompilationExplainStage | {
20
+ readonly $stage: 'evaluation';
21
+ } & RelationQueryEvaluationExplainStage;
22
+
23
+ export interface RelationQueryStaticCompilationExplainStage {
24
+ status: RelationQueryExplainStageStatus;
25
+ request: RelationQueryCompilationRequestReference;
26
+ plan?: RelationQueryStaticPlanExplanation | null;
27
+ diagnostics: DocumentValidationDiagnostic[];
5
28
  }
6
29
 
7
- export interface ShapeId {
8
- Value: string;
30
+ export interface RelationQueryProfileFeasibilityExplainStage {
31
+ status: RelationQueryExplainStageStatus;
32
+ report: RelationQueryRealizationReport;
9
33
  }
10
34
 
11
- export interface RelationId {
12
- Value: string;
35
+ export interface RelationQuerySourcePlacementExplainStage {
36
+ status: RelationQueryExplainStageStatus;
37
+ placement: RelationQuerySourcePlacement;
13
38
  }
14
39
 
15
- export interface RelationName {
16
- Value: string;
40
+ export interface RelationQueryBoundRealizationExplainStage {
41
+ report: RelationQueryBoundRealizationReport;
42
+ status: RelationQueryExplainStageStatus;
17
43
  }
18
44
 
19
- export interface RelationSource {
20
- Alias: SourceAlias;
21
- ShapeId: ShapeId;
22
- Cardinality: SourceCardinality;
45
+ export interface RelationQueryPhysicalPlanningExplainStage {
46
+ status: RelationQueryExplainStageStatus;
47
+ plan: RelationQueryCompiledPlanReference;
48
+ realization: RelationQueryRealizationFingerprint;
49
+ placement: RelationQuerySourcePlacementFingerprint;
50
+ policy?: RelationQueryPhysicalPlanningPolicy | null;
51
+ result: RelationQueryPhysicalPlanningResult;
23
52
  }
24
53
 
25
- export interface JoinDefinition {
26
- Left: SourceAlias;
27
- Right: SourceAlias;
28
- Kind: JoinKind;
29
- On: Expr;
54
+ export interface RelationQueryNativeCompilationExplainStage {
55
+ status: RelationQueryExplainStageStatus;
56
+ attempt: RelationQueryNativeCompilationAttemptReference;
57
+ compilation: RelationQueryNativeCompilationExplanation;
30
58
  }
31
59
 
60
+ export interface RelationQueryEvaluationExplainStage {
61
+ evaluation: RelationQueryEvaluationExplanation;
62
+ status: RelationQueryExplainStageStatus;
63
+ }
64
+
65
+ export interface RelationQueryCapabilitySummary {
66
+ target: RelationQueryTargetId;
67
+ targetProfile: RelationQueryTargetProfileId;
68
+ policy?: RelationQueryRealizationPolicyId | null;
69
+ profileFeasibility?: RelationQueryRealizationFingerprint | null;
70
+ boundRealization?: RelationQueryBoundRealizationFingerprint | null;
71
+ operatingBoundaries: RelationQueryOperatingBoundaryId[];
72
+ entries: RelationQueryCapabilitySummaryEntry[];
73
+ }
74
+
75
+ export interface RelationQueryExplainDiagnostic {
76
+ stage: string;
77
+ code: string;
78
+ severity: DiagnosticSeverity;
79
+ message: string;
80
+ location?: string | null;
81
+ branch?: RelationQueryNativeResultBranchId | null;
82
+ requirement?: RelationQueryRealizationRequirementId | null;
83
+ node?: QueryNodeId | null;
84
+ input?: RelationQueryInputId | null;
85
+ output?: RelationQueryOutputId | null;
86
+ placementBinding?: RelationQuerySourcePlacementBindingId | null;
87
+ physicalStage?: RelationQueryPhysicalStageId | null;
88
+ source?: RelationQuerySourceInstanceId | null;
89
+ capabilityEvidence?: RelationQueryTargetCapabilityEvidenceId | null;
90
+ operatingBoundary?: RelationQueryOperatingBoundaryId | null;
91
+ contextEvidence?: RelationQueryContextEvidenceId | null;
92
+ semanticSite?: string | null;
93
+ compositionRule?: RelationQueryCompositionRuleId | null;
94
+ override?: RelationQueryRealizationOverrideId | null;
95
+ field?: FieldPath | null;
96
+ bindingSetting?: string | null;
97
+ resolution?: string | null;
98
+ configurationOrigin?: EffectiveConfigurationOrigin | null;
99
+ configurationAuthority?: string | null;
100
+ adapterDecisionCode?: RelationQueryAdapterDecisionCode | null;
101
+ }
102
+
103
+ export interface RelationQueryExplainFingerprint {
104
+ algorithm: string;
105
+ canonicalization: string;
106
+ value: string;
107
+ }
108
+
109
+ export interface RelationQueryCompiledPlanReference {
110
+ compilerProfile: string;
111
+ definitionSchemaVersion: string;
112
+ definitionFingerprint: RelationQueryDefinitionFingerprint;
113
+ shapeSnapshotsFingerprint: RelationQueryPlanComponentFingerprint;
114
+ relationshipCatalogFingerprint?: RelationshipCatalogFingerprint | null;
115
+ demandFingerprint: RelationQueryPlanComponentFingerprint;
116
+ inputs: RelationQueryInputId[];
117
+ }
118
+
119
+ export interface RelationQueryRealizationFingerprint {
120
+ algorithm: string;
121
+ canonicalization: string;
122
+ value: string;
123
+ }
124
+
125
+ export interface RelationQueryPhysicalPlanningPolicy {
126
+ id: RelationQueryPhysicalPlanningPolicyId;
127
+ conventionSetVersion: string;
128
+ maximumBatchSize: string;
129
+ maximumBufferedRows: string;
130
+ maximumLocalRows: string;
131
+ maximumFanOut: string;
132
+ maximumReferenceKeysPerObservation: string;
133
+ maximumConcurrency: string;
134
+ loweringSelections: RelationQueryPhysicalLoweringSelection[];
135
+ }
136
+
137
+ export interface RelationQueryPhysicalStage {
138
+ id: RelationQueryPhysicalStageId;
139
+ kind: RelationQueryPhysicalStageKind;
140
+ dependencies: RelationQueryPhysicalStageId[];
141
+ placementBinding?: RelationQuerySourcePlacementBindingId | null;
142
+ semanticInputs: RelationQueryInputId[];
143
+ requestedFields: RelationQueryInputId[];
144
+ batchSize?: string | null;
145
+ provenance: RelationQueryPhysicalStageProvenance;
146
+ }
147
+
148
+ export type RelationQueryPhysicalStageId = string;
149
+
150
+ export interface RelationQueryPhysicalPlanningDiagnostic {
151
+ code: string;
152
+ severity: DiagnosticSeverity;
153
+ message: string;
154
+ input?: RelationQueryInputId | null;
155
+ stage?: RelationQueryPhysicalStageId | null;
156
+ placementBinding?: RelationQuerySourcePlacementBindingId | null;
157
+ requirement?: RelationQueryRealizationRequirementId | null;
158
+ }
159
+
160
+ export interface RelationQueryPhysicalPlanFingerprint {
161
+ algorithm: string;
162
+ canonicalization: string;
163
+ value: string;
164
+ }
165
+
166
+ export interface RelationQuerySourceInstance {
167
+ id: RelationQuerySourceInstanceId;
168
+ executionDomain: RelationQueryExecutionDomainId;
169
+ targetProfile: RelationQueryTargetCapabilityProfile;
170
+ limits: RelationQuerySourcePlacementLimits;
171
+ }
172
+
173
+ export interface RelationQuerySourcePlacementBinding {
174
+ id: RelationQuerySourcePlacementBindingId;
175
+ input: RelationQueryInputId;
176
+ node: QueryNodeId;
177
+ binding: ValueBindingId;
178
+ shape: QualifiedShapeId;
179
+ source: RelationQuerySourceInstanceId;
180
+ kind: RelationQuerySourcePlacementBindingKind;
181
+ acquisition: RelationQuerySourceAcquisitionKind;
182
+ origin: RelationQuerySourcePlacementOrigin;
183
+ identity?: RelationQuerySourceIdentityBinding | null;
184
+ fields: RelationQuerySourceFieldBinding[];
185
+ relationshipKeys: RelationQueryRelationshipKeyBinding[];
186
+ partition?: RelationQueryPartitionBinding | null;
187
+ }
188
+
189
+ export interface EffectiveConfigurationDecision {
190
+ setting: string;
191
+ origin: EffectiveConfigurationOrigin;
192
+ authority: string;
193
+ }
194
+
195
+ export interface RelationQuerySourcePlacementFingerprint {
196
+ algorithm: string;
197
+ canonicalization: string;
198
+ value: string;
199
+ }
200
+
201
+ export type RelationQueryNativeResultBranchId = string;
202
+
203
+ export interface RelationQueryContextualEvidenceProjection {
204
+ binding: RelationQueryAdapterBindingReference;
205
+ assessments: RelationQueryBoundRequirementAssessment[];
206
+ }
207
+
208
+ export interface RelationQueryRealizationDiagnostic {
209
+ code: string;
210
+ severity: DiagnosticSeverity;
211
+ message: string;
212
+ requirement?: RelationQueryRealizationRequirementId | null;
213
+ capabilityEvidence?: RelationQueryTargetCapabilityEvidenceId | null;
214
+ compositionRule?: RelationQueryCompositionRuleId | null;
215
+ operatingBoundary?: RelationQueryOperatingBoundaryId | null;
216
+ override?: RelationQueryRealizationOverrideId | null;
217
+ node?: QueryNodeId | null;
218
+ semanticSite?: string | null;
219
+ contextEvidence?: RelationQueryContextEvidenceId | null;
220
+ branch?: RelationQueryNativeResultBranchId | null;
221
+ input?: RelationQueryInputId | null;
222
+ field?: FieldPath | null;
223
+ placementBinding?: RelationQuerySourcePlacementBindingId | null;
224
+ bindingSetting?: string | null;
225
+ resolution?: string | null;
226
+ configurationOrigin?: EffectiveConfigurationOrigin | null;
227
+ configurationAuthority?: string | null;
228
+ adapterDecisionCode?: RelationQueryAdapterDecisionCode | null;
229
+ }
230
+
231
+ export type RelationQueryRealizationStatus = 'Realizable' | 'NotRealizable' | 'Invalid';
232
+
233
+ export const relationQueryRealizationStatuses = {
234
+ realizable: 'Realizable',
235
+ notRealizable: 'NotRealizable',
236
+ invalid: 'Invalid',
237
+ } as const satisfies Record<string, RelationQueryRealizationStatus>;
238
+
239
+ export const relationQueryRealizationStatusLabels: Record<RelationQueryRealizationStatus, string> = {
240
+ Realizable: 'Realizable',
241
+ NotRealizable: 'NotRealizable',
242
+ Invalid: 'Invalid',
243
+ };
244
+
245
+ export interface RelationQueryBoundRealizationFingerprint {
246
+ algorithm: string;
247
+ canonicalization: string;
248
+ value: string;
249
+ }
250
+
251
+ export interface RelationQueryRealizationPolicy {
252
+ id: RelationQueryRealizationPolicyId;
253
+ conventionSetVersion: string;
254
+ preference: RelationQueryRealizationPreference;
255
+ constrainedRealizations: RelationQueryConstrainedRealizationPolicy;
256
+ compositionRules: RelationQueryCompositionRule[];
257
+ compositionRuleSelections: RelationQueryCompositionRuleSelection[];
258
+ overrides: RelationQueryRealizationOverride[];
259
+ diagnosticSeverityOverrides: RelationQueryRealizationDiagnosticSeverityOverride[];
260
+ }
261
+
262
+ export interface RelationQueryResultObservability {
263
+ occurrenceProvenance: RelationQueryOccurrenceProvenanceMode;
264
+ }
265
+
266
+ export interface RelationQueryRealizationRequirement {
267
+ id: RelationQueryRealizationRequirementId;
268
+ capability: RelationQueryCapability;
269
+ origin?: RelationQueryRealizationRequirementOrigin | null;
270
+ uses: RelationQueryRealizationRequirementUse[];
271
+ requiredGuarantees: RelationQueryGuaranteeCapabilityKind[];
272
+ staticFacts: RelationQueryRealizationStaticFact[];
273
+ }
274
+
275
+ export type RelationQueryRealizationDecision = {
276
+ readonly $decision: 'native';
277
+ } & NativeRelationQueryRealizationDecision | {
278
+ readonly $decision: 'composed';
279
+ } & ComposedRelationQueryRealizationDecision | {
280
+ readonly $decision: 'constrained';
281
+ } & ConstrainedRelationQueryRealizationDecision | {
282
+ readonly $decision: 'override';
283
+ } & OverrideRelationQueryRealizationDecision | {
284
+ readonly $decision: 'unavailable';
285
+ } & UnavailableRelationQueryRealizationDecision;
286
+
287
+ export interface NativeRelationQueryRealizationDecision {
288
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
289
+ preservedGuarantees: RelationQueryGuaranteeCapabilityKind[];
290
+ requirement: RelationQueryRealizationRequirementId;
291
+ }
292
+
293
+ export interface ComposedRelationQueryRealizationDecision {
294
+ compositionRules: RelationQueryCompositionRuleId[];
295
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
296
+ preservedGuarantees: RelationQueryGuaranteeCapabilityKind[];
297
+ requirement: RelationQueryRealizationRequirementId;
298
+ }
299
+
300
+ export interface ConstrainedRelationQueryRealizationDecision {
301
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
302
+ boundaryValidations: RelationQueryOperatingBoundaryValidation[];
303
+ compositionRules: RelationQueryCompositionRuleId[];
304
+ preservedGuarantees: RelationQueryGuaranteeCapabilityKind[];
305
+ requirement: RelationQueryRealizationRequirementId;
306
+ }
307
+
308
+ export interface OverrideRelationQueryRealizationDecision {
309
+ override: RelationQueryRealizationOverrideId;
310
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
311
+ boundaryValidations: RelationQueryOperatingBoundaryValidation[];
312
+ preservedGuarantees: RelationQueryGuaranteeCapabilityKind[];
313
+ requirement: RelationQueryRealizationRequirementId;
314
+ }
315
+
316
+ export interface UnavailableRelationQueryRealizationDecision {
317
+ requirement: RelationQueryRealizationRequirementId;
318
+ reason: RelationQueryUnavailableReason;
319
+ missingCapabilities: RelationQueryCapability[];
320
+ }
321
+
322
+ export type RelationQueryTargetId = string;
323
+
324
+ export type RelationQueryTargetProfileId = string;
325
+
326
+ export interface RelationQueryTargetCapabilityEvidence {
327
+ id: RelationQueryTargetCapabilityEvidenceId;
328
+ capability: RelationQueryCapability;
329
+ operatingBoundaries: RelationQueryOperatingBoundaryId[];
330
+ description?: string | null;
331
+ }
332
+
333
+ export interface RelationQueryOperatingBoundary {
334
+ id: RelationQueryOperatingBoundaryId;
335
+ kind: RelationQueryOperatingBoundaryKind | number;
336
+ limit?: string | null;
337
+ description?: string | null;
338
+ }
339
+
340
+ export interface RelationDraft {
341
+ id: RelationDraftId;
342
+ relationId: RelationId;
343
+ name: RelationName;
344
+ input: LogicalQueryDefinition;
345
+ rootBinding: ValueBindingId;
346
+ projection: RelationDraftProjection;
347
+ outputMode: RelationOutputMode;
348
+ outputKey?: Expr | null;
349
+ invariants: InvariantDefinition[];
350
+ }
351
+
352
+ export interface RelationDraftFingerprint {
353
+ algorithm: string;
354
+ canonicalization: string;
355
+ value: string;
356
+ }
357
+
358
+ export interface RelationDraftDocumentMetadata {
359
+ origin: DocumentOrigin;
360
+ name?: string | null;
361
+ description?: string | null;
362
+ sourceUri?: string | null;
363
+ producer?: string | null;
364
+ producerVersion?: string | null;
365
+ createdAtUtc?: string | null;
366
+ updatedAtUtc?: string | null;
367
+ annotations: Record<string, AnnotationValue>;
368
+ producerArtifacts: RelationDraftProducerArtifactReference[];
369
+ conventionDecisions: RelationDraftConventionDecision[];
370
+ }
371
+
372
+ export type RelationQueryDefinition = {
373
+ readonly $definition: 'relation';
374
+ } & RelationDefinition | {
375
+ readonly $definition: 'query';
376
+ } & QueryDefinition;
377
+
378
+ export interface RelationDefinition {
379
+ id: RelationId;
380
+ name: RelationName;
381
+ rootBinding: ValueBindingId;
382
+ output: RelationOutputDefinition;
383
+ invariants: InvariantDefinition[];
384
+ body: LogicalQueryDefinition;
385
+ }
386
+
387
+ export interface QueryDefinition {
388
+ id: QueryId;
389
+ name: QueryName;
390
+ results: QueryResultDefinition[];
391
+ body: LogicalQueryDefinition;
392
+ }
393
+
394
+ export interface RelationQueryDefinitionFingerprint {
395
+ algorithm: string;
396
+ canonicalization: string;
397
+ value: string;
398
+ }
399
+
400
+ export interface RelationQueryDocumentMetadata {
401
+ origin: DocumentOrigin;
402
+ name?: string | null;
403
+ description?: string | null;
404
+ sourceUri?: string | null;
405
+ producer?: string | null;
406
+ producerVersion?: string | null;
407
+ createdAtUtc?: string | null;
408
+ updatedAtUtc?: string | null;
409
+ annotations: Record<string, AnnotationValue>;
410
+ }
411
+
412
+ export interface RelationshipCatalog {
413
+ relationships: RelationshipDefinition[];
414
+ }
415
+
416
+ export interface RelationshipCatalogFingerprint {
417
+ algorithm: string;
418
+ canonicalization: string;
419
+ value: string;
420
+ }
421
+
422
+ export interface RelationshipCatalogDocumentMetadata {
423
+ origin: DocumentOrigin;
424
+ name?: string | null;
425
+ description?: string | null;
426
+ sourceUri?: string | null;
427
+ producer?: string | null;
428
+ producerVersion?: string | null;
429
+ createdAtUtc?: string | null;
430
+ updatedAtUtc?: string | null;
431
+ annotations: Record<string, AnnotationValue>;
432
+ }
433
+
434
+ export type RelationQueryExplainStageStatus = 'Complete' | 'Unavailable' | 'Invalid' | 'Incomplete' | 'Failed';
435
+
436
+ export const relationQueryExplainStageStatuses = {
437
+ complete: 'Complete',
438
+ unavailable: 'Unavailable',
439
+ invalid: 'Invalid',
440
+ incomplete: 'Incomplete',
441
+ failed: 'Failed',
442
+ } as const satisfies Record<string, RelationQueryExplainStageStatus>;
443
+
444
+ export const relationQueryExplainStageStatusLabels: Record<RelationQueryExplainStageStatus, string> = {
445
+ Complete: 'Complete',
446
+ Unavailable: 'Unavailable',
447
+ Invalid: 'Invalid',
448
+ Incomplete: 'Incomplete',
449
+ Failed: 'Failed',
450
+ };
451
+
452
+ export interface RelationQueryCompilationRequestReference {
453
+ compilerProfile: string;
454
+ definitionSchemaVersion: string;
455
+ definitionFingerprint: RelationQueryDefinitionFingerprint;
456
+ shapeSnapshotsFingerprint: RelationQueryPlanComponentFingerprint;
457
+ relationshipCatalogFingerprint?: RelationshipCatalogFingerprint | null;
458
+ demandFingerprint: RelationQueryPlanComponentFingerprint;
459
+ }
460
+
461
+ export interface RelationQueryStaticPlanExplanation {
462
+ reference: RelationQueryCompiledPlanReference;
463
+ logicalPlan: RelationQueryLogicalPlan;
464
+ requirementGraph: RelationQueryExplainRequirementGraph;
465
+ branches: RelationQueryNativeResultBranch[];
466
+ observability: RelationQueryResultObservability;
467
+ realizationRequirements: RelationQueryRealizationRequirement[];
468
+ realizationRequirementsFingerprint: RelationQueryPlanComponentFingerprint;
469
+ }
470
+
471
+ export interface DocumentValidationDiagnostic {
472
+ code: string;
473
+ severity: DiagnosticSeverity;
474
+ message: string;
475
+ location?: string | null;
476
+ schemaLocation?: string | null;
477
+ evidence?: DocumentDiagnosticEvidence | null;
478
+ }
479
+
480
+ export interface RelationQueryPhysicalPlanningResult {
481
+ status: RelationQueryPhysicalPlanningStatus;
482
+ plan?: CompiledRelationQueryPhysicalPlan | null;
483
+ diagnostics: RelationQueryPhysicalPlanningDiagnostic[];
484
+ }
485
+
486
+ export interface RelationQueryNativeCompilationAttemptReference {
487
+ plan: RelationQueryCompiledPlanReference;
488
+ profileFeasibility: RelationQueryRealizationFingerprint;
489
+ boundRealization: RelationQueryBoundRealizationFingerprint;
490
+ placement: RelationQuerySourcePlacementFingerprint;
491
+ adapterBinding: RelationQueryAdapterBindingReference;
492
+ branches: RelationQueryNativeResultBranchId[];
493
+ }
494
+
495
+ export interface RelationQueryNativeCompilationExplanation {
496
+ status: RelationQueryNativeCompilationStatus;
497
+ artifacts: RelationQueryNativeArtifactReference[];
498
+ diagnostics: RelationQueryNativeCompilationDiagnostic[];
499
+ }
500
+
501
+ export interface RelationQueryEvaluationExplanation {
502
+ evaluation: RelationQueryEvaluationFingerprint;
503
+ plan?: RelationQueryCompiledPlanReference | null;
504
+ status: RelationQueryExecutionStatus;
505
+ results: RelationQueryExplainResultSummary[];
506
+ requirementGaps: RelationQueryExplainRequirementGapSummary[];
507
+ diagnostics: RelationQueryExplainDiagnostic[];
508
+ observationFingerprint: RelationQueryEvaluationObservationFingerprint;
509
+ }
510
+
511
+ export type RelationQueryRealizationPolicyId = string;
512
+
513
+ export type RelationQueryOperatingBoundaryId = string;
514
+
515
+ export interface RelationQueryCapabilitySummaryEntry {
516
+ capability: RelationQueryCapability;
517
+ requirements: RelationQueryRealizationRequirementId[];
518
+ missingForRequirements: RelationQueryRealizationRequirementId[];
519
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
520
+ operatingBoundaries: RelationQueryOperatingBoundaryId[];
521
+ contextEvidence: RelationQueryContextEvidenceId[];
522
+ }
523
+
524
+ export type DiagnosticSeverity = 'Info' | 'Warning' | 'Error';
525
+
526
+ export const diagnosticSeverities = {
527
+ info: 'Info',
528
+ warning: 'Warning',
529
+ error: 'Error',
530
+ } as const satisfies Record<string, DiagnosticSeverity>;
531
+
532
+ export const diagnosticSeverityLabels: Record<DiagnosticSeverity, string> = {
533
+ Info: 'Info',
534
+ Warning: 'Warning',
535
+ Error: 'Error',
536
+ };
537
+
538
+ export type RelationQueryRealizationRequirementId = string;
539
+
540
+ export type QueryNodeId = string;
541
+
542
+ export type RelationQueryInputId = string;
543
+
544
+ export type RelationQueryOutputId = string;
545
+
546
+ export type RelationQuerySourcePlacementBindingId = string;
547
+
548
+ export type RelationQuerySourceInstanceId = string;
549
+
550
+ export type RelationQueryTargetCapabilityEvidenceId = string;
551
+
552
+ export type RelationQueryContextEvidenceId = string;
553
+
554
+ export type RelationQueryCompositionRuleId = string;
555
+
556
+ export type RelationQueryRealizationOverrideId = string;
557
+
558
+ export interface FieldPath {
559
+ segments: FieldPathSegment[];
560
+ }
561
+
562
+ export type EffectiveConfigurationOrigin = 'Explicit' | 'ScopedProfile' | 'AdapterConvention' | 'FrameworkDefault';
563
+
564
+ export const effectiveConfigurationOrigins = {
565
+ explicit: 'Explicit',
566
+ scopedProfile: 'ScopedProfile',
567
+ adapterConvention: 'AdapterConvention',
568
+ frameworkDefault: 'FrameworkDefault',
569
+ } as const satisfies Record<string, EffectiveConfigurationOrigin>;
570
+
571
+ export const effectiveConfigurationOriginLabels: Record<EffectiveConfigurationOrigin, string> = {
572
+ Explicit: 'Explicit',
573
+ ScopedProfile: 'ScopedProfile',
574
+ AdapterConvention: 'AdapterConvention',
575
+ FrameworkDefault: 'FrameworkDefault',
576
+ };
577
+
578
+ export type RelationQueryAdapterDecisionCode = string;
579
+
580
+ export interface RelationQueryPlanComponentFingerprint {
581
+ algorithm: string;
582
+ canonicalization: string;
583
+ value: string;
584
+ }
585
+
586
+ export type RelationQueryPhysicalPlanningPolicyId = string;
587
+
588
+ export interface RelationQueryPhysicalLoweringSelection {
589
+ compositionRule: RelationQueryCompositionRuleId;
590
+ physicalLowering: RelationQueryPhysicalLoweringRuleId;
591
+ }
592
+
593
+ export type RelationQueryPhysicalStageKind = 'SuppliedInput' | 'SourceRead' | 'ExactFieldProjection' | 'RelationshipKeyExtraction' | 'KeyDeduplication' | 'BatchedIdentityLookup' | 'BatchedPredicateLookup' | 'LocalCorrelation' | 'RuntimeEvidenceAssembly' | 'ReferenceInterpreterTerminal';
594
+
595
+ export const relationQueryPhysicalStageKinds = {
596
+ suppliedInput: 'SuppliedInput',
597
+ sourceRead: 'SourceRead',
598
+ exactFieldProjection: 'ExactFieldProjection',
599
+ relationshipKeyExtraction: 'RelationshipKeyExtraction',
600
+ keyDeduplication: 'KeyDeduplication',
601
+ batchedIdentityLookup: 'BatchedIdentityLookup',
602
+ batchedPredicateLookup: 'BatchedPredicateLookup',
603
+ localCorrelation: 'LocalCorrelation',
604
+ runtimeEvidenceAssembly: 'RuntimeEvidenceAssembly',
605
+ referenceInterpreterTerminal: 'ReferenceInterpreterTerminal',
606
+ } as const satisfies Record<string, RelationQueryPhysicalStageKind>;
607
+
608
+ export const relationQueryPhysicalStageKindLabels: Record<RelationQueryPhysicalStageKind, string> = {
609
+ SuppliedInput: 'SuppliedInput',
610
+ SourceRead: 'SourceRead',
611
+ ExactFieldProjection: 'ExactFieldProjection',
612
+ RelationshipKeyExtraction: 'RelationshipKeyExtraction',
613
+ KeyDeduplication: 'KeyDeduplication',
614
+ BatchedIdentityLookup: 'BatchedIdentityLookup',
615
+ BatchedPredicateLookup: 'BatchedPredicateLookup',
616
+ LocalCorrelation: 'LocalCorrelation',
617
+ RuntimeEvidenceAssembly: 'RuntimeEvidenceAssembly',
618
+ ReferenceInterpreterTerminal: 'ReferenceInterpreterTerminal',
619
+ };
620
+
621
+ export interface RelationQueryPhysicalStageProvenance {
622
+ nodes: QueryNodeId[];
623
+ inputs: RelationQueryInputId[];
624
+ requirements: RelationQueryRealizationRequirementId[];
625
+ capabilityEvidence: RelationQueryPhysicalCapabilityEvidenceReference[];
626
+ compositionRules: RelationQueryCompositionRuleId[];
627
+ operatingBoundaries: RelationQueryOperatingBoundaryId[];
628
+ placementBindings: RelationQuerySourcePlacementBindingId[];
629
+ loweringRule?: RelationQueryPhysicalLoweringRuleId | null;
630
+ policyDecisions: RelationQueryPhysicalPlanningDecisionId[];
631
+ }
632
+
633
+ export type RelationQueryExecutionDomainId = string;
634
+
635
+ export interface RelationQuerySourcePlacementLimits {
636
+ maximumBatchSize: string;
637
+ maximumBufferedRows: string;
638
+ maximumFanOut: string;
639
+ maximumConcurrency: string;
640
+ }
641
+
642
+ export type ValueBindingId = string;
643
+
644
+ export type RelationQuerySourcePlacementBindingKind = 'SourceSet' | 'RelationshipTraversal';
645
+
646
+ export const relationQuerySourcePlacementBindingKinds = {
647
+ sourceSet: 'SourceSet',
648
+ relationshipTraversal: 'RelationshipTraversal',
649
+ } as const satisfies Record<string, RelationQuerySourcePlacementBindingKind>;
650
+
651
+ export const relationQuerySourcePlacementBindingKindLabels: Record<RelationQuerySourcePlacementBindingKind, string> = {
652
+ SourceSet: 'SourceSet',
653
+ RelationshipTraversal: 'RelationshipTraversal',
654
+ };
655
+
656
+ export type RelationQuerySourceAcquisitionKind = 'Supplied' | 'BoundedEnumeration' | 'BoundedLookup';
657
+
658
+ export const relationQuerySourceAcquisitionKinds = {
659
+ supplied: 'Supplied',
660
+ boundedEnumeration: 'BoundedEnumeration',
661
+ boundedLookup: 'BoundedLookup',
662
+ } as const satisfies Record<string, RelationQuerySourceAcquisitionKind>;
663
+
664
+ export const relationQuerySourceAcquisitionKindLabels: Record<RelationQuerySourceAcquisitionKind, string> = {
665
+ Supplied: 'Supplied',
666
+ BoundedEnumeration: 'BoundedEnumeration',
667
+ BoundedLookup: 'BoundedLookup',
668
+ };
669
+
670
+ export type RelationQuerySourcePlacementOrigin = 'Explicit' | 'Convention';
671
+
672
+ export const relationQuerySourcePlacementOrigins = {
673
+ explicit: 'Explicit',
674
+ convention: 'Convention',
675
+ } as const satisfies Record<string, RelationQuerySourcePlacementOrigin>;
676
+
677
+ export const relationQuerySourcePlacementOriginLabels: Record<RelationQuerySourcePlacementOrigin, string> = {
678
+ Explicit: 'Explicit',
679
+ Convention: 'Convention',
680
+ };
681
+
682
+ export interface RelationQuerySourceIdentityBinding {
683
+ shape: QualifiedShapeId;
684
+ sourceSelector: string;
685
+ semanticPath?: FieldPath | null;
686
+ }
687
+
688
+ export interface RelationQuerySourceFieldBinding {
689
+ input: RelationQueryInputId;
690
+ semanticPath: FieldPath;
691
+ sourceSelector: string;
692
+ }
693
+
694
+ export interface RelationQueryRelationshipKeyBinding {
695
+ input: RelationQueryInputId;
696
+ semanticPath: FieldPath;
697
+ sourceSelector: string;
698
+ }
699
+
700
+ export interface RelationQueryPartitionBinding {
701
+ sourceSelector: string;
702
+ }
703
+
704
+ export interface RelationQueryAdapterBindingReference {
705
+ schemaVersion: string;
706
+ bindingId: string;
707
+ target: RelationQueryTargetId;
708
+ targetProfile: RelationQueryTargetProfileId;
709
+ fingerprint: RelationQueryAdapterBindingFingerprint;
710
+ compiledPlanFingerprint?: RelationQueryPlanComponentFingerprint | null;
711
+ placementFingerprint?: RelationQuerySourcePlacementFingerprint | null;
712
+ sources: RelationQuerySourceInstanceId[];
713
+ placementBindings: RelationQuerySourcePlacementBindingId[];
714
+ configurationDecisions: EffectiveConfigurationDecision[];
715
+ }
716
+
717
+ export interface RelationQueryBoundRequirementAssessment {
718
+ id: RelationQueryContextEvidenceId;
719
+ branch: RelationQueryNativeResultBranchId;
720
+ requirement: RelationQueryRealizationRequirementId;
721
+ status: RelationQueryBoundAssessmentStatus;
722
+ origin: EffectiveConfigurationOrigin;
723
+ authority: string;
724
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
725
+ operatingBoundaries: RelationQueryOperatingBoundaryId[];
726
+ preservedGuarantees: RelationQueryGuaranteeCapabilityKind[];
727
+ unavailableReason?: RelationQueryUnavailableReason | null;
728
+ node?: QueryNodeId | null;
729
+ input?: RelationQueryInputId | null;
730
+ field?: FieldPath | null;
731
+ placementBinding?: RelationQuerySourcePlacementBindingId | null;
732
+ configurationSetting?: string | null;
733
+ message: string;
734
+ resolution?: string | null;
735
+ adapterDecisionCode?: RelationQueryAdapterDecisionCode | null;
736
+ missingCapabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
737
+ failedOperatingBoundary?: RelationQueryOperatingBoundaryId | null;
738
+ failedConfigurationSetting?: string | null;
739
+ blockedBy?: RelationQueryContextEvidenceId | null;
740
+ }
741
+
742
+ export type RelationQueryRealizationPreference = 'PreferNative' | 'PreferComposed';
743
+
744
+ export const relationQueryRealizationPreferences = {
745
+ preferNative: 'PreferNative',
746
+ preferComposed: 'PreferComposed',
747
+ } as const satisfies Record<string, RelationQueryRealizationPreference>;
748
+
749
+ export const relationQueryRealizationPreferenceLabels: Record<RelationQueryRealizationPreference, string> = {
750
+ PreferNative: 'PreferNative',
751
+ PreferComposed: 'PreferComposed',
752
+ };
753
+
754
+ export type RelationQueryConstrainedRealizationPolicy = 'Reject' | 'AllowValidated';
755
+
756
+ export const relationQueryConstrainedRealizationPolicies = {
757
+ reject: 'Reject',
758
+ allowValidated: 'AllowValidated',
759
+ } as const satisfies Record<string, RelationQueryConstrainedRealizationPolicy>;
760
+
761
+ export const relationQueryConstrainedRealizationPolicyLabels: Record<RelationQueryConstrainedRealizationPolicy, string> = {
762
+ Reject: 'Reject',
763
+ AllowValidated: 'AllowValidated',
764
+ };
765
+
766
+ export interface RelationQueryCompositionRule {
767
+ id: RelationQueryCompositionRuleId;
768
+ providedCapability: RelationQueryCapability;
769
+ requiredCapabilities: RelationQueryCapability[];
770
+ requiredOperatingBoundaries: RelationQueryOperatingBoundaryId[];
771
+ preservedGuarantees: RelationQueryGuaranteeCapabilityKind[];
772
+ description?: string | null;
773
+ }
774
+
775
+ export interface RelationQueryCompositionRuleSelection {
776
+ capability: RelationQueryCapability;
777
+ rule: RelationQueryCompositionRuleId;
778
+ }
779
+
780
+ export interface RelationQueryRealizationOverride {
781
+ id: RelationQueryRealizationOverrideId;
782
+ requirement: RelationQueryRealizationRequirementId;
783
+ expectedCapability: RelationQueryCapability;
784
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
785
+ operatingBoundaries: RelationQueryOperatingBoundaryId[];
786
+ preservedGuarantees: RelationQueryGuaranteeCapabilityKind[];
787
+ justification: string;
788
+ }
789
+
790
+ export interface RelationQueryRealizationDiagnosticSeverityOverride {
791
+ code: string;
792
+ severity: DiagnosticSeverity;
793
+ }
794
+
795
+ export type RelationQueryOccurrenceProvenanceMode = 'ExactContributors' | 'NotRequested';
796
+
797
+ export const relationQueryOccurrenceProvenanceModes = {
798
+ exactContributors: 'ExactContributors',
799
+ notRequested: 'NotRequested',
800
+ } as const satisfies Record<string, RelationQueryOccurrenceProvenanceMode>;
801
+
802
+ export const relationQueryOccurrenceProvenanceModeLabels: Record<RelationQueryOccurrenceProvenanceMode, string> = {
803
+ ExactContributors: 'ExactContributors',
804
+ NotRequested: 'NotRequested',
805
+ };
806
+
807
+ export type RelationQueryCapability = {
808
+ readonly $capability: 'logical';
809
+ } & LogicalRelationQueryCapability | {
810
+ readonly $capability: 'expression';
811
+ } & ExpressionRelationQueryCapability | {
812
+ readonly $capability: 'temporal';
813
+ } & TemporalRelationQueryCapability | {
814
+ readonly $capability: 'structural';
815
+ } & StructuralRelationQueryCapability | {
816
+ readonly $capability: 'guarantee';
817
+ } & GuaranteeRelationQueryCapability | {
818
+ readonly $capability: 'operatingBoundaryValidation';
819
+ } & OperatingBoundaryValidationRelationQueryCapability | {
820
+ readonly $capability: 'primitive';
821
+ } & PrimitiveRelationQueryCapability;
822
+
823
+ export interface LogicalRelationQueryCapability {
824
+ kind: RelationQueryLogicalCapabilityKind | number;
825
+ }
826
+
827
+ export interface ExpressionRelationQueryCapability {
828
+ capability: ExprCapabilityId;
829
+ requirementKind: ExprCapabilityRequirementKind | number;
830
+ }
831
+
832
+ export interface TemporalRelationQueryCapability {
833
+ capability: RelationQueryTemporalExecutionCapability | number;
834
+ }
835
+
836
+ export interface StructuralRelationQueryCapability {
837
+ role: RelationQueryStructuralCapabilityRole | number;
838
+ pathKind: RelationQueryStructuralPathKind | number;
839
+ }
840
+
841
+ export interface GuaranteeRelationQueryCapability {
842
+ kind: RelationQueryGuaranteeCapabilityKind | number;
843
+ }
844
+
845
+ export interface OperatingBoundaryValidationRelationQueryCapability {
846
+ boundary: RelationQueryOperatingBoundaryId;
847
+ }
848
+
849
+ export interface PrimitiveRelationQueryCapability {
850
+ kind: RelationQueryPrimitiveCapabilityKind | number;
851
+ }
852
+
853
+ export interface RelationQueryRealizationRequirementOrigin {
854
+ input?: RelationQueryInputId | null;
855
+ node?: QueryNodeId | null;
856
+ semanticSite?: string | null;
857
+ expressionPath?: string | null;
858
+ fieldPath?: FieldPath | null;
859
+ binding?: ValueBindingId | null;
860
+ }
861
+
862
+ export interface RelationQueryRealizationRequirementUse {
863
+ output: RelationQueryRealizationOutputReference;
864
+ effect: RelationQueryRequirementEffect;
865
+ requirement: QueryInputRequirement;
866
+ traces: RelationQueryRealizationTrace[];
867
+ }
868
+
869
+ export type RelationQueryGuaranteeCapabilityKind = 'MissingNullDistinction' | 'AbsenceAvailabilityFailureDistinction' | 'JoinMembership' | 'Cardinality' | 'RelationshipDirection' | 'RelationshipMultiplicity' | 'TemporalDomain' | 'TemporalBoundary' | 'UnboundedTemporalBoundary' | 'Ordering' | 'NullPlacement' | 'StablePaging' | 'Grouping' | 'Aggregation' | 'DuplicateHandling' | 'OutputIdentity' | 'OutputMode' | 'InvariantEnforcement' | 'DeterministicResult' | 'OccurrenceProvenance' | 'EvidenceCompleteness' | 'InconclusiveEvidence' | 'ConsistentSnapshot' | 'CollectionElementCorrelation' | 'RelationRootCorrelation';
870
+
871
+ export const relationQueryGuaranteeCapabilityKinds = {
872
+ missingNullDistinction: 'MissingNullDistinction',
873
+ absenceAvailabilityFailureDistinction: 'AbsenceAvailabilityFailureDistinction',
874
+ joinMembership: 'JoinMembership',
875
+ cardinality: 'Cardinality',
876
+ relationshipDirection: 'RelationshipDirection',
877
+ relationshipMultiplicity: 'RelationshipMultiplicity',
878
+ temporalDomain: 'TemporalDomain',
879
+ temporalBoundary: 'TemporalBoundary',
880
+ unboundedTemporalBoundary: 'UnboundedTemporalBoundary',
881
+ ordering: 'Ordering',
882
+ nullPlacement: 'NullPlacement',
883
+ stablePaging: 'StablePaging',
884
+ grouping: 'Grouping',
885
+ aggregation: 'Aggregation',
886
+ duplicateHandling: 'DuplicateHandling',
887
+ outputIdentity: 'OutputIdentity',
888
+ outputMode: 'OutputMode',
889
+ invariantEnforcement: 'InvariantEnforcement',
890
+ deterministicResult: 'DeterministicResult',
891
+ occurrenceProvenance: 'OccurrenceProvenance',
892
+ evidenceCompleteness: 'EvidenceCompleteness',
893
+ inconclusiveEvidence: 'InconclusiveEvidence',
894
+ consistentSnapshot: 'ConsistentSnapshot',
895
+ collectionElementCorrelation: 'CollectionElementCorrelation',
896
+ relationRootCorrelation: 'RelationRootCorrelation',
897
+ } as const satisfies Record<string, RelationQueryGuaranteeCapabilityKind>;
898
+
899
+ export const relationQueryGuaranteeCapabilityKindLabels: Record<RelationQueryGuaranteeCapabilityKind, string> = {
900
+ MissingNullDistinction: 'MissingNullDistinction',
901
+ AbsenceAvailabilityFailureDistinction: 'AbsenceAvailabilityFailureDistinction',
902
+ JoinMembership: 'JoinMembership',
903
+ Cardinality: 'Cardinality',
904
+ RelationshipDirection: 'RelationshipDirection',
905
+ RelationshipMultiplicity: 'RelationshipMultiplicity',
906
+ TemporalDomain: 'TemporalDomain',
907
+ TemporalBoundary: 'TemporalBoundary',
908
+ UnboundedTemporalBoundary: 'UnboundedTemporalBoundary',
909
+ Ordering: 'Ordering',
910
+ NullPlacement: 'NullPlacement',
911
+ StablePaging: 'StablePaging',
912
+ Grouping: 'Grouping',
913
+ Aggregation: 'Aggregation',
914
+ DuplicateHandling: 'DuplicateHandling',
915
+ OutputIdentity: 'OutputIdentity',
916
+ OutputMode: 'OutputMode',
917
+ InvariantEnforcement: 'InvariantEnforcement',
918
+ DeterministicResult: 'DeterministicResult',
919
+ OccurrenceProvenance: 'OccurrenceProvenance',
920
+ EvidenceCompleteness: 'EvidenceCompleteness',
921
+ InconclusiveEvidence: 'InconclusiveEvidence',
922
+ ConsistentSnapshot: 'ConsistentSnapshot',
923
+ CollectionElementCorrelation: 'CollectionElementCorrelation',
924
+ RelationRootCorrelation: 'RelationRootCorrelation',
925
+ };
926
+
927
+ export interface RelationQueryRealizationStaticFact {
928
+ kind: RelationQueryRealizationStaticFactKind;
929
+ value: string;
930
+ }
931
+
932
+ export interface RelationQueryOperatingBoundaryValidation {
933
+ boundary: RelationQueryOperatingBoundaryId;
934
+ kind: RelationQueryOperatingBoundaryValidationKind;
935
+ capabilityEvidence?: RelationQueryTargetCapabilityEvidenceId | null;
936
+ measuredValue?: string | null;
937
+ }
938
+
939
+ export type RelationQueryUnavailableReason = 'CapabilityNotAdvertised' | 'ProfileVersionUnsupported' | 'OperatingBoundaryMissing' | 'OperatingBoundaryInvalid' | 'CompositionUnavailable' | 'AmbiguousStrategy' | 'CapabilityEvidenceInvalid' | 'OverrideInvalid' | 'PolicyRejected' | 'PrerequisiteBlocked';
940
+
941
+ export const relationQueryUnavailableReasons = {
942
+ capabilityNotAdvertised: 'CapabilityNotAdvertised',
943
+ profileVersionUnsupported: 'ProfileVersionUnsupported',
944
+ operatingBoundaryMissing: 'OperatingBoundaryMissing',
945
+ operatingBoundaryInvalid: 'OperatingBoundaryInvalid',
946
+ compositionUnavailable: 'CompositionUnavailable',
947
+ ambiguousStrategy: 'AmbiguousStrategy',
948
+ capabilityEvidenceInvalid: 'CapabilityEvidenceInvalid',
949
+ overrideInvalid: 'OverrideInvalid',
950
+ policyRejected: 'PolicyRejected',
951
+ prerequisiteBlocked: 'PrerequisiteBlocked',
952
+ } as const satisfies Record<string, RelationQueryUnavailableReason>;
953
+
954
+ export const relationQueryUnavailableReasonLabels: Record<RelationQueryUnavailableReason, string> = {
955
+ CapabilityNotAdvertised: 'CapabilityNotAdvertised',
956
+ ProfileVersionUnsupported: 'ProfileVersionUnsupported',
957
+ OperatingBoundaryMissing: 'OperatingBoundaryMissing',
958
+ OperatingBoundaryInvalid: 'OperatingBoundaryInvalid',
959
+ CompositionUnavailable: 'CompositionUnavailable',
960
+ AmbiguousStrategy: 'AmbiguousStrategy',
961
+ CapabilityEvidenceInvalid: 'CapabilityEvidenceInvalid',
962
+ OverrideInvalid: 'OverrideInvalid',
963
+ PolicyRejected: 'PolicyRejected',
964
+ PrerequisiteBlocked: 'PrerequisiteBlocked',
965
+ };
966
+
967
+ export type RelationQueryOperatingBoundaryKind = 'MaximumInputRows' | 'MaximumOutputRows' | 'MaximumFanOut' | 'MaximumPageSize' | 'MaximumFieldPathDepth' | 'MaximumExpressionDepth' | 'MaximumBatchSize' | 'SingleSource' | 'SinglePartition' | 'MaterializedInputs' | 'CompleteInputEvidence' | 'NonNullOperands' | 'ScalarOperands' | 'HomogeneousTemporalDomain' | 'FiniteTemporalBounds' | 'StableUniqueOrdering' | 'DeterministicProvider' | 'ExactNumericAggregateDomain' | 'ExactTemporalDomain' | 'SuppliedRelationRoot';
968
+
969
+ export const relationQueryOperatingBoundaryKinds = {
970
+ maximumInputRows: 'MaximumInputRows',
971
+ maximumOutputRows: 'MaximumOutputRows',
972
+ maximumFanOut: 'MaximumFanOut',
973
+ maximumPageSize: 'MaximumPageSize',
974
+ maximumFieldPathDepth: 'MaximumFieldPathDepth',
975
+ maximumExpressionDepth: 'MaximumExpressionDepth',
976
+ maximumBatchSize: 'MaximumBatchSize',
977
+ singleSource: 'SingleSource',
978
+ singlePartition: 'SinglePartition',
979
+ materializedInputs: 'MaterializedInputs',
980
+ completeInputEvidence: 'CompleteInputEvidence',
981
+ nonNullOperands: 'NonNullOperands',
982
+ scalarOperands: 'ScalarOperands',
983
+ homogeneousTemporalDomain: 'HomogeneousTemporalDomain',
984
+ finiteTemporalBounds: 'FiniteTemporalBounds',
985
+ stableUniqueOrdering: 'StableUniqueOrdering',
986
+ deterministicProvider: 'DeterministicProvider',
987
+ exactNumericAggregateDomain: 'ExactNumericAggregateDomain',
988
+ exactTemporalDomain: 'ExactTemporalDomain',
989
+ suppliedRelationRoot: 'SuppliedRelationRoot',
990
+ } as const satisfies Record<string, RelationQueryOperatingBoundaryKind>;
991
+
992
+ export const relationQueryOperatingBoundaryKindLabels: Record<RelationQueryOperatingBoundaryKind, string> = {
993
+ MaximumInputRows: 'MaximumInputRows',
994
+ MaximumOutputRows: 'MaximumOutputRows',
995
+ MaximumFanOut: 'MaximumFanOut',
996
+ MaximumPageSize: 'MaximumPageSize',
997
+ MaximumFieldPathDepth: 'MaximumFieldPathDepth',
998
+ MaximumExpressionDepth: 'MaximumExpressionDepth',
999
+ MaximumBatchSize: 'MaximumBatchSize',
1000
+ SingleSource: 'SingleSource',
1001
+ SinglePartition: 'SinglePartition',
1002
+ MaterializedInputs: 'MaterializedInputs',
1003
+ CompleteInputEvidence: 'CompleteInputEvidence',
1004
+ NonNullOperands: 'NonNullOperands',
1005
+ ScalarOperands: 'ScalarOperands',
1006
+ HomogeneousTemporalDomain: 'HomogeneousTemporalDomain',
1007
+ FiniteTemporalBounds: 'FiniteTemporalBounds',
1008
+ StableUniqueOrdering: 'StableUniqueOrdering',
1009
+ DeterministicProvider: 'DeterministicProvider',
1010
+ ExactNumericAggregateDomain: 'ExactNumericAggregateDomain',
1011
+ ExactTemporalDomain: 'ExactTemporalDomain',
1012
+ SuppliedRelationRoot: 'SuppliedRelationRoot',
1013
+ };
1014
+
1015
+ export type RelationDraftId = string;
1016
+
1017
+ export type RelationId = string;
1018
+
1019
+ export type RelationName = string;
1020
+
1021
+ export interface LogicalQueryDefinition {
1022
+ nodes: LogicalQueryNode[];
1023
+ parameters: QueryParameterDefinition[];
1024
+ }
1025
+
1026
+ export interface RelationDraftProjection {
1027
+ id: QueryNodeId;
1028
+ input: QueryNodeId;
1029
+ resultBinding: ValueBindingId;
1030
+ resultShape: QualifiedShapeId;
1031
+ assignments: RelationDraftAssignmentSlot[];
1032
+ }
1033
+
1034
+ export type RelationOutputMode = 'OnePerRoot' | 'ZeroOrOnePerRoot' | 'ManyPerRoot' | 'Set';
1035
+
1036
+ export const relationOutputModes = {
1037
+ onePerRoot: 'OnePerRoot',
1038
+ zeroOrOnePerRoot: 'ZeroOrOnePerRoot',
1039
+ manyPerRoot: 'ManyPerRoot',
1040
+ set: 'Set',
1041
+ } as const satisfies Record<string, RelationOutputMode>;
1042
+
1043
+ export const relationOutputModeLabels: Record<RelationOutputMode, string> = {
1044
+ OnePerRoot: 'OnePerRoot',
1045
+ ZeroOrOnePerRoot: 'ZeroOrOnePerRoot',
1046
+ ManyPerRoot: 'ManyPerRoot',
1047
+ Set: 'Set',
1048
+ };
1049
+
32
1050
  export type Expr = {
1051
+ readonly $expr: 'binding';
1052
+ } & BindingExpr | {
33
1053
  readonly $expr: 'field';
34
1054
  } & FieldExpr | {
35
1055
  readonly $expr: 'currentItem';
@@ -53,177 +1073,820 @@ export type Expr = {
53
1073
  readonly $expr: 'aggregate';
54
1074
  } & AggregateExpr;
55
1075
 
1076
+ export interface BindingExpr {
1077
+ binding: ValueBindingId;
1078
+ }
1079
+
56
1080
  export interface FieldExpr {
57
- Path: FieldPath;
1081
+ path: FieldPath;
1082
+ binding?: ValueBindingId | null;
58
1083
  }
59
1084
 
60
1085
  export type CurrentItemExpr = Record<never, never>;
61
1086
 
62
1087
  export interface ParameterExpr {
63
- Parameter: string;
1088
+ parameter: string;
64
1089
  }
65
1090
 
66
1091
  export interface ConstantExpr {
67
- Value: unknown;
1092
+ value: unknown;
68
1093
  }
69
1094
 
70
1095
  export interface UnaryExpr {
71
- Operator: UnaryOperator;
72
- Operand: Expr;
1096
+ operator: UnaryOperator;
1097
+ operand: Expr;
73
1098
  }
74
1099
 
75
1100
  export interface BinaryExpr {
76
- Operator: BinaryOperator;
77
- Left: Expr;
78
- Right: Expr;
1101
+ operator: BinaryOperator;
1102
+ left: Expr;
1103
+ right: Expr;
79
1104
  }
80
1105
 
81
1106
  export interface ConditionalExpr {
82
- Test: Expr;
83
- IfTrue: Expr;
84
- IfFalse: Expr;
85
- ReturnType: TypeRef;
1107
+ test: Expr;
1108
+ ifTrue: Expr;
1109
+ ifFalse: Expr;
1110
+ returnType: TypeRef;
86
1111
  }
87
1112
 
88
1113
  export interface CallExpr {
89
- Function: string;
90
- Arguments: Expr[];
91
- ReturnType: TypeRef;
1114
+ function: string;
1115
+ arguments: Expr[];
1116
+ returnType: TypeRef;
92
1117
  }
93
1118
 
94
1119
  export interface FieldRefExpr {
95
- Path: FieldPath;
96
- Type: TypeRef;
1120
+ path: FieldPath;
1121
+ type: TypeRef;
97
1122
  }
98
1123
 
99
1124
  export interface LiteralExpr {
100
- Type: TypeRef;
101
- Value: unknown;
1125
+ type: TypeRef;
1126
+ value: unknown;
102
1127
  }
103
1128
 
104
1129
  export interface AggregateExpr {
105
- Operator: AggregateOperator;
106
- Source: Expr;
107
- GroupBy: Expr[];
108
- ReturnType: TypeRef;
109
- }
110
-
111
- export interface MappingDefinition {
112
- Id: MappingId;
113
- Name: MappingName;
114
- Kind: MappingKind;
115
- SourceShapeId?: ShapeId | null;
116
- TargetShapeId: ShapeId;
117
- Assignments: FieldAssignment[];
118
- Predicate?: Expr | null;
119
- ForEach?: Expr | null;
120
- Key?: Expr | null;
121
- Entity?: Expr | null;
122
- Scope: MappingScope;
123
- Direction: MappingDirection;
124
- NestedMappings: NestedMapping[];
125
- CollectionMappings: CollectionMapping[];
126
- Metadata: MappingMetadata;
127
- }
128
-
129
- export interface MaterializationSpec {
130
- IsEnabled: boolean;
131
- Strategy: MaterializationStrategy;
132
- Freshness: FreshnessPolicy;
133
- AllowCodegen: boolean;
134
- }
135
-
136
- export interface RelationMetadata {
137
- AllowCodegen: boolean;
138
- Deterministic: boolean;
139
- Hints: ({
140
- Key: string;
141
- Value: string;
142
- })[];
1130
+ operator: AggregateOperator;
1131
+ source: Expr;
1132
+ groupBy: Expr[];
1133
+ returnType: TypeRef;
143
1134
  }
144
1135
 
145
1136
  export interface InvariantDefinition {
146
- Name: string;
147
- Expression: Expr;
148
- Message?: string | null;
1137
+ name: string;
1138
+ entity?: EntityId | null;
1139
+ expression: Expr;
1140
+ message?: string | null;
149
1141
  }
150
1142
 
151
- export interface SourceAlias {
152
- Value: string;
1143
+ export type DocumentOrigin = 'Unknown' | 'User' | 'System' | 'Imported' | 'Generated' | 'Compiled' | 'Extracted';
1144
+
1145
+ export const documentOrigins = {
1146
+ unknown: 'Unknown',
1147
+ user: 'User',
1148
+ system: 'System',
1149
+ imported: 'Imported',
1150
+ generated: 'Generated',
1151
+ compiled: 'Compiled',
1152
+ extracted: 'Extracted',
1153
+ } as const satisfies Record<string, DocumentOrigin>;
1154
+
1155
+ export const documentOriginLabels: Record<DocumentOrigin, string> = {
1156
+ Unknown: 'Unknown',
1157
+ User: 'User',
1158
+ System: 'System',
1159
+ Imported: 'Imported',
1160
+ Generated: 'Generated',
1161
+ Compiled: 'Compiled',
1162
+ Extracted: 'Extracted',
1163
+ };
1164
+
1165
+ export type AnnotationKey = string;
1166
+
1167
+ export type AnnotationValue = unknown;
1168
+
1169
+ export interface RelationDraftProducerArtifactReference {
1170
+ kind: string;
1171
+ value: string;
1172
+ }
1173
+
1174
+ export interface RelationDraftConventionDecision {
1175
+ ruleId: string;
1176
+ slotId: QueryAssignmentId;
1177
+ candidateId?: RelationDraftCandidateId | null;
1178
+ sourceBinding: ValueBindingId;
1179
+ source?: FieldPath | null;
1180
+ target: FieldPath;
1181
+ }
1182
+
1183
+ export interface RelationOutputDefinition {
1184
+ node: QueryNodeId;
1185
+ shape: QualifiedShapeId;
1186
+ mode: RelationOutputMode;
1187
+ key?: Expr | null;
153
1188
  }
154
1189
 
155
- export type SourceCardinality = 0 | 1;
1190
+ export type QueryId = string;
156
1191
 
157
- export const sourceCardinalities = {
158
- single: 0,
159
- many: 1,
160
- } as const satisfies Record<string, SourceCardinality>;
1192
+ export type QueryName = string;
1193
+
1194
+ export type QueryResultDefinition = {
1195
+ readonly $result: 'rows';
1196
+ } & RowsQueryResultDefinition | {
1197
+ readonly $result: 'aggregation';
1198
+ } & AggregationQueryResultDefinition;
1199
+
1200
+ export interface RowsQueryResultDefinition {
1201
+ id: QueryResultId;
1202
+ input: QueryNodeId;
1203
+ }
1204
+
1205
+ export interface AggregationQueryResultDefinition {
1206
+ id: QueryResultId;
1207
+ input: QueryNodeId;
1208
+ }
1209
+
1210
+ export interface RelationshipDefinition {
1211
+ id: RelationshipId;
1212
+ sourceShape: QualifiedShapeId;
1213
+ sourceReference: FieldPath;
1214
+ targetShape: QualifiedShapeId;
1215
+ targetKey: RelationshipTargetKey;
1216
+ sourceReferenceUniqueness: SourceReferenceUniqueness;
1217
+ }
161
1218
 
162
- export const sourceCardinalityLabels: Record<SourceCardinality, string> = {
163
- 0: 'Single',
164
- 1: 'Many',
1219
+ export interface RelationQueryLogicalPlan {
1220
+ nodes: RelationQueryLogicalPlanNode[];
1221
+ retainedNodes: QueryNodeId[];
1222
+ evaluationOrder: QueryNodeId[];
1223
+ }
1224
+
1225
+ export interface RelationQueryExplainRequirementGraph {
1226
+ inputs: RelationQueryExplainRequirementInput[];
1227
+ outputs: RelationQueryOutputReference[];
1228
+ edges: RelationQueryExplainRequirementEdge[];
1229
+ }
1230
+
1231
+ export interface RelationQueryNativeResultBranch {
1232
+ id: RelationQueryNativeResultBranchId;
1233
+ kind: RelationQueryNativeResultKind;
1234
+ node: QueryNodeId;
1235
+ binding: ValueBindingId;
1236
+ shape: QualifiedShapeId;
1237
+ relation?: RelationId | null;
1238
+ queryResult?: QueryResultId | null;
1239
+ outputs: RelationQueryOutputReference[];
1240
+ fields: RelationQueryFieldReference[];
1241
+ }
1242
+
1243
+ export interface DocumentDiagnosticEvidence {
1244
+ stage?: string | null;
1245
+ subject?: string | null;
1246
+ relatedLocations: string[];
1247
+ sourceReferences: string[];
1248
+ resolutionOptions: string[];
1249
+ expected?: string | null;
1250
+ observed?: string | null;
1251
+ }
1252
+
1253
+ export type RelationQueryPhysicalPlanningStatus = 'Planned' | 'Unavailable' | 'Invalid';
1254
+
1255
+ export const relationQueryPhysicalPlanningStatuses = {
1256
+ planned: 'Planned',
1257
+ unavailable: 'Unavailable',
1258
+ invalid: 'Invalid',
1259
+ } as const satisfies Record<string, RelationQueryPhysicalPlanningStatus>;
1260
+
1261
+ export const relationQueryPhysicalPlanningStatusLabels: Record<RelationQueryPhysicalPlanningStatus, string> = {
1262
+ Planned: 'Planned',
1263
+ Unavailable: 'Unavailable',
1264
+ Invalid: 'Invalid',
165
1265
  };
166
1266
 
167
- export type JoinKind = 0 | 1 | 2 | 3;
1267
+ export type RelationQueryNativeCompilationStatus = 'Exact' | 'Unsupported' | 'Invalid';
168
1268
 
169
- export const joinKinds = {
170
- inner: 0,
171
- left: 1,
172
- right: 2,
173
- full: 3,
174
- } as const satisfies Record<string, JoinKind>;
1269
+ export const relationQueryNativeCompilationStatuses = {
1270
+ exact: 'Exact',
1271
+ unsupported: 'Unsupported',
1272
+ invalid: 'Invalid',
1273
+ } as const satisfies Record<string, RelationQueryNativeCompilationStatus>;
175
1274
 
176
- export const joinKindLabels: Record<JoinKind, string> = {
177
- 0: 'Inner',
178
- 1: 'Left',
179
- 2: 'Right',
180
- 3: 'Full',
1275
+ export const relationQueryNativeCompilationStatusLabels: Record<RelationQueryNativeCompilationStatus, string> = {
1276
+ Exact: 'Exact',
1277
+ Unsupported: 'Unsupported',
1278
+ Invalid: 'Invalid',
181
1279
  };
182
1280
 
183
- export interface FieldPath {
184
- Segments: FieldPathSegment[];
1281
+ export interface RelationQueryNativeArtifactReference {
1282
+ branch: RelationQueryNativeResultBranchId;
1283
+ artifactSchemaVersion?: string | null;
1284
+ fingerprint: RelationQueryNativeArtifactFingerprintReference;
1285
+ provenance: RelationQueryNativeCompilationProvenance;
1286
+ }
1287
+
1288
+ export interface RelationQueryNativeCompilationDiagnostic {
1289
+ code: string;
1290
+ severity: DiagnosticSeverity;
1291
+ message: string;
1292
+ branch?: RelationQueryNativeResultBranchId | null;
1293
+ node?: QueryNodeId | null;
1294
+ input?: RelationQueryInputId | null;
1295
+ requirement?: RelationQueryRealizationRequirementId | null;
1296
+ capabilityEvidence?: RelationQueryTargetCapabilityEvidenceId | null;
1297
+ operatingBoundary?: RelationQueryOperatingBoundaryId | null;
1298
+ override?: RelationQueryRealizationOverrideId | null;
1299
+ semanticSite?: string | null;
1300
+ contextEvidence?: RelationQueryContextEvidenceId | null;
1301
+ field?: FieldPath | null;
1302
+ placementBinding?: RelationQuerySourcePlacementBindingId | null;
1303
+ bindingSetting?: string | null;
1304
+ resolution?: string | null;
1305
+ configurationOrigin?: EffectiveConfigurationOrigin | null;
1306
+ configurationAuthority?: string | null;
1307
+ adapterDecisionCode?: RelationQueryAdapterDecisionCode | null;
1308
+ }
1309
+
1310
+ export interface RelationQueryEvaluationFingerprint {
1311
+ algorithm: string;
1312
+ canonicalization: string;
1313
+ value: string;
1314
+ }
1315
+
1316
+ export type RelationQueryExecutionStatus = 'Succeeded' | 'Incomplete' | 'Failed';
1317
+
1318
+ export const relationQueryExecutionStatuses = {
1319
+ succeeded: 'Succeeded',
1320
+ incomplete: 'Incomplete',
1321
+ failed: 'Failed',
1322
+ } as const satisfies Record<string, RelationQueryExecutionStatus>;
1323
+
1324
+ export const relationQueryExecutionStatusLabels: Record<RelationQueryExecutionStatus, string> = {
1325
+ Succeeded: 'Succeeded',
1326
+ Incomplete: 'Incomplete',
1327
+ Failed: 'Failed',
1328
+ };
1329
+
1330
+ export interface RelationQueryExplainResultSummary {
1331
+ branch: RelationQueryNativeResultBranchId;
1332
+ kind: RelationQueryExecutionResultKind;
1333
+ shape: QualifiedShapeId;
1334
+ state: RelationQueryExecutionOutputState;
1335
+ rowCount: number;
1336
+ }
1337
+
1338
+ export interface RelationQueryExplainRequirementGapSummary {
1339
+ cause: RelationRequirementGapCause;
1340
+ input: RelationQueryInputId;
1341
+ affectedOutputs: RelationQueryOutputId[];
1342
+ occurrenceCount: number;
1343
+ suggestedResolutions: RelationRequirementGapResolutionKind[];
1344
+ }
1345
+
1346
+ export interface RelationQueryEvaluationObservationFingerprint {
1347
+ algorithm: string;
1348
+ canonicalization: string;
1349
+ value: string;
1350
+ }
1351
+
1352
+ export interface FieldPathSegment {
1353
+ kind: SegmentKind;
1354
+ segment?: string | null;
1355
+ }
1356
+
1357
+ export type RelationQueryPhysicalLoweringRuleId = string;
1358
+
1359
+ export interface RelationQueryPhysicalCapabilityEvidenceReference {
1360
+ source: RelationQuerySourceInstanceId;
1361
+ target: RelationQueryTargetId;
1362
+ profile: RelationQueryTargetProfileId;
1363
+ evidence: RelationQueryTargetCapabilityEvidenceId;
1364
+ }
1365
+
1366
+ export type RelationQueryPhysicalPlanningDecisionId = string;
1367
+
1368
+ export interface RelationQueryAdapterBindingFingerprint {
1369
+ algorithm: string;
1370
+ canonicalization: string;
1371
+ value: string;
1372
+ }
1373
+
1374
+ export type RelationQueryBoundAssessmentStatus = 'Available' | 'Unavailable' | 'Invalid' | 'Blocked';
1375
+
1376
+ export const relationQueryBoundAssessmentStatuses = {
1377
+ available: 'Available',
1378
+ unavailable: 'Unavailable',
1379
+ invalid: 'Invalid',
1380
+ blocked: 'Blocked',
1381
+ } as const satisfies Record<string, RelationQueryBoundAssessmentStatus>;
1382
+
1383
+ export const relationQueryBoundAssessmentStatusLabels: Record<RelationQueryBoundAssessmentStatus, string> = {
1384
+ Available: 'Available',
1385
+ Unavailable: 'Unavailable',
1386
+ Invalid: 'Invalid',
1387
+ Blocked: 'Blocked',
1388
+ };
1389
+
1390
+ 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';
1391
+
1392
+ export const relationQueryLogicalCapabilityKinds = {
1393
+ source: 'Source',
1394
+ filter: 'Filter',
1395
+ relationshipTraversal: 'RelationshipTraversal',
1396
+ forwardRelationshipTraversal: 'ForwardRelationshipTraversal',
1397
+ inverseRelationshipTraversal: 'InverseRelationshipTraversal',
1398
+ atMostOneRelationshipTraversal: 'AtMostOneRelationshipTraversal',
1399
+ manyRelationshipTraversal: 'ManyRelationshipTraversal',
1400
+ requiredRelationshipTraversal: 'RequiredRelationshipTraversal',
1401
+ optionalRelationshipTraversal: 'OptionalRelationshipTraversal',
1402
+ join: 'Join',
1403
+ innerJoin: 'InnerJoin',
1404
+ leftOuterJoin: 'LeftOuterJoin',
1405
+ rightOuterJoin: 'RightOuterJoin',
1406
+ fullOuterJoin: 'FullOuterJoin',
1407
+ temporalJoin: 'TemporalJoin',
1408
+ expandCollection: 'ExpandCollection',
1409
+ projection: 'Projection',
1410
+ projectionAssignment: 'ProjectionAssignment',
1411
+ distinctRows: 'DistinctRows',
1412
+ distinctKeys: 'DistinctKeys',
1413
+ aggregation: 'Aggregation',
1414
+ aggregateGrouping: 'AggregateGrouping',
1415
+ aggregateFilter: 'AggregateFilter',
1416
+ countAggregate: 'CountAggregate',
1417
+ sumAggregate: 'SumAggregate',
1418
+ minimumAggregate: 'MinimumAggregate',
1419
+ maximumAggregate: 'MaximumAggregate',
1420
+ anyAggregate: 'AnyAggregate',
1421
+ allAggregate: 'AllAggregate',
1422
+ ordering: 'Ordering',
1423
+ ascendingOrdering: 'AscendingOrdering',
1424
+ descendingOrdering: 'DescendingOrdering',
1425
+ nullsFirst: 'NullsFirst',
1426
+ nullsLast: 'NullsLast',
1427
+ stableTieOrdering: 'StableTieOrdering',
1428
+ offsetPaging: 'OffsetPaging',
1429
+ keysetPaging: 'KeysetPaging',
1430
+ onePerRootRelationOutput: 'OnePerRootRelationOutput',
1431
+ zeroOrOnePerRootRelationOutput: 'ZeroOrOnePerRootRelationOutput',
1432
+ manyPerRootRelationOutput: 'ManyPerRootRelationOutput',
1433
+ setRelationOutput: 'SetRelationOutput',
1434
+ relationOutputIdentity: 'RelationOutputIdentity',
1435
+ relationInvariant: 'RelationInvariant',
1436
+ queryRowsResult: 'QueryRowsResult',
1437
+ queryAggregationResult: 'QueryAggregationResult',
1438
+ alwaysPresentBinding: 'AlwaysPresentBinding',
1439
+ mayBeAbsentBinding: 'MayBeAbsentBinding',
1440
+ averageAggregate: 'AverageAggregate',
1441
+ } as const satisfies Record<string, RelationQueryLogicalCapabilityKind>;
1442
+
1443
+ export const relationQueryLogicalCapabilityKindLabels: Record<RelationQueryLogicalCapabilityKind, string> = {
1444
+ Source: 'Source',
1445
+ Filter: 'Filter',
1446
+ RelationshipTraversal: 'RelationshipTraversal',
1447
+ ForwardRelationshipTraversal: 'ForwardRelationshipTraversal',
1448
+ InverseRelationshipTraversal: 'InverseRelationshipTraversal',
1449
+ AtMostOneRelationshipTraversal: 'AtMostOneRelationshipTraversal',
1450
+ ManyRelationshipTraversal: 'ManyRelationshipTraversal',
1451
+ RequiredRelationshipTraversal: 'RequiredRelationshipTraversal',
1452
+ OptionalRelationshipTraversal: 'OptionalRelationshipTraversal',
1453
+ Join: 'Join',
1454
+ InnerJoin: 'InnerJoin',
1455
+ LeftOuterJoin: 'LeftOuterJoin',
1456
+ RightOuterJoin: 'RightOuterJoin',
1457
+ FullOuterJoin: 'FullOuterJoin',
1458
+ TemporalJoin: 'TemporalJoin',
1459
+ ExpandCollection: 'ExpandCollection',
1460
+ Projection: 'Projection',
1461
+ ProjectionAssignment: 'ProjectionAssignment',
1462
+ DistinctRows: 'DistinctRows',
1463
+ DistinctKeys: 'DistinctKeys',
1464
+ Aggregation: 'Aggregation',
1465
+ AggregateGrouping: 'AggregateGrouping',
1466
+ AggregateFilter: 'AggregateFilter',
1467
+ CountAggregate: 'CountAggregate',
1468
+ SumAggregate: 'SumAggregate',
1469
+ MinimumAggregate: 'MinimumAggregate',
1470
+ MaximumAggregate: 'MaximumAggregate',
1471
+ AnyAggregate: 'AnyAggregate',
1472
+ AllAggregate: 'AllAggregate',
1473
+ Ordering: 'Ordering',
1474
+ AscendingOrdering: 'AscendingOrdering',
1475
+ DescendingOrdering: 'DescendingOrdering',
1476
+ NullsFirst: 'NullsFirst',
1477
+ NullsLast: 'NullsLast',
1478
+ StableTieOrdering: 'StableTieOrdering',
1479
+ OffsetPaging: 'OffsetPaging',
1480
+ KeysetPaging: 'KeysetPaging',
1481
+ OnePerRootRelationOutput: 'OnePerRootRelationOutput',
1482
+ ZeroOrOnePerRootRelationOutput: 'ZeroOrOnePerRootRelationOutput',
1483
+ ManyPerRootRelationOutput: 'ManyPerRootRelationOutput',
1484
+ SetRelationOutput: 'SetRelationOutput',
1485
+ RelationOutputIdentity: 'RelationOutputIdentity',
1486
+ RelationInvariant: 'RelationInvariant',
1487
+ QueryRowsResult: 'QueryRowsResult',
1488
+ QueryAggregationResult: 'QueryAggregationResult',
1489
+ AlwaysPresentBinding: 'AlwaysPresentBinding',
1490
+ MayBeAbsentBinding: 'MayBeAbsentBinding',
1491
+ AverageAggregate: 'AverageAggregate',
1492
+ };
1493
+
1494
+ export interface ExprCapabilityId {
1495
+ value: string;
185
1496
  }
186
1497
 
187
- export type UnaryOperator = 0;
1498
+ export type ExprCapabilityRequirementKind = 'Operation' | 'Ambient';
1499
+
1500
+ export const exprCapabilityRequirementKinds = {
1501
+ operation: 'Operation',
1502
+ ambient: 'Ambient',
1503
+ } as const satisfies Record<string, ExprCapabilityRequirementKind>;
1504
+
1505
+ export const exprCapabilityRequirementKindLabels: Record<ExprCapabilityRequirementKind, string> = {
1506
+ Operation: 'Operation',
1507
+ Ambient: 'Ambient',
1508
+ };
1509
+
1510
+ export type RelationQueryTemporalExecutionCapability = 'PointInInterval' | 'IntervalOverlap' | 'InclusiveBoundary' | 'ExclusiveBoundary' | 'UnboundedBoundary' | 'NullAsUnbounded' | 'DateDomain' | 'DateTimeDomain' | 'InstantDomain' | 'PreserveAllMatches' | 'InnerJoin' | 'LeftOuterJoin' | 'RightOuterJoin' | 'FullOuterJoin' | 'ValidateIntervals' | 'InconclusiveEvidence';
1511
+
1512
+ export const relationQueryTemporalExecutionCapabilities = {
1513
+ pointInInterval: 'PointInInterval',
1514
+ intervalOverlap: 'IntervalOverlap',
1515
+ inclusiveBoundary: 'InclusiveBoundary',
1516
+ exclusiveBoundary: 'ExclusiveBoundary',
1517
+ unboundedBoundary: 'UnboundedBoundary',
1518
+ nullAsUnbounded: 'NullAsUnbounded',
1519
+ dateDomain: 'DateDomain',
1520
+ dateTimeDomain: 'DateTimeDomain',
1521
+ instantDomain: 'InstantDomain',
1522
+ preserveAllMatches: 'PreserveAllMatches',
1523
+ innerJoin: 'InnerJoin',
1524
+ leftOuterJoin: 'LeftOuterJoin',
1525
+ rightOuterJoin: 'RightOuterJoin',
1526
+ fullOuterJoin: 'FullOuterJoin',
1527
+ validateIntervals: 'ValidateIntervals',
1528
+ inconclusiveEvidence: 'InconclusiveEvidence',
1529
+ } as const satisfies Record<string, RelationQueryTemporalExecutionCapability>;
1530
+
1531
+ export const relationQueryTemporalExecutionCapabilityLabels: Record<RelationQueryTemporalExecutionCapability, string> = {
1532
+ PointInInterval: 'PointInInterval',
1533
+ IntervalOverlap: 'IntervalOverlap',
1534
+ InclusiveBoundary: 'InclusiveBoundary',
1535
+ ExclusiveBoundary: 'ExclusiveBoundary',
1536
+ UnboundedBoundary: 'UnboundedBoundary',
1537
+ NullAsUnbounded: 'NullAsUnbounded',
1538
+ DateDomain: 'DateDomain',
1539
+ DateTimeDomain: 'DateTimeDomain',
1540
+ InstantDomain: 'InstantDomain',
1541
+ PreserveAllMatches: 'PreserveAllMatches',
1542
+ InnerJoin: 'InnerJoin',
1543
+ LeftOuterJoin: 'LeftOuterJoin',
1544
+ RightOuterJoin: 'RightOuterJoin',
1545
+ FullOuterJoin: 'FullOuterJoin',
1546
+ ValidateIntervals: 'ValidateIntervals',
1547
+ InconclusiveEvidence: 'InconclusiveEvidence',
1548
+ };
1549
+
1550
+ export type RelationQueryStructuralCapabilityRole = 'BindingRead' | 'CurrentItemRead' | 'OccurrenceEvidenceReconstruction' | 'ProjectionTarget' | 'GroupingTarget' | 'AggregateTarget' | 'OutputSelection' | 'CompleteValue';
1551
+
1552
+ export const relationQueryStructuralCapabilityRoles = {
1553
+ bindingRead: 'BindingRead',
1554
+ currentItemRead: 'CurrentItemRead',
1555
+ occurrenceEvidenceReconstruction: 'OccurrenceEvidenceReconstruction',
1556
+ projectionTarget: 'ProjectionTarget',
1557
+ groupingTarget: 'GroupingTarget',
1558
+ aggregateTarget: 'AggregateTarget',
1559
+ outputSelection: 'OutputSelection',
1560
+ completeValue: 'CompleteValue',
1561
+ } as const satisfies Record<string, RelationQueryStructuralCapabilityRole>;
1562
+
1563
+ export const relationQueryStructuralCapabilityRoleLabels: Record<RelationQueryStructuralCapabilityRole, string> = {
1564
+ BindingRead: 'BindingRead',
1565
+ CurrentItemRead: 'CurrentItemRead',
1566
+ OccurrenceEvidenceReconstruction: 'OccurrenceEvidenceReconstruction',
1567
+ ProjectionTarget: 'ProjectionTarget',
1568
+ GroupingTarget: 'GroupingTarget',
1569
+ AggregateTarget: 'AggregateTarget',
1570
+ OutputSelection: 'OutputSelection',
1571
+ CompleteValue: 'CompleteValue',
1572
+ };
1573
+
1574
+ export type RelationQueryStructuralPathKind = 'RootValue' | 'TopLevelField' | 'NestedField' | 'CollectionElement' | 'NestedCollectionElement';
1575
+
1576
+ export const relationQueryStructuralPathKinds = {
1577
+ rootValue: 'RootValue',
1578
+ topLevelField: 'TopLevelField',
1579
+ nestedField: 'NestedField',
1580
+ collectionElement: 'CollectionElement',
1581
+ nestedCollectionElement: 'NestedCollectionElement',
1582
+ } as const satisfies Record<string, RelationQueryStructuralPathKind>;
1583
+
1584
+ export const relationQueryStructuralPathKindLabels: Record<RelationQueryStructuralPathKind, string> = {
1585
+ RootValue: 'RootValue',
1586
+ TopLevelField: 'TopLevelField',
1587
+ NestedField: 'NestedField',
1588
+ CollectionElement: 'CollectionElement',
1589
+ NestedCollectionElement: 'NestedCollectionElement',
1590
+ };
1591
+
1592
+ export type RelationQueryPrimitiveCapabilityKind = 'KeyExtraction' | 'BatchedKeyLookup' | 'PredicateRead' | 'CompleteSetEnumeration' | 'LocalCorrelation' | 'HashJoin' | 'StableSort' | 'LocalAggregation' | 'FieldProjection' | 'NullAwareComparison' | 'TemporalComparison' | 'IntervalPredicate' | 'ObservationIdentityRead' | 'RelationshipReferenceRead' | 'ParameterBinding' | 'AmbientCapabilityBinding' | 'OutputObjectConstruction' | 'ProvenanceTracking' | 'BatchedPredicateLookup' | 'InvariantEvaluation' | 'OffsetPaging' | 'KeysetSeek';
1593
+
1594
+ export const relationQueryPrimitiveCapabilityKinds = {
1595
+ keyExtraction: 'KeyExtraction',
1596
+ batchedKeyLookup: 'BatchedKeyLookup',
1597
+ predicateRead: 'PredicateRead',
1598
+ completeSetEnumeration: 'CompleteSetEnumeration',
1599
+ localCorrelation: 'LocalCorrelation',
1600
+ hashJoin: 'HashJoin',
1601
+ stableSort: 'StableSort',
1602
+ localAggregation: 'LocalAggregation',
1603
+ fieldProjection: 'FieldProjection',
1604
+ nullAwareComparison: 'NullAwareComparison',
1605
+ temporalComparison: 'TemporalComparison',
1606
+ intervalPredicate: 'IntervalPredicate',
1607
+ observationIdentityRead: 'ObservationIdentityRead',
1608
+ relationshipReferenceRead: 'RelationshipReferenceRead',
1609
+ parameterBinding: 'ParameterBinding',
1610
+ ambientCapabilityBinding: 'AmbientCapabilityBinding',
1611
+ outputObjectConstruction: 'OutputObjectConstruction',
1612
+ provenanceTracking: 'ProvenanceTracking',
1613
+ batchedPredicateLookup: 'BatchedPredicateLookup',
1614
+ invariantEvaluation: 'InvariantEvaluation',
1615
+ offsetPaging: 'OffsetPaging',
1616
+ keysetSeek: 'KeysetSeek',
1617
+ } as const satisfies Record<string, RelationQueryPrimitiveCapabilityKind>;
1618
+
1619
+ export const relationQueryPrimitiveCapabilityKindLabels: Record<RelationQueryPrimitiveCapabilityKind, string> = {
1620
+ KeyExtraction: 'KeyExtraction',
1621
+ BatchedKeyLookup: 'BatchedKeyLookup',
1622
+ PredicateRead: 'PredicateRead',
1623
+ CompleteSetEnumeration: 'CompleteSetEnumeration',
1624
+ LocalCorrelation: 'LocalCorrelation',
1625
+ HashJoin: 'HashJoin',
1626
+ StableSort: 'StableSort',
1627
+ LocalAggregation: 'LocalAggregation',
1628
+ FieldProjection: 'FieldProjection',
1629
+ NullAwareComparison: 'NullAwareComparison',
1630
+ TemporalComparison: 'TemporalComparison',
1631
+ IntervalPredicate: 'IntervalPredicate',
1632
+ ObservationIdentityRead: 'ObservationIdentityRead',
1633
+ RelationshipReferenceRead: 'RelationshipReferenceRead',
1634
+ ParameterBinding: 'ParameterBinding',
1635
+ AmbientCapabilityBinding: 'AmbientCapabilityBinding',
1636
+ OutputObjectConstruction: 'OutputObjectConstruction',
1637
+ ProvenanceTracking: 'ProvenanceTracking',
1638
+ BatchedPredicateLookup: 'BatchedPredicateLookup',
1639
+ InvariantEvaluation: 'InvariantEvaluation',
1640
+ OffsetPaging: 'OffsetPaging',
1641
+ KeysetSeek: 'KeysetSeek',
1642
+ };
1643
+
1644
+ export interface RelationQueryRealizationOutputReference {
1645
+ id: RelationQueryOutputId;
1646
+ kind: RelationQueryOutputReferenceKind;
1647
+ node: QueryNodeId;
1648
+ shape: QualifiedShapeId;
1649
+ relation?: RelationId | null;
1650
+ queryResult?: QueryResultId | null;
1651
+ field?: RelationQueryFieldReference | null;
1652
+ }
1653
+
1654
+ export type RelationQueryRequirementEffect = 'Value' | 'Identity' | 'Membership' | 'Correlation' | 'Acquisition' | 'Cardinality' | 'Ordering' | 'Grouping' | 'Aggregation' | 'Pagination' | 'Validation' | 'Evaluation';
1655
+
1656
+ export const relationQueryRequirementEffects = {
1657
+ value: 'Value',
1658
+ identity: 'Identity',
1659
+ membership: 'Membership',
1660
+ correlation: 'Correlation',
1661
+ acquisition: 'Acquisition',
1662
+ cardinality: 'Cardinality',
1663
+ ordering: 'Ordering',
1664
+ grouping: 'Grouping',
1665
+ aggregation: 'Aggregation',
1666
+ pagination: 'Pagination',
1667
+ validation: 'Validation',
1668
+ evaluation: 'Evaluation',
1669
+ } as const satisfies Record<string, RelationQueryRequirementEffect>;
1670
+
1671
+ export const relationQueryRequirementEffectLabels: Record<RelationQueryRequirementEffect, string> = {
1672
+ Value: 'Value',
1673
+ Identity: 'Identity',
1674
+ Membership: 'Membership',
1675
+ Correlation: 'Correlation',
1676
+ Acquisition: 'Acquisition',
1677
+ Cardinality: 'Cardinality',
1678
+ Ordering: 'Ordering',
1679
+ Grouping: 'Grouping',
1680
+ Aggregation: 'Aggregation',
1681
+ Pagination: 'Pagination',
1682
+ Validation: 'Validation',
1683
+ Evaluation: 'Evaluation',
1684
+ };
1685
+
1686
+ export type QueryInputRequirement = 'Optional' | 'Required';
1687
+
1688
+ export const queryInputRequirements = {
1689
+ optional: 'Optional',
1690
+ required: 'Required',
1691
+ } as const satisfies Record<string, QueryInputRequirement>;
1692
+
1693
+ export const queryInputRequirementLabels: Record<QueryInputRequirement, string> = {
1694
+ Optional: 'Optional',
1695
+ Required: 'Required',
1696
+ };
1697
+
1698
+ export interface RelationQueryRealizationTrace {
1699
+ steps: RelationQueryRealizationTraceStep[];
1700
+ }
1701
+
1702
+ export type RelationQueryRealizationStaticFactKind = 'FieldPathDepth' | 'ExpressionDepth' | 'PageSize';
1703
+
1704
+ export const relationQueryRealizationStaticFactKinds = {
1705
+ fieldPathDepth: 'FieldPathDepth',
1706
+ expressionDepth: 'ExpressionDepth',
1707
+ pageSize: 'PageSize',
1708
+ } as const satisfies Record<string, RelationQueryRealizationStaticFactKind>;
1709
+
1710
+ export const relationQueryRealizationStaticFactKindLabels: Record<RelationQueryRealizationStaticFactKind, string> = {
1711
+ FieldPathDepth: 'FieldPathDepth',
1712
+ ExpressionDepth: 'ExpressionDepth',
1713
+ PageSize: 'PageSize',
1714
+ };
1715
+
1716
+ export type RelationQueryOperatingBoundaryValidationKind = 'StaticPlanFact' | 'TargetEnforced';
1717
+
1718
+ export const relationQueryOperatingBoundaryValidationKinds = {
1719
+ staticPlanFact: 'StaticPlanFact',
1720
+ targetEnforced: 'TargetEnforced',
1721
+ } as const satisfies Record<string, RelationQueryOperatingBoundaryValidationKind>;
1722
+
1723
+ export const relationQueryOperatingBoundaryValidationKindLabels: Record<RelationQueryOperatingBoundaryValidationKind, string> = {
1724
+ StaticPlanFact: 'StaticPlanFact',
1725
+ TargetEnforced: 'TargetEnforced',
1726
+ };
1727
+
1728
+ export type LogicalQueryNode = {
1729
+ readonly $node: 'source';
1730
+ } & SourceQueryNode | {
1731
+ readonly $node: 'filter';
1732
+ } & FilterQueryNode | {
1733
+ readonly $node: 'traverseRelationship';
1734
+ } & TraverseRelationshipQueryNode | {
1735
+ readonly $node: 'join';
1736
+ } & JoinQueryNode | {
1737
+ readonly $node: 'temporalJoin';
1738
+ } & TemporalJoinQueryNode | {
1739
+ readonly $node: 'expandCollection';
1740
+ } & ExpandCollectionQueryNode | {
1741
+ readonly $node: 'project';
1742
+ } & ProjectQueryNode | {
1743
+ readonly $node: 'distinct';
1744
+ } & DistinctQueryNode | {
1745
+ readonly $node: 'aggregate';
1746
+ } & AggregateQueryNode | {
1747
+ readonly $node: 'order';
1748
+ } & OrderQueryNode | {
1749
+ readonly $node: 'page';
1750
+ } & PageQueryNode;
1751
+
1752
+ export interface SourceQueryNode {
1753
+ id: QueryNodeId;
1754
+ binding: ValueBindingId;
1755
+ shape: QualifiedShapeId;
1756
+ }
1757
+
1758
+ export interface FilterQueryNode {
1759
+ input: QueryNodeId;
1760
+ predicate: Expr;
1761
+ id: QueryNodeId;
1762
+ }
1763
+
1764
+ export interface TraverseRelationshipQueryNode {
1765
+ id: QueryNodeId;
1766
+ input: QueryNodeId;
1767
+ from: ValueBindingId;
1768
+ relationship: RelationshipId;
1769
+ direction: RelationshipTraversalDirection;
1770
+ result: ValueBindingId;
1771
+ joinKind: JoinKind;
1772
+ requirement: QueryInputRequirement;
1773
+ }
1774
+
1775
+ export interface JoinQueryNode {
1776
+ left: QueryNodeId;
1777
+ right: QueryNodeId;
1778
+ kind: JoinKind;
1779
+ predicate: Expr;
1780
+ id: QueryNodeId;
1781
+ }
1782
+
1783
+ export interface TemporalJoinQueryNode {
1784
+ id: QueryNodeId;
1785
+ left: QueryNodeId;
1786
+ right: QueryNodeId;
1787
+ kind: JoinKind;
1788
+ correlation: Expr;
1789
+ match: TemporalJoinMatch;
1790
+ }
1791
+
1792
+ export interface ExpandCollectionQueryNode {
1793
+ input: QueryNodeId;
1794
+ collection: Expr;
1795
+ itemBinding: ValueBindingId;
1796
+ itemType: TypeRef;
1797
+ id: QueryNodeId;
1798
+ }
1799
+
1800
+ export interface ProjectQueryNode {
1801
+ id: QueryNodeId;
1802
+ input: QueryNodeId;
1803
+ resultBinding: ValueBindingId;
1804
+ resultShape: QualifiedShapeId;
1805
+ assignments: ProjectionAssignment[];
1806
+ }
1807
+
1808
+ export interface DistinctQueryNode {
1809
+ input: QueryNodeId;
1810
+ keys: Expr[];
1811
+ id: QueryNodeId;
1812
+ }
1813
+
1814
+ export interface AggregateQueryNode {
1815
+ input: QueryNodeId;
1816
+ resultBinding: ValueBindingId;
1817
+ resultShape: QualifiedShapeId;
1818
+ groupings: QueryGrouping[];
1819
+ aggregates: QueryAggregateAssignment[];
1820
+ id: QueryNodeId;
1821
+ }
1822
+
1823
+ export interface OrderQueryNode {
1824
+ id: QueryNodeId;
1825
+ input: QueryNodeId;
1826
+ orderings: QueryOrdering[];
1827
+ }
1828
+
1829
+ export interface PageQueryNode {
1830
+ id: QueryNodeId;
1831
+ input: QueryNodeId;
1832
+ page: QueryPageDefinition;
1833
+ }
1834
+
1835
+ export interface QueryParameterDefinition {
1836
+ id: QueryParameterId;
1837
+ type: TypeRef;
1838
+ presence: FieldPresence;
1839
+ defaultKind: QueryParameterDefaultKind;
1840
+ defaultValue?: unknown | null;
1841
+ }
1842
+
1843
+ export interface RelationDraftAssignmentSlot {
1844
+ id: QueryAssignmentId;
1845
+ target: FieldPath;
1846
+ candidates: RelationDraftCandidate[];
1847
+ resolution: RelationDraftAssignmentResolution;
1848
+ }
1849
+
1850
+ export type UnaryOperator = 'Not';
188
1851
 
189
1852
  export const unaryOperators = {
190
- not: 0,
1853
+ not: 'Not',
191
1854
  } as const satisfies Record<string, UnaryOperator>;
192
1855
 
193
1856
  export const unaryOperatorLabels: Record<UnaryOperator, string> = {
194
- 0: 'Not',
1857
+ Not: 'Not',
195
1858
  };
196
1859
 
197
- export type BinaryOperator = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
1860
+ export type BinaryOperator = 'Eq' | 'Ne' | 'Gt' | 'Ge' | 'Lt' | 'Le' | 'And' | 'Or' | 'Add' | 'Sub' | 'Mul' | 'Div';
198
1861
 
199
1862
  export const binaryOperators = {
200
- eq: 0,
201
- ne: 1,
202
- gt: 2,
203
- ge: 3,
204
- lt: 4,
205
- le: 5,
206
- and: 6,
207
- or: 7,
208
- add: 8,
209
- sub: 9,
210
- mul: 10,
211
- div: 11,
1863
+ eq: 'Eq',
1864
+ ne: 'Ne',
1865
+ gt: 'Gt',
1866
+ ge: 'Ge',
1867
+ lt: 'Lt',
1868
+ le: 'Le',
1869
+ and: 'And',
1870
+ or: 'Or',
1871
+ add: 'Add',
1872
+ sub: 'Sub',
1873
+ mul: 'Mul',
1874
+ div: 'Div',
212
1875
  } as const satisfies Record<string, BinaryOperator>;
213
1876
 
214
1877
  export const binaryOperatorLabels: Record<BinaryOperator, string> = {
215
- 0: 'Eq',
216
- 1: 'Ne',
217
- 2: 'Gt',
218
- 3: 'Ge',
219
- 4: 'Lt',
220
- 5: 'Le',
221
- 6: 'And',
222
- 7: 'Or',
223
- 8: 'Add',
224
- 9: 'Sub',
225
- 10: 'Mul',
226
- 11: 'Div',
1878
+ Eq: 'Eq',
1879
+ Ne: 'Ne',
1880
+ Gt: 'Gt',
1881
+ Ge: 'Ge',
1882
+ Lt: 'Lt',
1883
+ Le: 'Le',
1884
+ And: 'And',
1885
+ Or: 'Or',
1886
+ Add: 'Add',
1887
+ Sub: 'Sub',
1888
+ Mul: 'Mul',
1889
+ Div: 'Div',
227
1890
  };
228
1891
 
229
1892
  export type TypeRef = {
@@ -247,328 +1910,881 @@ export type TypeRef = {
247
1910
  } & JsonTypeRef;
248
1911
 
249
1912
  export interface NamedTypeRef {
250
- TypeId: TypeId;
1913
+ typeId: TypeId;
251
1914
  }
252
1915
 
253
1916
  export interface OpaqueRuntimeTypeRef {
254
- RuntimeType: string;
1917
+ runtimeType: string;
1918
+ inferenceDiagnostic?: TypeInferenceDiagnostic | null;
255
1919
  }
256
1920
 
257
1921
  export interface ScalarTypeRef {
258
- Kind: ScalarTypeKind;
259
- Format: PrimitiveFormat;
1922
+ kind: ScalarTypeKind;
1923
+ format: PrimitiveFormat;
260
1924
  }
261
1925
 
262
1926
  export interface EnumTypeRef {
263
- Name: string;
264
- Members: string[];
1927
+ name: string;
1928
+ members: string[];
265
1929
  }
266
1930
 
267
1931
  export interface EntityReferenceTypeRef {
268
- Entity: EntityTypeName;
1932
+ entity: EntityTypeName;
269
1933
  }
270
1934
 
271
1935
  export interface ArrayTypeRef {
272
- ElementType: TypeRef;
1936
+ elementType: TypeRef;
273
1937
  }
274
1938
 
275
1939
  export interface ObjectTypeRef {
276
- Fields: ObjectFieldTypeDef[];
1940
+ fields: ObjectFieldTypeDef[];
277
1941
  }
278
1942
 
279
1943
  export interface QuantityTypeRef {
280
- Quantity: string;
281
- BaseKind: ScalarTypeKind;
1944
+ quantity: string;
1945
+ baseKind: ScalarTypeKind;
282
1946
  }
283
1947
 
284
1948
  export interface JsonTypeRef {
285
- Kind: JsonTypeKind;
1949
+ kind: JsonTypeKind;
286
1950
  }
287
1951
 
288
- export type AggregateOperator = 0 | 1 | 2 | 3 | 4 | 5;
1952
+ export type AggregateOperator = 'Count' | 'Sum' | 'Min' | 'Max' | 'Any' | 'All' | 'Average';
289
1953
 
290
1954
  export const aggregateOperators = {
291
- count: 0,
292
- sum: 1,
293
- min: 2,
294
- max: 3,
295
- any: 4,
296
- all: 5,
1955
+ count: 'Count',
1956
+ sum: 'Sum',
1957
+ min: 'Min',
1958
+ max: 'Max',
1959
+ any: 'Any',
1960
+ all: 'All',
1961
+ average: 'Average',
297
1962
  } as const satisfies Record<string, AggregateOperator>;
298
1963
 
299
1964
  export const aggregateOperatorLabels: Record<AggregateOperator, string> = {
300
- 0: 'Count',
301
- 1: 'Sum',
302
- 2: 'Min',
303
- 3: 'Max',
304
- 4: 'Any',
305
- 5: 'All',
1965
+ Count: 'Count',
1966
+ Sum: 'Sum',
1967
+ Min: 'Min',
1968
+ Max: 'Max',
1969
+ Any: 'Any',
1970
+ All: 'All',
1971
+ Average: 'Average',
1972
+ };
1973
+
1974
+ export type EntityId = string;
1975
+
1976
+ export type QueryAssignmentId = string;
1977
+
1978
+ export type RelationDraftCandidateId = string;
1979
+
1980
+ export type QueryResultId = string;
1981
+
1982
+ export type RelationshipId = string;
1983
+
1984
+ export type RelationshipTargetKey = {
1985
+ readonly $targetKey: 'observationIdentity';
1986
+ } & ObservationIdentityRelationshipTargetKey;
1987
+
1988
+ export type ObservationIdentityRelationshipTargetKey = Record<never, never>;
1989
+
1990
+ export type SourceReferenceUniqueness = 'NotGuaranteed' | 'GloballyUnique';
1991
+
1992
+ export const sourceReferenceUniquenesses = {
1993
+ notGuaranteed: 'NotGuaranteed',
1994
+ globallyUnique: 'GloballyUnique',
1995
+ } as const satisfies Record<string, SourceReferenceUniqueness>;
1996
+
1997
+ export const sourceReferenceUniquenessLabels: Record<SourceReferenceUniqueness, string> = {
1998
+ NotGuaranteed: 'NotGuaranteed',
1999
+ GloballyUnique: 'GloballyUnique',
2000
+ };
2001
+
2002
+ export interface RelationQueryLogicalPlanNode {
2003
+ node: QueryNodeId;
2004
+ inputs: RelationQueryLogicalPlanInput[];
2005
+ effectiveInputs: QueryNodeId[];
2006
+ }
2007
+
2008
+ export interface RelationQueryExplainRequirementInput {
2009
+ id: RelationQueryInputId;
2010
+ kind: RelationQueryExplainRequirementInputKind;
2011
+ }
2012
+
2013
+ export interface RelationQueryOutputReference {
2014
+ id: RelationQueryOutputId;
2015
+ kind: RelationQueryOutputReferenceKind;
2016
+ node: QueryNodeId;
2017
+ shape: QualifiedShapeId;
2018
+ relation?: RelationId | null;
2019
+ queryResult?: QueryResultId | null;
2020
+ field?: RelationQueryFieldReference | null;
2021
+ }
2022
+
2023
+ export interface RelationQueryExplainRequirementEdge {
2024
+ input: RelationQueryInputId;
2025
+ output: RelationQueryOutputId;
2026
+ effect: RelationQueryRequirementEffect;
2027
+ requirement: QueryInputRequirement;
2028
+ }
2029
+
2030
+ export type RelationQueryNativeResultKind = 'RelationRows' | 'QueryRows' | 'QueryAggregation';
2031
+
2032
+ export const relationQueryNativeResultKinds = {
2033
+ relationRows: 'RelationRows',
2034
+ queryRows: 'QueryRows',
2035
+ queryAggregation: 'QueryAggregation',
2036
+ } as const satisfies Record<string, RelationQueryNativeResultKind>;
2037
+
2038
+ export const relationQueryNativeResultKindLabels: Record<RelationQueryNativeResultKind, string> = {
2039
+ RelationRows: 'RelationRows',
2040
+ QueryRows: 'QueryRows',
2041
+ QueryAggregation: 'QueryAggregation',
306
2042
  };
307
2043
 
308
- export interface MappingId {
309
- Value: string;
2044
+ export interface RelationQueryFieldReference {
2045
+ shape: QualifiedShapeId;
2046
+ path: FieldPath;
2047
+ }
2048
+
2049
+ export interface RelationQueryNativeArtifactFingerprintReference {
2050
+ algorithm: string;
2051
+ canonicalization: string;
2052
+ value: string;
310
2053
  }
311
2054
 
312
- export interface MappingName {
313
- Value: string;
2055
+ export interface RelationQueryNativeCompilationProvenance {
2056
+ plan: RelationQueryCompiledPlanReference;
2057
+ branch: RelationQueryNativeResultBranchId;
2058
+ target: RelationQueryTargetId;
2059
+ targetProfile: RelationQueryTargetProfileId;
2060
+ realization: RelationQueryRealizationFingerprint;
2061
+ boundRealization: RelationQueryBoundRealizationFingerprint;
2062
+ placement: RelationQuerySourcePlacementFingerprint;
2063
+ adapterBinding: RelationQueryAdapterBindingReference;
2064
+ contextEvidence: RelationQueryContextEvidenceId[];
2065
+ compilerProfile: string;
2066
+ conventionSetVersion: string;
2067
+ coveredNodes: QueryNodeId[];
2068
+ coveredAssignments: QueryAssignmentId[];
2069
+ inputFields: RelationQueryInputId[];
2070
+ realizationDecisions: RelationQueryNativeCompilationDecisionReference[];
2071
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
2072
+ operatingBoundaries: RelationQueryOperatingBoundaryId[];
314
2073
  }
315
2074
 
316
- export type MappingKind = 0 | 1;
2075
+ export type RelationQueryExecutionResultKind = 'Rows' | 'Aggregation';
2076
+
2077
+ export const relationQueryExecutionResultKinds = {
2078
+ rows: 'Rows',
2079
+ aggregation: 'Aggregation',
2080
+ } as const satisfies Record<string, RelationQueryExecutionResultKind>;
2081
+
2082
+ export const relationQueryExecutionResultKindLabels: Record<RelationQueryExecutionResultKind, string> = {
2083
+ Rows: 'Rows',
2084
+ Aggregation: 'Aggregation',
2085
+ };
2086
+
2087
+ export type RelationQueryExecutionOutputState = 'Complete' | 'Suppressed' | 'Incomplete';
2088
+
2089
+ export const relationQueryExecutionOutputStates = {
2090
+ complete: 'Complete',
2091
+ suppressed: 'Suppressed',
2092
+ incomplete: 'Incomplete',
2093
+ } as const satisfies Record<string, RelationQueryExecutionOutputState>;
2094
+
2095
+ export const relationQueryExecutionOutputStateLabels: Record<RelationQueryExecutionOutputState, string> = {
2096
+ Complete: 'Complete',
2097
+ Suppressed: 'Suppressed',
2098
+ Incomplete: 'Incomplete',
2099
+ };
2100
+
2101
+ export type RelationRequirementGapCause = 'InputNotProvided' | 'InputAcquisitionFailed' | 'ObservationIdentityMissing' | 'ReferenceFieldNotLoaded' | 'ReferenceValueMissing' | 'ReferenceValueNull' | 'ResolutionNotAttempted' | 'ResolutionFailed' | 'RelatedObservationNotFound' | 'RelatedObservationRejected' | 'RequiredFieldNotLoaded' | 'RequiredValueMissing' | 'RequiredValueNull' | 'CapabilityUnavailable' | 'CardinalityViolation' | 'ConversionFailure' | 'InputAcquisitionInconclusive';
2102
+
2103
+ export const relationRequirementGapCauses = {
2104
+ inputNotProvided: 'InputNotProvided',
2105
+ inputAcquisitionFailed: 'InputAcquisitionFailed',
2106
+ observationIdentityMissing: 'ObservationIdentityMissing',
2107
+ referenceFieldNotLoaded: 'ReferenceFieldNotLoaded',
2108
+ referenceValueMissing: 'ReferenceValueMissing',
2109
+ referenceValueNull: 'ReferenceValueNull',
2110
+ resolutionNotAttempted: 'ResolutionNotAttempted',
2111
+ resolutionFailed: 'ResolutionFailed',
2112
+ relatedObservationNotFound: 'RelatedObservationNotFound',
2113
+ relatedObservationRejected: 'RelatedObservationRejected',
2114
+ requiredFieldNotLoaded: 'RequiredFieldNotLoaded',
2115
+ requiredValueMissing: 'RequiredValueMissing',
2116
+ requiredValueNull: 'RequiredValueNull',
2117
+ capabilityUnavailable: 'CapabilityUnavailable',
2118
+ cardinalityViolation: 'CardinalityViolation',
2119
+ conversionFailure: 'ConversionFailure',
2120
+ inputAcquisitionInconclusive: 'InputAcquisitionInconclusive',
2121
+ } as const satisfies Record<string, RelationRequirementGapCause>;
2122
+
2123
+ export const relationRequirementGapCauseLabels: Record<RelationRequirementGapCause, string> = {
2124
+ InputNotProvided: 'InputNotProvided',
2125
+ InputAcquisitionFailed: 'InputAcquisitionFailed',
2126
+ ObservationIdentityMissing: 'ObservationIdentityMissing',
2127
+ ReferenceFieldNotLoaded: 'ReferenceFieldNotLoaded',
2128
+ ReferenceValueMissing: 'ReferenceValueMissing',
2129
+ ReferenceValueNull: 'ReferenceValueNull',
2130
+ ResolutionNotAttempted: 'ResolutionNotAttempted',
2131
+ ResolutionFailed: 'ResolutionFailed',
2132
+ RelatedObservationNotFound: 'RelatedObservationNotFound',
2133
+ RelatedObservationRejected: 'RelatedObservationRejected',
2134
+ RequiredFieldNotLoaded: 'RequiredFieldNotLoaded',
2135
+ RequiredValueMissing: 'RequiredValueMissing',
2136
+ RequiredValueNull: 'RequiredValueNull',
2137
+ CapabilityUnavailable: 'CapabilityUnavailable',
2138
+ CardinalityViolation: 'CardinalityViolation',
2139
+ ConversionFailure: 'ConversionFailure',
2140
+ InputAcquisitionInconclusive: 'InputAcquisitionInconclusive',
2141
+ };
2142
+
2143
+ export type RelationRequirementGapResolutionKind = 'ProvideInput' | 'LoadField' | 'ProvideReferenceValue' | 'ResolveRelationship' | 'RetryAcquisition' | 'ProvideRelatedObservation' | 'CorrectCardinality' | 'ProvideValue' | 'ProvideCapability' | 'CorrectConversion';
2144
+
2145
+ export const relationRequirementGapResolutionKinds = {
2146
+ provideInput: 'ProvideInput',
2147
+ loadField: 'LoadField',
2148
+ provideReferenceValue: 'ProvideReferenceValue',
2149
+ resolveRelationship: 'ResolveRelationship',
2150
+ retryAcquisition: 'RetryAcquisition',
2151
+ provideRelatedObservation: 'ProvideRelatedObservation',
2152
+ correctCardinality: 'CorrectCardinality',
2153
+ provideValue: 'ProvideValue',
2154
+ provideCapability: 'ProvideCapability',
2155
+ correctConversion: 'CorrectConversion',
2156
+ } as const satisfies Record<string, RelationRequirementGapResolutionKind>;
2157
+
2158
+ export const relationRequirementGapResolutionKindLabels: Record<RelationRequirementGapResolutionKind, string> = {
2159
+ ProvideInput: 'ProvideInput',
2160
+ LoadField: 'LoadField',
2161
+ ProvideReferenceValue: 'ProvideReferenceValue',
2162
+ ResolveRelationship: 'ResolveRelationship',
2163
+ RetryAcquisition: 'RetryAcquisition',
2164
+ ProvideRelatedObservation: 'ProvideRelatedObservation',
2165
+ CorrectCardinality: 'CorrectCardinality',
2166
+ ProvideValue: 'ProvideValue',
2167
+ ProvideCapability: 'ProvideCapability',
2168
+ CorrectConversion: 'CorrectConversion',
2169
+ };
2170
+
2171
+ export type SegmentKind = 'Field' | 'Element';
317
2172
 
318
- export const mappingKinds = {
319
- relation: 0,
320
- object: 1,
321
- } as const satisfies Record<string, MappingKind>;
2173
+ export const segmentKinds = {
2174
+ field: 'Field',
2175
+ element: 'Element',
2176
+ } as const satisfies Record<string, SegmentKind>;
322
2177
 
323
- export const mappingKindLabels: Record<MappingKind, string> = {
324
- 0: 'Relation',
325
- 1: 'Object',
2178
+ export const segmentKindLabels: Record<SegmentKind, string> = {
2179
+ Field: 'Field',
2180
+ Element: 'Element',
326
2181
  };
327
2182
 
328
- export interface FieldAssignment {
329
- Id?: string | null;
330
- TargetField: string;
331
- Expr: Expr;
2183
+ export type RelationQueryOutputReferenceKind = 'Relation' | 'QueryResult';
2184
+
2185
+ export const relationQueryOutputReferenceKinds = {
2186
+ relation: 'Relation',
2187
+ queryResult: 'QueryResult',
2188
+ } as const satisfies Record<string, RelationQueryOutputReferenceKind>;
2189
+
2190
+ export const relationQueryOutputReferenceKindLabels: Record<RelationQueryOutputReferenceKind, string> = {
2191
+ Relation: 'Relation',
2192
+ QueryResult: 'QueryResult',
2193
+ };
2194
+
2195
+ export interface RelationQueryRealizationTraceStep {
2196
+ kind: RelationQueryRealizationTraceStepKind;
2197
+ node: QueryNodeId;
2198
+ siteKind?: RelationQueryExpressionSiteKind | null;
2199
+ expressionSite?: ExprSiteId | null;
2200
+ assignment?: QueryAssignmentId | null;
2201
+ ordinal?: number | null;
2202
+ invariantName?: string | null;
332
2203
  }
333
2204
 
334
- export type MappingScope = 0 | 1;
2205
+ export type RelationshipTraversalDirection = 'Forward' | 'Inverse';
335
2206
 
336
- export const mappingScopes = {
337
- rooted: 0,
338
- set: 1,
339
- } as const satisfies Record<string, MappingScope>;
2207
+ export const relationshipTraversalDirections = {
2208
+ forward: 'Forward',
2209
+ inverse: 'Inverse',
2210
+ } as const satisfies Record<string, RelationshipTraversalDirection>;
340
2211
 
341
- export const mappingScopeLabels: Record<MappingScope, string> = {
342
- 0: 'Rooted',
343
- 1: 'Set',
2212
+ export const relationshipTraversalDirectionLabels: Record<RelationshipTraversalDirection, string> = {
2213
+ Forward: 'Forward',
2214
+ Inverse: 'Inverse',
344
2215
  };
345
2216
 
346
- export type MappingDirection = 0 | 1 | 2;
2217
+ export type JoinKind = 'Inner' | 'Left' | 'Right' | 'Full';
347
2218
 
348
- export const mappingDirections = {
349
- sourceToTarget: 0,
350
- targetToSource: 1,
351
- bidirectional: 2,
352
- } as const satisfies Record<string, MappingDirection>;
2219
+ export const joinKinds = {
2220
+ inner: 'Inner',
2221
+ left: 'Left',
2222
+ right: 'Right',
2223
+ full: 'Full',
2224
+ } as const satisfies Record<string, JoinKind>;
353
2225
 
354
- export const mappingDirectionLabels: Record<MappingDirection, string> = {
355
- 0: 'SourceToTarget',
356
- 1: 'TargetToSource',
357
- 2: 'Bidirectional',
2226
+ export const joinKindLabels: Record<JoinKind, string> = {
2227
+ Inner: 'Inner',
2228
+ Left: 'Left',
2229
+ Right: 'Right',
2230
+ Full: 'Full',
358
2231
  };
359
2232
 
360
- export interface NestedMapping {
361
- Source: FieldPath;
362
- Target: FieldPath;
363
- NestedMappingId: MappingId;
2233
+ export type TemporalJoinMatch = {
2234
+ readonly $temporalMatch: 'pointInInterval';
2235
+ } & TemporalPointInIntervalMatch | {
2236
+ readonly $temporalMatch: 'intervalOverlap';
2237
+ } & TemporalIntervalOverlapMatch;
2238
+
2239
+ export interface TemporalPointInIntervalMatch {
2240
+ point: Expr;
2241
+ interval: TemporalInterval;
364
2242
  }
365
2243
 
366
- export interface CollectionMapping {
367
- SourceCollection: FieldPath;
368
- TargetCollection: FieldPath;
369
- ItemMappingId: MappingId;
2244
+ export interface TemporalIntervalOverlapMatch {
2245
+ left: TemporalInterval;
2246
+ right: TemporalInterval;
370
2247
  }
371
2248
 
372
- export interface MappingMetadata {
373
- AllowCodegen: boolean;
374
- Deterministic: boolean;
375
- TransportMapping: boolean;
376
- ExecutionPreference: MappingExecutionPreference;
377
- Hints: ({
378
- Key: string;
379
- Value: string;
380
- })[];
2249
+ export interface ProjectionAssignment {
2250
+ id: QueryAssignmentId;
2251
+ target: FieldPath;
2252
+ value: Expr;
381
2253
  }
382
2254
 
383
- export type MaterializationStrategy = 0 | 1 | 2 | 3;
2255
+ export interface QueryGrouping {
2256
+ id: QueryAssignmentId;
2257
+ target: FieldPath;
2258
+ key: Expr;
2259
+ }
2260
+
2261
+ export interface QueryAggregateAssignment {
2262
+ id: QueryAssignmentId;
2263
+ target: FieldPath;
2264
+ operation: AggregateOperator;
2265
+ value?: Expr | null;
2266
+ filter?: Expr | null;
2267
+ }
2268
+
2269
+ export interface QueryOrdering {
2270
+ key: Expr;
2271
+ direction: QuerySortDirection;
2272
+ nullPlacement: QueryNullPlacement;
2273
+ }
2274
+
2275
+ export type QueryPageDefinition = {
2276
+ readonly $page: 'offset';
2277
+ } & OffsetPageDefinition | {
2278
+ readonly $page: 'keyset';
2279
+ } & KeysetPageDefinition;
384
2280
 
385
- export const materializationStrategies = {
386
- onDemand: 0,
387
- asyncIndex: 1,
388
- changeFeed: 2,
389
- snapshot: 3,
390
- } as const satisfies Record<string, MaterializationStrategy>;
2281
+ export interface OffsetPageDefinition {
2282
+ offset: number;
2283
+ limit: number;
2284
+ }
391
2285
 
392
- export const materializationStrategyLabels: Record<MaterializationStrategy, string> = {
393
- 0: 'OnDemand',
394
- 1: 'AsyncIndex',
395
- 2: 'ChangeFeed',
396
- 3: 'Snapshot',
2286
+ export interface KeysetPageDefinition {
2287
+ after: Expr[];
2288
+ limit: number;
2289
+ }
2290
+
2291
+ export type QueryParameterId = string;
2292
+
2293
+ export type FieldPresence = 'Required' | 'Optional';
2294
+
2295
+ export const fieldPresences = {
2296
+ required: 'Required',
2297
+ optional: 'Optional',
2298
+ } as const satisfies Record<string, FieldPresence>;
2299
+
2300
+ export const fieldPresenceLabels: Record<FieldPresence, string> = {
2301
+ Required: 'Required',
2302
+ Optional: 'Optional',
397
2303
  };
398
2304
 
399
- export type FreshnessPolicy = 0 | 1 | 2;
2305
+ export type QueryParameterDefaultKind = 'None' | 'Value';
400
2306
 
401
- export const freshnessPolicies = {
402
- strong: 0,
403
- eventual: 1,
404
- boundedStaleness: 2,
405
- } as const satisfies Record<string, FreshnessPolicy>;
2307
+ export const queryParameterDefaultKinds = {
2308
+ none: 'None',
2309
+ value: 'Value',
2310
+ } as const satisfies Record<string, QueryParameterDefaultKind>;
406
2311
 
407
- export const freshnessPolicyLabels: Record<FreshnessPolicy, string> = {
408
- 0: 'Strong',
409
- 1: 'Eventual',
410
- 2: 'BoundedStaleness',
2312
+ export const queryParameterDefaultKindLabels: Record<QueryParameterDefaultKind, string> = {
2313
+ None: 'None',
2314
+ Value: 'Value',
411
2315
  };
412
2316
 
413
- export interface FieldPathSegment {
414
- Kind: SegmentKind;
415
- Segment?: string | null;
2317
+ export interface RelationDraftCandidate {
2318
+ id: RelationDraftCandidateId;
2319
+ value: Expr;
2320
+ }
2321
+
2322
+ export type RelationDraftAssignmentResolution = {
2323
+ readonly $resolution: 'selected';
2324
+ } & SelectedRelationDraftAssignmentResolution | {
2325
+ readonly $resolution: 'omitted';
2326
+ } & OmittedRelationDraftAssignmentResolution | {
2327
+ readonly $resolution: 'unresolved';
2328
+ } & UnresolvedRelationDraftAssignmentResolution | {
2329
+ readonly $resolution: 'ambiguous';
2330
+ } & AmbiguousRelationDraftAssignmentResolution;
2331
+
2332
+ export interface SelectedRelationDraftAssignmentResolution {
2333
+ candidateId: RelationDraftCandidateId;
2334
+ }
2335
+
2336
+ export type OmittedRelationDraftAssignmentResolution = Record<never, never>;
2337
+
2338
+ export interface UnresolvedRelationDraftAssignmentResolution {
2339
+ reasons: RelationDraftUnresolvedReason[];
416
2340
  }
417
2341
 
418
- export interface TypeId {
419
- Value: string;
2342
+ export interface AmbiguousRelationDraftAssignmentResolution {
2343
+ candidateIds: RelationDraftCandidateId[];
420
2344
  }
421
2345
 
422
- export type ScalarTypeKind = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
2346
+ export type TypeId = string;
2347
+
2348
+ export interface TypeInferenceDiagnostic {
2349
+ reason: string;
2350
+ message?: string | null;
2351
+ }
2352
+
2353
+ export type ScalarTypeKind = 'Bool' | 'Int32' | 'Int64' | 'Decimal' | 'String' | 'Guid' | 'Date' | 'DateTime' | 'Instant' | 'Bytes';
423
2354
 
424
2355
  export const scalarTypeKinds = {
425
- bool: 0,
426
- int32: 1,
427
- int64: 2,
428
- decimal: 3,
429
- string: 4,
430
- guid: 5,
431
- date: 6,
432
- dateTime: 7,
433
- instant: 8,
434
- bytes: 9,
2356
+ bool: 'Bool',
2357
+ int32: 'Int32',
2358
+ int64: 'Int64',
2359
+ decimal: 'Decimal',
2360
+ string: 'String',
2361
+ guid: 'Guid',
2362
+ date: 'Date',
2363
+ dateTime: 'DateTime',
2364
+ instant: 'Instant',
2365
+ bytes: 'Bytes',
435
2366
  } as const satisfies Record<string, ScalarTypeKind>;
436
2367
 
437
2368
  export const scalarTypeKindLabels: Record<ScalarTypeKind, string> = {
438
- 0: 'Bool',
439
- 1: 'Int32',
440
- 2: 'Int64',
441
- 3: 'Decimal',
442
- 4: 'String',
443
- 5: 'Guid',
444
- 6: 'Date',
445
- 7: 'DateTime',
446
- 8: 'Instant',
447
- 9: 'Bytes',
2369
+ Bool: 'Bool',
2370
+ Int32: 'Int32',
2371
+ Int64: 'Int64',
2372
+ Decimal: 'Decimal',
2373
+ String: 'String',
2374
+ Guid: 'Guid',
2375
+ Date: 'Date',
2376
+ DateTime: 'DateTime',
2377
+ Instant: 'Instant',
2378
+ Bytes: 'Bytes',
448
2379
  };
449
2380
 
450
- export type PrimitiveFormat = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
2381
+ export type PrimitiveFormat = 'None' | 'Uuid' | 'IsoDate' | 'IsoDateTime' | 'IsoInstant' | 'CurrencyCode' | 'CountryCode' | 'Email' | 'Uri' | 'Base64';
451
2382
 
452
2383
  export const primitiveFormats = {
453
- none: 0,
454
- uuid: 1,
455
- isoDate: 2,
456
- isoDateTime: 3,
457
- isoInstant: 4,
458
- currencyCode: 5,
459
- countryCode: 6,
460
- email: 7,
461
- uri: 8,
462
- base64: 9,
2384
+ none: 'None',
2385
+ uuid: 'Uuid',
2386
+ isoDate: 'IsoDate',
2387
+ isoDateTime: 'IsoDateTime',
2388
+ isoInstant: 'IsoInstant',
2389
+ currencyCode: 'CurrencyCode',
2390
+ countryCode: 'CountryCode',
2391
+ email: 'Email',
2392
+ uri: 'Uri',
2393
+ base64: 'Base64',
463
2394
  } as const satisfies Record<string, PrimitiveFormat>;
464
2395
 
465
2396
  export const primitiveFormatLabels: Record<PrimitiveFormat, string> = {
466
- 0: 'None',
467
- 1: 'Uuid',
468
- 2: 'IsoDate',
469
- 3: 'IsoDateTime',
470
- 4: 'IsoInstant',
471
- 5: 'CurrencyCode',
472
- 6: 'CountryCode',
473
- 7: 'Email',
474
- 8: 'Uri',
475
- 9: 'Base64',
2397
+ None: 'None',
2398
+ Uuid: 'Uuid',
2399
+ IsoDate: 'IsoDate',
2400
+ IsoDateTime: 'IsoDateTime',
2401
+ IsoInstant: 'IsoInstant',
2402
+ CurrencyCode: 'CurrencyCode',
2403
+ CountryCode: 'CountryCode',
2404
+ Email: 'Email',
2405
+ Uri: 'Uri',
2406
+ Base64: 'Base64',
476
2407
  };
477
2408
 
478
- export interface EntityTypeName {
479
- Value: string;
480
- }
2409
+ export type EntityTypeName = string;
481
2410
 
482
2411
  export interface ObjectFieldTypeDef {
483
- Name: string;
484
- Type: TypeRef;
485
- Presence: FieldPresence;
486
- Annotations: ({
487
- Key: AnnotationKey;
488
- Value: AnnotationValue;
489
- })[];
2412
+ name: string;
2413
+ type: TypeRef;
2414
+ cardinality: FieldCardinality;
2415
+ presence: FieldPresence;
2416
+ nullability: FieldNullability;
2417
+ annotations: Record<string, AnnotationValue>;
490
2418
  }
491
2419
 
492
- export type JsonTypeKind = 0 | 1 | 2 | 3 | 4 | 5;
2420
+ export type JsonTypeKind = 'Any' | 'Object' | 'Array' | 'String' | 'Number' | 'Boolean';
493
2421
 
494
2422
  export const jsonTypeKinds = {
495
- any: 0,
496
- object: 1,
497
- array: 2,
498
- string: 3,
499
- number: 4,
500
- boolean: 5,
2423
+ any: 'Any',
2424
+ object: 'Object',
2425
+ array: 'Array',
2426
+ string: 'String',
2427
+ number: 'Number',
2428
+ boolean: 'Boolean',
501
2429
  } as const satisfies Record<string, JsonTypeKind>;
502
2430
 
503
2431
  export const jsonTypeKindLabels: Record<JsonTypeKind, string> = {
504
- 0: 'Any',
505
- 1: 'Object',
506
- 2: 'Array',
507
- 3: 'String',
508
- 4: 'Number',
509
- 5: 'Boolean',
2432
+ Any: 'Any',
2433
+ Object: 'Object',
2434
+ Array: 'Array',
2435
+ String: 'String',
2436
+ Number: 'Number',
2437
+ Boolean: 'Boolean',
510
2438
  };
511
2439
 
512
- export type MappingExecutionPreference = 0 | 1 | 2;
2440
+ export interface RelationQueryLogicalPlanInput {
2441
+ canonicalInput: QueryNodeId;
2442
+ effectiveInput: QueryNodeId;
2443
+ bypasses: RelationQueryLogicalBypass[];
2444
+ }
2445
+
2446
+ export type RelationQueryExplainRequirementInputKind = 'Field' | 'ObservationIdentity' | 'SourceSet' | 'Relationship' | 'Parameter' | 'Capability';
2447
+
2448
+ export const relationQueryExplainRequirementInputKinds = {
2449
+ field: 'Field',
2450
+ observationIdentity: 'ObservationIdentity',
2451
+ sourceSet: 'SourceSet',
2452
+ relationship: 'Relationship',
2453
+ parameter: 'Parameter',
2454
+ capability: 'Capability',
2455
+ } as const satisfies Record<string, RelationQueryExplainRequirementInputKind>;
2456
+
2457
+ export const relationQueryExplainRequirementInputKindLabels: Record<RelationQueryExplainRequirementInputKind, string> = {
2458
+ Field: 'Field',
2459
+ ObservationIdentity: 'ObservationIdentity',
2460
+ SourceSet: 'SourceSet',
2461
+ Relationship: 'Relationship',
2462
+ Parameter: 'Parameter',
2463
+ Capability: 'Capability',
2464
+ };
2465
+
2466
+ export interface RelationQueryNativeCompilationDecisionReference {
2467
+ requirement: RelationQueryRealizationRequirementId;
2468
+ kind: CapabilityRealizationKind;
2469
+ capabilityEvidence: RelationQueryTargetCapabilityEvidenceId[];
2470
+ compositionRules: RelationQueryCompositionRuleId[];
2471
+ override?: RelationQueryRealizationOverrideId | null;
2472
+ operatingBoundaries: RelationQueryOperatingBoundaryId[];
2473
+ preservedGuarantees: RelationQueryGuaranteeCapabilityKind[];
2474
+ }
513
2475
 
514
- export const mappingExecutionPreferences = {
515
- inMemory: 0,
516
- materialized: 1,
517
- codeGenerated: 2,
518
- } as const satisfies Record<string, MappingExecutionPreference>;
2476
+ export type RelationQueryRealizationTraceStepKind = 'Structural' | 'ExpressionSite' | 'AggregateOperation' | 'Terminal';
519
2477
 
520
- export const mappingExecutionPreferenceLabels: Record<MappingExecutionPreference, string> = {
521
- 0: 'InMemory',
522
- 1: 'Materialized',
523
- 2: 'CodeGenerated',
2478
+ export const relationQueryRealizationTraceStepKinds = {
2479
+ structural: 'Structural',
2480
+ expressionSite: 'ExpressionSite',
2481
+ aggregateOperation: 'AggregateOperation',
2482
+ terminal: 'Terminal',
2483
+ } as const satisfies Record<string, RelationQueryRealizationTraceStepKind>;
2484
+
2485
+ export const relationQueryRealizationTraceStepKindLabels: Record<RelationQueryRealizationTraceStepKind, string> = {
2486
+ Structural: 'Structural',
2487
+ ExpressionSite: 'ExpressionSite',
2488
+ AggregateOperation: 'AggregateOperation',
2489
+ Terminal: 'Terminal',
524
2490
  };
525
2491
 
526
- export type SegmentKind = 0 | 2;
2492
+ export type RelationQueryExpressionSiteKind = 'FilterPredicate' | 'JoinPredicate' | 'ExpandCollection' | 'ProjectionAssignmentValue' | 'DistinctKey' | 'AggregateGroupingKey' | 'AggregateAssignmentValue' | 'AggregateAssignmentFilter' | 'OrderKey' | 'KeysetBoundary' | 'RelationOutputKey' | 'RelationInvariant' | 'TemporalJoinCorrelation' | 'TemporalJoinPoint' | 'TemporalJoinIntervalLowerBound' | 'TemporalJoinIntervalUpperBound';
2493
+
2494
+ export const relationQueryExpressionSiteKinds = {
2495
+ filterPredicate: 'FilterPredicate',
2496
+ joinPredicate: 'JoinPredicate',
2497
+ expandCollection: 'ExpandCollection',
2498
+ projectionAssignmentValue: 'ProjectionAssignmentValue',
2499
+ distinctKey: 'DistinctKey',
2500
+ aggregateGroupingKey: 'AggregateGroupingKey',
2501
+ aggregateAssignmentValue: 'AggregateAssignmentValue',
2502
+ aggregateAssignmentFilter: 'AggregateAssignmentFilter',
2503
+ orderKey: 'OrderKey',
2504
+ keysetBoundary: 'KeysetBoundary',
2505
+ relationOutputKey: 'RelationOutputKey',
2506
+ relationInvariant: 'RelationInvariant',
2507
+ temporalJoinCorrelation: 'TemporalJoinCorrelation',
2508
+ temporalJoinPoint: 'TemporalJoinPoint',
2509
+ temporalJoinIntervalLowerBound: 'TemporalJoinIntervalLowerBound',
2510
+ temporalJoinIntervalUpperBound: 'TemporalJoinIntervalUpperBound',
2511
+ } as const satisfies Record<string, RelationQueryExpressionSiteKind>;
2512
+
2513
+ export const relationQueryExpressionSiteKindLabels: Record<RelationQueryExpressionSiteKind, string> = {
2514
+ FilterPredicate: 'FilterPredicate',
2515
+ JoinPredicate: 'JoinPredicate',
2516
+ ExpandCollection: 'ExpandCollection',
2517
+ ProjectionAssignmentValue: 'ProjectionAssignmentValue',
2518
+ DistinctKey: 'DistinctKey',
2519
+ AggregateGroupingKey: 'AggregateGroupingKey',
2520
+ AggregateAssignmentValue: 'AggregateAssignmentValue',
2521
+ AggregateAssignmentFilter: 'AggregateAssignmentFilter',
2522
+ OrderKey: 'OrderKey',
2523
+ KeysetBoundary: 'KeysetBoundary',
2524
+ RelationOutputKey: 'RelationOutputKey',
2525
+ RelationInvariant: 'RelationInvariant',
2526
+ TemporalJoinCorrelation: 'TemporalJoinCorrelation',
2527
+ TemporalJoinPoint: 'TemporalJoinPoint',
2528
+ TemporalJoinIntervalLowerBound: 'TemporalJoinIntervalLowerBound',
2529
+ TemporalJoinIntervalUpperBound: 'TemporalJoinIntervalUpperBound',
2530
+ };
527
2531
 
528
- export const segmentKinds = {
529
- field: 0,
530
- element: 2,
531
- } as const satisfies Record<string, SegmentKind>;
2532
+ export type ExprSiteId = string;
532
2533
 
533
- export const segmentKindLabels: Record<SegmentKind, string> = {
534
- 0: 'Field',
535
- 2: 'Element',
2534
+ export interface TemporalInterval {
2535
+ lower: TemporalIntervalBound;
2536
+ upper: TemporalIntervalBound;
2537
+ }
2538
+
2539
+ export type QuerySortDirection = 'Ascending' | 'Descending';
2540
+
2541
+ export const querySortDirections = {
2542
+ ascending: 'Ascending',
2543
+ descending: 'Descending',
2544
+ } as const satisfies Record<string, QuerySortDirection>;
2545
+
2546
+ export const querySortDirectionLabels: Record<QuerySortDirection, string> = {
2547
+ Ascending: 'Ascending',
2548
+ Descending: 'Descending',
536
2549
  };
537
2550
 
538
- export type FieldPresence = 0 | 1;
2551
+ export type QueryNullPlacement = 'First' | 'Last';
539
2552
 
540
- export const fieldPresences = {
541
- required: 0,
542
- optional: 1,
543
- } as const satisfies Record<string, FieldPresence>;
2553
+ export const queryNullPlacements = {
2554
+ first: 'First',
2555
+ last: 'Last',
2556
+ } as const satisfies Record<string, QueryNullPlacement>;
544
2557
 
545
- export const fieldPresenceLabels: Record<FieldPresence, string> = {
546
- 0: 'Required',
547
- 1: 'Optional',
2558
+ export const queryNullPlacementLabels: Record<QueryNullPlacement, string> = {
2559
+ First: 'First',
2560
+ Last: 'Last',
2561
+ };
2562
+
2563
+ export type RelationDraftUnresolvedReason = 'NoCandidate' | 'IncompatibleType' | 'UnsafeCardinality' | 'UnsafePresence' | 'UnsafeNullability' | 'ConversionRequired' | 'UnsupportedStructure' | 'UnsupportedTransformation' | 'MultipleCandidates';
2564
+
2565
+ export const relationDraftUnresolvedReasons = {
2566
+ noCandidate: 'NoCandidate',
2567
+ incompatibleType: 'IncompatibleType',
2568
+ unsafeCardinality: 'UnsafeCardinality',
2569
+ unsafePresence: 'UnsafePresence',
2570
+ unsafeNullability: 'UnsafeNullability',
2571
+ conversionRequired: 'ConversionRequired',
2572
+ unsupportedStructure: 'UnsupportedStructure',
2573
+ unsupportedTransformation: 'UnsupportedTransformation',
2574
+ multipleCandidates: 'MultipleCandidates',
2575
+ } as const satisfies Record<string, RelationDraftUnresolvedReason>;
2576
+
2577
+ export const relationDraftUnresolvedReasonLabels: Record<RelationDraftUnresolvedReason, string> = {
2578
+ NoCandidate: 'NoCandidate',
2579
+ IncompatibleType: 'IncompatibleType',
2580
+ UnsafeCardinality: 'UnsafeCardinality',
2581
+ UnsafePresence: 'UnsafePresence',
2582
+ UnsafeNullability: 'UnsafeNullability',
2583
+ ConversionRequired: 'ConversionRequired',
2584
+ UnsupportedStructure: 'UnsupportedStructure',
2585
+ UnsupportedTransformation: 'UnsupportedTransformation',
2586
+ MultipleCandidates: 'MultipleCandidates',
2587
+ };
2588
+
2589
+ export type FieldCardinality = 'Single' | 'Many';
2590
+
2591
+ export const fieldCardinalities = {
2592
+ single: 'Single',
2593
+ many: 'Many',
2594
+ } as const satisfies Record<string, FieldCardinality>;
2595
+
2596
+ export const fieldCardinalityLabels: Record<FieldCardinality, string> = {
2597
+ Single: 'Single',
2598
+ Many: 'Many',
2599
+ };
2600
+
2601
+ export type FieldNullability = 'NonNullable' | 'Nullable';
2602
+
2603
+ export const fieldNullabilities = {
2604
+ nonNullable: 'NonNullable',
2605
+ nullable: 'Nullable',
2606
+ } as const satisfies Record<string, FieldNullability>;
2607
+
2608
+ export const fieldNullabilityLabels: Record<FieldNullability, string> = {
2609
+ NonNullable: 'NonNullable',
2610
+ Nullable: 'Nullable',
548
2611
  };
549
2612
 
550
- export interface AnnotationKey {
551
- Value: string;
2613
+ export interface RelationQueryLogicalBypass {
2614
+ kind: RelationQueryLogicalBypassKind;
2615
+ node: QueryNodeId;
2616
+ relationship: RelationshipDefinition;
2617
+ direction: RelationshipTraversalDirection;
2618
+ cardinality: RelationshipTraversalCardinality;
2619
+ from: ValueBindingId;
2620
+ result: ValueBindingId;
552
2621
  }
553
2622
 
554
- export interface AnnotationValue {
555
- Value?: unknown | null;
2623
+ export type CapabilityRealizationKind = 'Native' | 'Composed' | 'Constrained' | 'Override' | 'Unavailable' | 'Unknown';
2624
+
2625
+ export const capabilityRealizationKinds = {
2626
+ native: 'Native',
2627
+ composed: 'Composed',
2628
+ constrained: 'Constrained',
2629
+ override: 'Override',
2630
+ unavailable: 'Unavailable',
2631
+ unknown: 'Unknown',
2632
+ } as const satisfies Record<string, CapabilityRealizationKind>;
2633
+
2634
+ export const capabilityRealizationKindLabels: Record<CapabilityRealizationKind, string> = {
2635
+ Native: 'Native',
2636
+ Composed: 'Composed',
2637
+ Constrained: 'Constrained',
2638
+ Override: 'Override',
2639
+ Unavailable: 'Unavailable',
2640
+ Unknown: 'Unknown',
2641
+ };
2642
+
2643
+ export type TemporalIntervalBound = {
2644
+ readonly $temporalBound: 'unbounded';
2645
+ } & UnboundedTemporalIntervalBound | {
2646
+ readonly $temporalBound: 'expression';
2647
+ } & ExpressionTemporalIntervalBound;
2648
+
2649
+ export type UnboundedTemporalIntervalBound = Record<never, never>;
2650
+
2651
+ export interface ExpressionTemporalIntervalBound {
2652
+ value: Expr;
2653
+ inclusion: TemporalBoundaryInclusion;
2654
+ nullBehavior: TemporalNullBoundBehavior;
556
2655
  }
557
2656
 
2657
+ export type RelationQueryLogicalBypassKind = 'OptionalAtMostOneLeftRelationshipTraversal';
2658
+
2659
+ export const relationQueryLogicalBypassKinds = {
2660
+ optionalAtMostOneLeftRelationshipTraversal: 'OptionalAtMostOneLeftRelationshipTraversal',
2661
+ } as const satisfies Record<string, RelationQueryLogicalBypassKind>;
2662
+
2663
+ export const relationQueryLogicalBypassKindLabels: Record<RelationQueryLogicalBypassKind, string> = {
2664
+ OptionalAtMostOneLeftRelationshipTraversal: 'OptionalAtMostOneLeftRelationshipTraversal',
2665
+ };
2666
+
2667
+ export type RelationshipTraversalCardinality = 'AtMostOne' | 'Many';
2668
+
2669
+ export const relationshipTraversalCardinalities = {
2670
+ atMostOne: 'AtMostOne',
2671
+ many: 'Many',
2672
+ } as const satisfies Record<string, RelationshipTraversalCardinality>;
2673
+
2674
+ export const relationshipTraversalCardinalityLabels: Record<RelationshipTraversalCardinality, string> = {
2675
+ AtMostOne: 'AtMostOne',
2676
+ Many: 'Many',
2677
+ };
2678
+
2679
+ export type TemporalBoundaryInclusion = 'Inclusive' | 'Exclusive';
2680
+
2681
+ export const temporalBoundaryInclusions = {
2682
+ inclusive: 'Inclusive',
2683
+ exclusive: 'Exclusive',
2684
+ } as const satisfies Record<string, TemporalBoundaryInclusion>;
2685
+
2686
+ export const temporalBoundaryInclusionLabels: Record<TemporalBoundaryInclusion, string> = {
2687
+ Inclusive: 'Inclusive',
2688
+ Exclusive: 'Exclusive',
2689
+ };
2690
+
2691
+ export type TemporalNullBoundBehavior = 'Invalid' | 'Unbounded';
2692
+
2693
+ export const temporalNullBoundBehaviors = {
2694
+ invalid: 'Invalid',
2695
+ unbounded: 'Unbounded',
2696
+ } as const satisfies Record<string, TemporalNullBoundBehavior>;
2697
+
2698
+ export const temporalNullBoundBehaviorLabels: Record<TemporalNullBoundBehavior, string> = {
2699
+ Invalid: 'Invalid',
2700
+ Unbounded: 'Unbounded',
2701
+ };
2702
+
558
2703
  export interface QualifiedShapeId {
559
- GraphId: GraphId;
560
- ShapeId: ShapeId;
2704
+ graphId: GraphId;
2705
+ shapeId: ShapeId;
561
2706
  }
562
2707
 
563
- export interface RelationDefinition {
564
- Id: RelationId;
565
- Name: RelationName;
566
- Sources: RelationSource[];
567
- Joins: JoinDefinition[];
568
- Filter?: Expr | null;
569
- BaseRowShapeId?: ShapeId | null;
570
- Mappings: MappingDefinition[];
571
- Materialization?: MaterializationSpec | null;
572
- Metadata: RelationMetadata;
573
- Invariants: InvariantDefinition[];
2708
+ export interface RelationQueryExplainArtifact {
2709
+ schemaVersion: string;
2710
+ stages: RelationQueryExplainStage[];
2711
+ capabilitySummary?: RelationQueryCapabilitySummary | null;
2712
+ diagnostics: RelationQueryExplainDiagnostic[];
2713
+ fingerprint: RelationQueryExplainFingerprint;
2714
+ }
2715
+
2716
+ export interface CompiledRelationQueryPhysicalPlan {
2717
+ schemaVersion: string;
2718
+ plan: RelationQueryCompiledPlanReference;
2719
+ realization: RelationQueryRealizationFingerprint;
2720
+ placement: RelationQuerySourcePlacement;
2721
+ policy: RelationQueryPhysicalPlanningPolicy;
2722
+ stages: RelationQueryPhysicalStage[];
2723
+ evaluationOrder: RelationQueryPhysicalStageId[];
2724
+ terminal: RelationQueryPhysicalStageId;
2725
+ diagnostics: RelationQueryPhysicalPlanningDiagnostic[];
2726
+ fingerprint: RelationQueryPhysicalPlanFingerprint;
2727
+ }
2728
+
2729
+ export interface RelationQuerySourcePlacement {
2730
+ schemaVersion: string;
2731
+ plan: RelationQueryCompiledPlanReference;
2732
+ conventionSetVersion: string;
2733
+ sourceInstances: RelationQuerySourceInstance[];
2734
+ bindings: RelationQuerySourcePlacementBinding[];
2735
+ configurationDecisions: EffectiveConfigurationDecision[];
2736
+ fingerprint: RelationQuerySourcePlacementFingerprint;
2737
+ }
2738
+
2739
+ export interface RelationQueryBoundRealizationReport {
2740
+ profileFeasibility: RelationQueryRealizationReport;
2741
+ placement: RelationQuerySourcePlacementFingerprint;
2742
+ branches: RelationQueryNativeResultBranchId[];
2743
+ evidence: RelationQueryContextualEvidenceProjection;
2744
+ diagnostics: RelationQueryRealizationDiagnostic[];
2745
+ status: RelationQueryRealizationStatus;
2746
+ fingerprint: RelationQueryBoundRealizationFingerprint;
2747
+ }
2748
+
2749
+ export interface RelationQueryRealizationReport {
2750
+ plan: RelationQueryCompiledPlanReference;
2751
+ targetProfile: RelationQueryTargetCapabilityProfile;
2752
+ policy: RelationQueryRealizationPolicy;
2753
+ observability: RelationQueryResultObservability;
2754
+ requirements: RelationQueryRealizationRequirement[];
2755
+ decisions: RelationQueryRealizationDecision[];
2756
+ diagnostics: RelationQueryRealizationDiagnostic[];
2757
+ status: RelationQueryRealizationStatus;
2758
+ fingerprint: RelationQueryRealizationFingerprint;
2759
+ }
2760
+
2761
+ export interface RelationQueryTargetCapabilityProfile {
2762
+ target: RelationQueryTargetId;
2763
+ id: RelationQueryTargetProfileId;
2764
+ supportedDefinitionSchemaVersions: string[];
2765
+ supportedCompilerProfiles: string[];
2766
+ capabilities: RelationQueryTargetCapabilityEvidence[];
2767
+ operatingBoundaries: RelationQueryOperatingBoundary[];
2768
+ description?: string | null;
2769
+ }
2770
+
2771
+ export interface RelationDraftDocument {
2772
+ schemaVersion: string;
2773
+ draft: RelationDraft;
2774
+ draftFingerprint: RelationDraftFingerprint;
2775
+ metadata: RelationDraftDocumentMetadata;
2776
+ }
2777
+
2778
+ export interface RelationQueryDocument {
2779
+ schemaVersion: string;
2780
+ definition: RelationQueryDefinition;
2781
+ definitionFingerprint: RelationQueryDefinitionFingerprint;
2782
+ metadata: RelationQueryDocumentMetadata;
2783
+ }
2784
+
2785
+ export interface RelationshipCatalogDocument {
2786
+ schemaVersion: string;
2787
+ catalog: RelationshipCatalog;
2788
+ catalogFingerprint: RelationshipCatalogFingerprint;
2789
+ metadata: RelationshipCatalogDocumentMetadata;
574
2790
  }