react-semaphor 0.1.381 → 0.1.382

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/DATA_APP_SDK.md +238 -0
  2. package/README.md +7 -0
  3. package/dist/analytics-protocol/index.cjs +1 -1
  4. package/dist/analytics-protocol/index.js +45 -41
  5. package/dist/brand-studio/index.cjs +1 -1
  6. package/dist/brand-studio/index.js +6 -6
  7. package/dist/chunks/analyze-result-contract-CtXfp3nv.js +1 -0
  8. package/dist/chunks/analyze-result-contract-DuhlklhI.js +102 -0
  9. package/dist/chunks/{braces-BT-ZyB-g.js → braces-CGi-YFZp.js} +1 -1
  10. package/dist/chunks/{braces-DOxxfERN.js → braces-CP8BEzl3.js} +1 -1
  11. package/dist/chunks/{calendar-preferences-dialog-Dsgs8WDv.js → calendar-preferences-dialog-CV4xF2Tp.js} +3 -3
  12. package/dist/chunks/{calendar-preferences-dialog-iZs8XqyH.js → calendar-preferences-dialog-rDDobeLo.js} +1 -1
  13. package/dist/chunks/catalog-field-grounding-Bnx-3tE0.js +1 -0
  14. package/dist/chunks/catalog-field-grounding-CJKAqtiC.js +100 -0
  15. package/dist/chunks/{dashboard-briefing-launcher-Coks66cV.js → dashboard-briefing-launcher-BT00MvGB.js} +5 -5
  16. package/dist/chunks/{dashboard-briefing-launcher-B5vPTl8P.js → dashboard-briefing-launcher-Dcbh-mjY.js} +1 -1
  17. package/dist/chunks/{dashboard-controls-BfkcnIdy.js → dashboard-controls-B6y7jkKO.js} +8 -8
  18. package/dist/chunks/{dashboard-controls-Dyqye6fh.js → dashboard-controls-CRqnPibB.js} +1 -1
  19. package/dist/chunks/{dashboard-json-DjXi4cI6.js → dashboard-json-CfIUG8k1.js} +3 -3
  20. package/dist/chunks/{dashboard-json-CV_LnO9x.js → dashboard-json-DEQqRR1x.js} +1 -1
  21. package/dist/chunks/{edit-dashboard-visual-DOW1Ap1N.js → edit-dashboard-visual-DMbf89xa.js} +5 -5
  22. package/dist/chunks/{edit-dashboard-visual-yinO0yU-.js → edit-dashboard-visual-wDOcHak3.js} +1 -1
  23. package/dist/chunks/{index-DlprYjr6.js → index-BAsWLkZ8.js} +169 -168
  24. package/dist/chunks/{index-CkoRCh3g.js → index-CrKxP9uF.js} +5 -5
  25. package/dist/chunks/{layout-grid-DTbOIOsE.js → layout-grid-BsKH3TgY.js} +1 -1
  26. package/dist/chunks/{layout-grid-DccceHv4.js → layout-grid-jJQUqDN9.js} +1 -1
  27. package/dist/chunks/operators-C8TxpM4C.js +48 -0
  28. package/dist/chunks/operators-DrTQsJXv.js +1 -0
  29. package/dist/chunks/{palette-SimHJELn.js → palette-9zLPGlj2.js} +1 -1
  30. package/dist/chunks/{palette-DCzLwqIw.js → palette-xU9Qt6bE.js} +1 -1
  31. package/dist/chunks/{save-D2O96E5A.js → save-8A_q6K4E.js} +1 -1
  32. package/dist/chunks/{save-zNVYH02T.js → save-DzciESDh.js} +1 -1
  33. package/dist/chunks/{source-identity-Dj3dryN9.js → source-identity-CN4xiyKJ.js} +5 -5
  34. package/dist/chunks/{switch-DMPsMpHW.js → switch-DArtNJZh.js} +292 -291
  35. package/dist/chunks/{switch-Jhyl63RF.js → switch-k7kj6NRg.js} +1 -1
  36. package/dist/chunks/{use-create-flow-overlay-state-r5JKyXU8.js → use-create-flow-overlay-state-BdG1DiSx.js} +4 -4
  37. package/dist/chunks/{use-create-flow-overlay-state-NsqFPwdB.js → use-create-flow-overlay-state-ipeaE65_.js} +1 -1
  38. package/dist/chunks/{validators-CtNmgsvG.js → validators-CHPH6ORs.js} +641 -498
  39. package/dist/chunks/validators-lWo8m0Q7.js +1 -0
  40. package/dist/dashboard/index.cjs +1 -1
  41. package/dist/dashboard/index.js +1 -1
  42. package/dist/dashboard-authoring/index.cjs +3 -3
  43. package/dist/dashboard-authoring/index.js +105 -92
  44. package/dist/data-app-builder/index.cjs +1 -1
  45. package/dist/data-app-builder/index.js +3 -3
  46. package/dist/data-app-sdk/index.cjs +1 -1
  47. package/dist/data-app-sdk/index.js +444 -380
  48. package/dist/data-app-sdk-adapters/index.cjs +1 -0
  49. package/dist/data-app-sdk-adapters/index.js +383 -0
  50. package/dist/data-app-sdk-validation/index.cjs +1 -1
  51. package/dist/data-app-sdk-validation/index.js +1073 -6
  52. package/dist/index.cjs +1 -1
  53. package/dist/index.js +7 -7
  54. package/dist/surfboard/index.cjs +1 -1
  55. package/dist/surfboard/index.js +2 -2
  56. package/dist/types/analytics-protocol.d.ts +58 -31
  57. package/dist/types/dashboard-assistant.d.ts +40 -15
  58. package/dist/types/dashboard-authoring.d.ts +36 -16
  59. package/dist/types/dashboard.d.ts +8 -8
  60. package/dist/types/data-app-builder.d.ts +35 -11
  61. package/dist/types/data-app-sdk-adapters.d.ts +733 -0
  62. package/dist/types/data-app-sdk-validation.d.ts +85 -25
  63. package/dist/types/data-app-sdk.d.ts +99 -155
  64. package/dist/types/main.d.ts +35 -11
  65. package/dist/types/shared.d.ts +8 -8
  66. package/dist/types/surfboard.d.ts +8 -8
  67. package/dist/types/types.d.ts +8 -8
  68. package/package.json +9 -2
  69. package/src/data-app-sdk/README.md +240 -0
  70. package/dist/chunks/catalog-field-grounding-8L9I0zdg.js +0 -1
  71. package/dist/chunks/catalog-field-grounding-BK4BX8sZ.js +0 -200
  72. package/dist/chunks/validation-BM3-ShHV.js +0 -1003
  73. package/dist/chunks/validation-BVpqRFar.js +0 -1
  74. package/dist/chunks/validators-jpoYhpHh.js +0 -1
@@ -27,6 +27,14 @@ declare type CalendarContext = {
27
27
  };
28
28
  };
29
29
 
30
+ export declare function fieldWithSelectedProjectionRole(field: SemaphorFieldRef, selectedField?: SemaphorFieldRef): SemaphorFieldRef;
31
+
32
+ export declare function findMatchingRelatedProjectionField(selectedFields: SemaphorFieldRef[], requestedField: SemaphorFieldRef): SemaphorFieldRef | undefined;
33
+
34
+ export declare function isAllowedRelatedProjectionRole(role: SemaphorFieldRef['role'] | undefined, allowedRelatedRoles: SemaphorRelatedProjectionRole[]): role is SemaphorRelatedProjectionRole;
35
+
36
+ export declare function matrixAxisFieldsForPolicy(intent: SemaphorMatrixIntent): SemaphorFieldRef[];
37
+
30
38
  declare type MatrixAxisLevelDescriptor = {
31
39
  instanceId: string;
32
40
  fieldKey: string;
@@ -252,6 +260,12 @@ export declare function normalizeSemaphorAnalysisQueryOptions(value: unknown, op
252
260
  validateTimezone?: SemaphorAnalysisTimezoneValidator;
253
261
  }): SemaphorAnalysisQueryOptionsValidationResult;
254
262
 
263
+ export declare function normalizeSemaphorFieldRole(field: SemaphorFieldRef): SemaphorFieldRef['role'] | undefined;
264
+
265
+ export declare function relatedProjectionFieldCandidatesForIntent(intent: RelationshipAwareProjectionIntent): SemaphorRelatedProjectionFieldCandidate[];
266
+
267
+ declare type RelationshipAwareProjectionIntent = SemaphorRecordsIntent | SemaphorMetricIntent | SemaphorMatrixIntent;
268
+
255
269
  declare type SemaphorAbsoluteTimeWindow = {
256
270
  kind: 'absolute';
257
271
  start: string;
@@ -371,7 +385,7 @@ declare type SemaphorAnalyticsExecutionResult = {
371
385
 
372
386
  declare type SemaphorAnalyticsExecutionStatus = 'answered' | 'partial' | 'failed';
373
387
 
374
- declare type SemaphorAnalyticsFieldRole = 'metric' | 'dateField' | 'dimension' | 'input' | 'source' | 'sql';
388
+ declare type SemaphorAnalyticsFieldRole = 'measure' | 'date' | 'dimension' | 'input' | 'source' | 'sql';
375
389
 
376
390
  declare type SemaphorAnalyticsFilter = SemaphorAnalyticsValueFilter | SemaphorAnalyticsNullFilter;
377
391
 
@@ -401,7 +415,7 @@ declare type SemaphorAnalyticsNullFilterOperator = 'is_null' | 'is_not_null';
401
415
 
402
416
  declare type SemaphorAnalyticsPopulation = {
403
417
  scope: 'filtered_query';
404
- metrics: Record<string, number | string | null>;
418
+ measures: Record<string, number | string | null>;
405
419
  };
406
420
 
407
421
  declare type SemaphorAnalyticsRepairHint = {
@@ -409,7 +423,7 @@ declare type SemaphorAnalyticsRepairHint = {
409
423
  message?: string;
410
424
  invalidField?: string;
411
425
  fieldRole?: SemaphorAnalyticsFieldRole;
412
- validMetricCandidates?: string[];
426
+ validMeasureCandidates?: string[];
413
427
  validDateCandidates?: string[];
414
428
  validDimensionCandidates?: string[];
415
429
  recommendedNextStep: string;
@@ -427,7 +441,7 @@ declare type SemaphorAnalyticsResultBase = {
427
441
  pagination?: SemaphorPaginationMetadata;
428
442
  };
429
443
 
430
- declare type SemaphorAnalyticsValidationCode = 'missing_source' | 'invalid_source_kind' | 'missing_semantic_domain' | 'missing_dataset_name' | 'missing_connection_id' | 'missing_table_name' | 'missing_sql' | 'missing_metric' | 'missing_record_fields' | 'missing_input_options_field' | 'invalid_metric' | 'invalid_metric_list' | 'invalid_date_field' | 'invalid_dimension' | 'invalid_metric_dimensions' | 'conflicting_sql' | 'sql_policy_violation' | 'unsupported_intent_for_adapter' | 'invalid_analytics_kind' | 'invalid_analytics_intent';
444
+ declare type SemaphorAnalyticsValidationCode = 'missing_source' | 'invalid_source_kind' | 'missing_semantic_domain' | 'missing_dataset_name' | 'missing_connection_id' | 'missing_table_name' | 'missing_sql' | 'missing_measure' | 'missing_record_fields' | 'missing_input_options_input_id' | 'missing_input_options_label_field' | 'missing_input_options_value_field' | 'invalid_input_options_dependencies' | 'invalid_input_options_population' | 'invalid_measure' | 'invalid_measure_list' | 'invalid_date_field' | 'invalid_dimension' | 'invalid_measure_dimensions' | 'conflicting_sql' | 'sql_policy_violation' | 'unsupported_intent_for_adapter' | 'invalid_analytics_kind' | 'invalid_analytics_intent';
431
445
 
432
446
  declare type SemaphorAnalyticsValidationIssue = SemaphorProtocolIssue & {
433
447
  code: SemaphorAnalyticsValidationCode | string;
@@ -485,7 +499,7 @@ declare type SemaphorControlInputSpec<TValue extends SemaphorInputValue = Semaph
485
499
  role: SemaphorControlRole;
486
500
  };
487
501
 
488
- declare type SemaphorControlRole = 'grain' | 'metric' | 'dimension' | 'aggregation' | 'sqlParam';
502
+ declare type SemaphorControlRole = 'grain' | 'measure' | 'dimension' | 'aggregation' | 'sqlParam';
489
503
 
490
504
  export declare type SemaphorDataAppFieldCatalog = {
491
505
  source: SemaphorSourceRef;
@@ -554,15 +568,9 @@ declare type SemaphorDerivedFieldInput = {
554
568
  kind: 'field';
555
569
  field: SemaphorFieldRef;
556
570
  aggregate?: SemaphorAggregateFunction;
557
- } | {
558
- kind: 'metric';
559
- metric: SemaphorFieldRef;
560
- } | {
561
- kind: 'dimension';
562
- dimension: SemaphorFieldRef;
563
571
  };
564
572
 
565
- declare type SemaphorDerivedFieldResultRole = 'measure' | 'group' | 'date' | 'id' | 'filter';
573
+ declare type SemaphorDerivedFieldResultRole = 'measure' | 'dimension' | 'date' | 'id' | 'unknown';
566
574
 
567
575
  declare type SemaphorDialect = 'postgres' | 'mysql' | 'mssql' | 'snowflake' | 'clickhouse' | 'bigquery' | 'redshift' | 'duckdb' | 'sqlite' | 'unknown';
568
576
 
@@ -593,7 +601,8 @@ declare type SemaphorFieldRef = {
593
601
  declare type SemaphorFilterInputSpec<TValue extends SemaphorInputValue = SemaphorInputValue> = SemaphorInputBase<TValue> & {
594
602
  kind: 'filter';
595
603
  field: SemaphorQueryField;
596
- operator?: SemaphorInputOperatorInput;
604
+ operator?: SemaphorInputOperator;
605
+ relationshipHint?: SemaphorInputBinding['relationshipHint'];
597
606
  multi?: boolean;
598
607
  };
599
608
 
@@ -611,9 +620,14 @@ declare type SemaphorInputBase<TValue extends SemaphorInputValue> = {
611
620
  declare type SemaphorInputBinding = {
612
621
  inputId: string;
613
622
  kind?: 'filter' | 'control';
614
- controlRole?: 'grain' | 'metric' | 'dimension' | 'aggregation' | 'sqlParam';
623
+ controlRole?: 'grain' | 'measure' | 'dimension' | 'aggregation' | 'sqlParam';
615
624
  operator?: SemaphorInputOperator;
616
625
  field?: SemaphorFieldRef;
626
+ relationshipHint?: SemaphorRelationshipHint;
627
+ };
628
+
629
+ declare type SemaphorInputBindingReference<TValue extends SemaphorInputValue = SemaphorInputValue> = {
630
+ toAnalyticsInput(): SemaphorActiveInput<TValue>;
617
631
  };
618
632
 
619
633
  declare type SemaphorInputHandle<TValue extends SemaphorInputValue = SemaphorInputValue> = {
@@ -622,6 +636,7 @@ declare type SemaphorInputHandle<TValue extends SemaphorInputValue = SemaphorInp
622
636
  label?: string;
623
637
  field?: SemaphorFieldRef;
624
638
  operator?: SemaphorInputOperator;
639
+ relationshipHint?: SemaphorInputBinding['relationshipHint'];
625
640
  controlRole?: SemaphorControlRole;
626
641
  value: TValue | undefined;
627
642
  options: SemaphorInputOption[];
@@ -633,14 +648,11 @@ declare type SemaphorInputHandle<TValue extends SemaphorInputValue = SemaphorInp
633
648
 
634
649
  declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
635
650
 
636
- declare type SemaphorInputOperatorAlias = 'eq' | 'equals' | 'not_equals' | 'neq' | 'not equal' | 'not equals' | 'not in' | 'like' | 'not_contains' | 'not contains' | 'not_like' | 'not like' | 'not_between' | 'not between';
637
-
638
- declare type SemaphorInputOperatorInput = SemaphorInputOperator | SemaphorInputOperatorAlias;
639
-
640
651
  declare type SemaphorInputOption = {
641
652
  label: string;
642
653
  value: SemaphorOptionValue;
643
654
  count?: number;
655
+ disambiguation?: string[];
644
656
  };
645
657
 
646
658
  declare type SemaphorInputOptionsIntent = {
@@ -648,10 +660,17 @@ declare type SemaphorInputOptionsIntent = {
648
660
  version?: SemaphorProtocolVersion;
649
661
  id?: string;
650
662
  label?: string;
663
+ inputId: string;
651
664
  source: SemaphorSourceRef;
652
- field: SemaphorFieldRef;
665
+ labelField: SemaphorFieldRef;
666
+ valueField: SemaphorFieldRef;
667
+ searchField?: SemaphorFieldRef;
668
+ disambiguationFields?: SemaphorFieldRef[];
669
+ population?: SemaphorOptionPopulation;
670
+ dependencies?: SemaphorOptionDependencies;
653
671
  search?: string;
654
672
  limit?: number;
673
+ inputs?: SemaphorInputBinding[];
655
674
  derivedFields?: SemaphorDerivedFieldDefinition[];
656
675
  };
657
676
 
@@ -662,7 +681,14 @@ declare type SemaphorInputOptionsQueryDefinition = SemaphorInputOptionsQuerySpec
662
681
  declare type SemaphorInputOptionsQuerySpec = SemaphorQuerySourceSpec & SemaphorAppDerivedFieldsSpec & {
663
682
  id?: string;
664
683
  label?: string;
665
- field: SemaphorQueryField;
684
+ inputId: string;
685
+ labelField: SemaphorQueryField;
686
+ valueField: SemaphorQueryField;
687
+ searchField?: SemaphorQueryField;
688
+ disambiguationFields?: SemaphorQueryField[];
689
+ population?: SemaphorOptionPopulation;
690
+ dependencies?: SemaphorOptionDependencies;
691
+ inputs?: SemaphorInputReference[];
666
692
  search?: string;
667
693
  limit?: number;
668
694
  };
@@ -673,10 +699,11 @@ declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
673
699
  label: string;
674
700
  value: unknown;
675
701
  count?: number;
702
+ disambiguation?: string[];
676
703
  }>;
677
704
  };
678
705
 
679
- declare type SemaphorInputReference = SemaphorInputSpec | SemaphorInputBinding | SemaphorActiveInput | SemaphorInputHandle;
706
+ declare type SemaphorInputReference = SemaphorInputSpec | SemaphorInputBinding | SemaphorActiveInput | SemaphorInputHandle | SemaphorInputBindingReference;
680
707
 
681
708
  declare type SemaphorInputSpec<TValue extends SemaphorInputValue = SemaphorInputValue> = SemaphorFilterInputSpec<TValue> | SemaphorControlInputSpec<TValue>;
682
709
 
@@ -742,6 +769,7 @@ declare type SemaphorMatrixIntent = {
742
769
  values: SemaphorMatrixValueField[];
743
770
  filters?: SemaphorAnalyticsFilter[];
744
771
  inputs?: SemaphorInputBinding[];
772
+ relationshipHint?: SemaphorRelationshipHint;
745
773
  totals?: SemaphorMatrixTotalOptions;
746
774
  sort?: SemaphorMatrixSortRule[];
747
775
  expansion?: SemaphorMatrixExpansionOptions;
@@ -890,8 +918,8 @@ declare type SemaphorMetricIntent = {
890
918
  version?: SemaphorProtocolVersion;
891
919
  id?: string;
892
920
  source: SemaphorSourceRef;
893
- metrics: SemaphorFieldRef[];
894
- primaryMetric?: SemaphorFieldRef;
921
+ measures: SemaphorFieldRef[];
922
+ primaryMeasure?: SemaphorFieldRef;
895
923
  label?: string;
896
924
  dateField?: SemaphorFieldRef;
897
925
  timeGrain?: SemaphorTimeGrain;
@@ -908,6 +936,7 @@ declare type SemaphorMetricIntent = {
908
936
  direction: 'asc' | 'desc';
909
937
  };
910
938
  inputs?: SemaphorInputBinding[];
939
+ relationshipHint?: SemaphorRelationshipHint;
911
940
  limit?: number;
912
941
  derivedFields?: SemaphorDerivedFieldDefinition[];
913
942
  };
@@ -919,14 +948,15 @@ declare type SemaphorMetricQueryDefinition = SemaphorMetricQuerySpec & {
919
948
  declare type SemaphorMetricQuerySpec = SemaphorQuerySourceSpec & SemaphorAppDerivedFieldsSpec & {
920
949
  id?: string;
921
950
  label?: string;
922
- metrics: SemaphorNonEmptyArray<SemaphorQueryField>;
923
- primaryMetric?: SemaphorQueryField;
951
+ measures: SemaphorNonEmptyArray<SemaphorQueryField>;
952
+ primaryMeasure?: SemaphorQueryField;
924
953
  dateField?: SemaphorQueryField;
925
954
  timeGrain?: SemaphorTimeGrain;
926
955
  dimensions?: SemaphorQueryField[];
927
956
  comparison?: SemaphorMetricComparison;
928
957
  orderBy?: SemaphorQueryOrderBy;
929
958
  inputs?: SemaphorInputReference[];
959
+ relationshipHint?: SemaphorRelationshipHint;
930
960
  limit?: number;
931
961
  };
932
962
 
@@ -943,6 +973,21 @@ declare type SemaphorMetricResult = SemaphorAnalyticsResultBase & {
943
973
 
944
974
  declare type SemaphorNonEmptyArray<T> = [T, ...T[]];
945
975
 
976
+ declare type SemaphorOptionDependencies = {
977
+ mode?: 'auto' | 'independent' | 'explicit';
978
+ includeInputIds?: string[];
979
+ excludeInputIds?: string[];
980
+ };
981
+
982
+ declare type SemaphorOptionPopulation = {
983
+ kind: 'option_source';
984
+ baseSource?: never;
985
+ } | {
986
+ kind: 'related_population';
987
+ baseSource: SemaphorSourceRef;
988
+ relationshipHint?: SemaphorRelationshipHint;
989
+ };
990
+
946
991
  declare type SemaphorOptionValue = string | number | boolean;
947
992
 
948
993
  declare type SemaphorPaginationMetadata = {
@@ -991,6 +1036,7 @@ declare type SemaphorRecordsBaseQuerySpec = SemaphorQuerySourceSpec & SemaphorAp
991
1036
  filters?: SemaphorAnalyticsFilter[];
992
1037
  orderBy?: SemaphorRecordsOrderBy;
993
1038
  inputs?: SemaphorInputReference[];
1039
+ relationshipHint?: SemaphorRelationshipHint;
994
1040
  limit?: number;
995
1041
  pagination?: SemaphorPaginationRequest;
996
1042
  };
@@ -1017,6 +1063,7 @@ declare type SemaphorRecordsIntent = {
1017
1063
  direction: 'asc' | 'desc';
1018
1064
  };
1019
1065
  inputs?: SemaphorInputBinding[];
1066
+ relationshipHint?: SemaphorRelationshipHint;
1020
1067
  derivedFields?: SemaphorDerivedFieldDefinition[];
1021
1068
  };
1022
1069
 
@@ -1038,6 +1085,15 @@ declare type SemaphorRecordsSelectorSpec = {
1038
1085
  fields: SemaphorNonEmptyArray<SemaphorRecordsField>;
1039
1086
  };
1040
1087
 
1088
+ export declare type SemaphorRelatedProjectionFieldCandidate = {
1089
+ field: SemaphorFieldRef;
1090
+ allowedRelatedRoles: SemaphorRelatedProjectionRole[];
1091
+ unsupportedRelatedRoleMessage?: string;
1092
+ recommendedNextStep?: string;
1093
+ };
1094
+
1095
+ export declare type SemaphorRelatedProjectionRole = Extract<NonNullable<SemaphorFieldRef['role']>, 'dimension' | 'date' | 'id'>;
1096
+
1041
1097
  declare type SemaphorRelationshipDiagnostics = {
1042
1098
  status: SemaphorRelationshipDiagnosticStatus;
1043
1099
  requiredSources?: SemaphorSourceRef[];
@@ -1059,6 +1115,10 @@ declare type SemaphorRelationshipDiagnostics = {
1059
1115
 
1060
1116
  declare type SemaphorRelationshipDiagnosticStatus = 'not_required' | 'resolved' | 'missing' | 'ambiguous' | 'fanout_risk' | 'unknown';
1061
1117
 
1118
+ declare type SemaphorRelationshipHint = {
1119
+ relationshipIds?: string[];
1120
+ };
1121
+
1062
1122
  declare type SemaphorRelativeTimeWindow = {
1063
1123
  kind?: 'relative';
1064
1124
  unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';