react-semaphor 0.1.443 → 0.1.445

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 (133) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/analytics-protocol/index.cjs +1 -1
  3. package/dist/analytics-protocol/index.js +123 -107
  4. package/dist/appearance/index.cjs +1 -1
  5. package/dist/brand-studio/index.cjs +2 -2
  6. package/dist/brand-studio/index.js +5 -4
  7. package/dist/briefings/index.cjs +1 -1
  8. package/dist/briefings/index.js +526 -457
  9. package/dist/chunks/analyze-result-contract-BHb7sUUW.cjs +1 -0
  10. package/dist/chunks/analyze-result-contract-DUv3QnMl.js +29 -0
  11. package/dist/chunks/{braces-CbO-aIwH.js → braces-BKimshER.cjs} +1 -1
  12. package/dist/chunks/{code-editor-BpADiIlq.js → code-editor-B4gTfvc5.js} +6800 -6560
  13. package/dist/chunks/code-editor-BYVorgOf.cjs +138 -0
  14. package/dist/chunks/common-types-CQ6SHfLk.cjs +1 -0
  15. package/dist/chunks/{common-types-ClkOI-3O.js → common-types-DFsDdpH7.js} +22 -21
  16. package/dist/chunks/dashboard-CAiwJW3L.cjs +1397 -0
  17. package/dist/chunks/{dashboard-briefing-launcher-C60n8LqW.js → dashboard-briefing-launcher-2SLNOaTg.js} +26 -24
  18. package/dist/chunks/{dashboard-briefing-launcher-BYMLjZxG.js → dashboard-briefing-launcher-CHwjpUYz.cjs} +2 -2
  19. package/dist/chunks/{dashboard-controls-ti9Rcel2.js → dashboard-controls-BfL14aqO.js} +11 -9
  20. package/dist/chunks/{dashboard-controls-BH_fZYDU.js → dashboard-controls-BgGTg4yw.cjs} +2 -2
  21. package/dist/chunks/dashboard-date-comparison-definition-DZq0htjG.cjs +1 -0
  22. package/dist/chunks/dashboard-json-BOv8tCa9.cjs +1 -0
  23. package/dist/chunks/{dashboard-json-Bturr634.js → dashboard-json-BZwq3EcS.js} +14 -12
  24. package/dist/chunks/{dashboard-Bd1Quco-.js → dashboard-u61yfU6u.js} +50081 -47351
  25. package/dist/chunks/edit-dashboard-visual-BdVCH0DJ.cjs +182 -0
  26. package/dist/chunks/{edit-dashboard-visual-DglMds57.js → edit-dashboard-visual-njLPYip3.js} +6825 -6656
  27. package/dist/chunks/{editor-action-buttons-CRi0fhVW.js → editor-action-buttons-BhLX5Q6m.js} +24 -23
  28. package/dist/chunks/{editor-action-buttons-Cxo7_tNG.js → editor-action-buttons-CBVMFipA.cjs} +1 -1
  29. package/dist/chunks/{index-D7KJindZ.js → format-types-CSv0V7mm.cjs} +1 -1
  30. package/dist/chunks/{index-CnujJ3fa.js → format-types-CZH5w1lo.js} +23 -17
  31. package/dist/chunks/{layout-grid-B08pP7v6.js → layout-grid-3-HWzEwU.cjs} +1 -1
  32. package/dist/chunks/{metric-comparison-CPoDx56y.js → metric-comparison-BJ_Qu1ZF.js} +1 -1
  33. package/dist/chunks/metric-comparison-CUAJ8n4y.cjs +1 -0
  34. package/dist/chunks/{palette-C0yjT5Tv.js → palette-DW_l7Jr0.cjs} +1 -1
  35. package/dist/chunks/pivot-result-identity-B6QCWOSi.js +94 -0
  36. package/dist/chunks/pivot-result-identity-CDLRT-YG.cjs +1 -0
  37. package/dist/chunks/pivot-result-lifecycle-BM3Pl-D1.js +914 -0
  38. package/dist/chunks/pivot-result-lifecycle-DPc0ANwk.cjs +4 -0
  39. package/dist/chunks/presentation-execution-BTV-Q43g.cjs +1 -0
  40. package/dist/chunks/presentation-execution-CGlb7YZ6.js +637 -0
  41. package/dist/chunks/{report-preferences-dialog-TtwdAuNn.js → report-preferences-dialog-D_NJu2wU.js} +7 -6
  42. package/dist/chunks/report-preferences-dialog-r8QzOSFb.cjs +1 -0
  43. package/dist/chunks/report-runtime-context-C8LZFsqV.cjs +1 -0
  44. package/dist/chunks/report-runtime-context-Qzn11HQe.js +387 -0
  45. package/dist/chunks/{save-Xdc4pnys.js → save-4_uMnE6s.cjs} +1 -1
  46. package/dist/chunks/{search-Dcud9ajy.js → search-6ZmeMq55.cjs} +1 -1
  47. package/dist/chunks/temporal-bucket-BnPxGrAi.js +446 -0
  48. package/dist/chunks/temporal-bucket-authoring-BUZMuVca.js +205 -0
  49. package/dist/chunks/temporal-bucket-authoring-CPTwHzvs.cjs +1 -0
  50. package/dist/chunks/temporal-bucket-contract-B2bJ1oe4.js +108 -0
  51. package/dist/chunks/temporal-bucket-contract-ChDBWX8I.cjs +1 -0
  52. package/dist/chunks/temporal-bucket-pMnV-4Nj.cjs +1 -0
  53. package/dist/chunks/{comparison-document-migration-Dj6xZMCb.js → temporal-result-owner-Cb27SSG9.js} +152 -123
  54. package/dist/chunks/temporal-result-owner-f6-i65Fb.cjs +1 -0
  55. package/dist/chunks/token-types-BdQ8kHBm.cjs +1 -0
  56. package/dist/chunks/token-types-DLo91nOf.js +8 -0
  57. package/dist/chunks/{update-policy-DnF_74zC.js → update-policy-BxvYMYz0.cjs} +1 -1
  58. package/dist/chunks/{update-policy-De2NswtM.js → update-policy-eg59mQqv.js} +1 -1
  59. package/dist/chunks/validators-9D4KBqKD.cjs +1 -0
  60. package/dist/chunks/validators-wZ2WlNHc.js +4640 -0
  61. package/dist/dashboard/index.cjs +1 -1
  62. package/dist/dashboard/index.js +2 -2
  63. package/dist/dashboard-authoring/index.cjs +3 -3
  64. package/dist/dashboard-authoring/index.js +136 -126
  65. package/dist/data-app-builder/index.cjs +1 -1
  66. package/dist/data-app-builder/index.js +2 -2
  67. package/dist/data-app-codegen/index.cjs +1 -1
  68. package/dist/data-app-codegen/index.js +2 -2
  69. package/dist/data-app-codegen-node/index.cjs +1 -1
  70. package/dist/data-app-codegen-node/index.js +3 -3
  71. package/dist/data-app-sdk/index.cjs +2 -2
  72. package/dist/data-app-sdk/index.js +34 -35
  73. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  74. package/dist/data-app-sdk-adapters/index.js +5 -5
  75. package/dist/data-app-sdk-validation/index.cjs +1 -1
  76. package/dist/data-app-sdk-validation/index.js +9 -10
  77. package/dist/format-utils/index.cjs +3 -3
  78. package/dist/format-utils/index.js +155 -176
  79. package/dist/index.cjs +1 -1
  80. package/dist/index.js +180 -174
  81. package/dist/report-runtime-context/index.cjs +1 -1
  82. package/dist/report-runtime-context/index.js +7 -392
  83. package/dist/shared/index.cjs +1 -1
  84. package/dist/style.css +1 -1
  85. package/dist/surfboard/index.cjs +1 -1
  86. package/dist/surfboard/index.js +3 -3
  87. package/dist/types/analytics-protocol.d.ts +257 -48
  88. package/dist/types/briefings.d.ts +138 -50
  89. package/dist/types/dashboard-assistant.d.ts +207 -52
  90. package/dist/types/dashboard-authoring.d.ts +182 -50
  91. package/dist/types/dashboard.d.ts +290 -48
  92. package/dist/types/data-app-builder.d.ts +48 -42
  93. package/dist/types/data-app-codegen-node.d.ts +50 -44
  94. package/dist/types/data-app-codegen.d.ts +50 -44
  95. package/dist/types/data-app-sdk-adapters.d.ts +48 -42
  96. package/dist/types/data-app-sdk-validation.d.ts +81 -43
  97. package/dist/types/data-app-sdk.d.ts +83 -45
  98. package/dist/types/format-utils.d.ts +645 -67
  99. package/dist/types/index.cjs +1 -1
  100. package/dist/types/index.js +19 -19
  101. package/dist/types/main.d.ts +298 -94
  102. package/dist/types/report-runtime-context.d.ts +3 -0
  103. package/dist/types/shared.d.ts +116 -41
  104. package/dist/types/surfboard.d.ts +290 -48
  105. package/dist/types/types.d.ts +455 -65
  106. package/package.json +3 -1
  107. package/dist/chunks/analyze-result-contract-BswhsmWT.js +0 -1
  108. package/dist/chunks/analyze-result-contract-CfOBEwaC.js +0 -1998
  109. package/dist/chunks/code-editor-M7HTUhdF.js +0 -138
  110. package/dist/chunks/common-types-C73-Ud1-.js +0 -1
  111. package/dist/chunks/comparison-document-migration-DbU_BTxR.js +0 -1
  112. package/dist/chunks/csv-utils-BZDvO2Fw.js +0 -376
  113. package/dist/chunks/csv-utils-Co0WxHke.js +0 -4
  114. package/dist/chunks/dashboard-cB3xmTNn.js +0 -1402
  115. package/dist/chunks/dashboard-date-comparison-definition-DGZr3m-b.js +0 -1
  116. package/dist/chunks/dashboard-json-Dw_55vSZ.js +0 -1
  117. package/dist/chunks/edit-dashboard-visual-BUc3NBQ4.js +0 -182
  118. package/dist/chunks/metric-comparison-DVy3fll_.js +0 -1
  119. package/dist/chunks/numeric-presentation-BJs5lSar.js +0 -517
  120. package/dist/chunks/numeric-presentation-Dlb-Dk4c.js +0 -1
  121. package/dist/chunks/report-preferences-dialog-CCvFqH4Q.js +0 -1
  122. package/dist/chunks/source-identity-5OPV4gvg.js +0 -92
  123. package/dist/chunks/source-identity-Cbo2LOHQ.js +0 -1
  124. package/dist/chunks/validators-B2vUAqTf.js +0 -1
  125. package/dist/chunks/validators-Bce_J7Vd.js +0 -2448
  126. /package/dist/chunks/{card-config-utils-15sRtebL.js → card-config-utils-15sRtebL.cjs} +0 -0
  127. /package/dist/chunks/{catalog-field-grounding-Bnx-3tE0.js → catalog-field-grounding-Bnx-3tE0.cjs} +0 -0
  128. /package/dist/chunks/{dashboard-input-contract-DV3cshjz.js → dashboard-input-contract-DV3cshjz.cjs} +0 -0
  129. /package/dist/chunks/{index-Dpm_VET4.js → index-Dpm_VET4.cjs} +0 -0
  130. /package/dist/chunks/{index-jSrCwPQz.js → index-jSrCwPQz.cjs} +0 -0
  131. /package/dist/chunks/{normalize-dashboard-for-dirty-check-BXRUMVb2.js → normalize-dashboard-for-dirty-check-BXRUMVb2.cjs} +0 -0
  132. /package/dist/chunks/{operators-DrTQsJXv.js → operators-DrTQsJXv.cjs} +0 -0
  133. /package/dist/chunks/{use-debounced-dirty-check-XHSwAefL.js → use-debounced-dirty-check-XHSwAefL.cjs} +0 -0
@@ -66,6 +66,10 @@ export declare const SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION: "semaphor
66
66
 
67
67
  export declare const SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION: "semaphor-data-app-codegen-summary-validator/v2";
68
68
 
69
+ declare const SEMAPHOR_MATRIX_TIME_GRAINS: ["hour", "day", "week", "month", "quarter", "year"];
70
+
71
+ declare const SEMAPHOR_TIME_GRAINS: readonly ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
72
+
69
73
  declare type SemaphorAbsoluteTimeWindow = {
70
74
  kind: 'absolute';
71
75
  start: string;
@@ -266,7 +270,7 @@ declare type SemaphorDataAppCodegenMatrixIntent = {
266
270
  rows: Array<{
267
271
  id?: string;
268
272
  field?: SemaphorDataAppCodegenFieldRef;
269
- grain?: SemaphorTimeGrain;
273
+ grain?: SemaphorMatrixTimeGrain;
270
274
  label?: string;
271
275
  subtotal?: boolean | {
272
276
  enabled?: boolean;
@@ -276,7 +280,7 @@ declare type SemaphorDataAppCodegenMatrixIntent = {
276
280
  columns?: Array<{
277
281
  id?: string;
278
282
  field?: SemaphorDataAppCodegenFieldRef;
279
- grain?: SemaphorTimeGrain;
283
+ grain?: SemaphorMatrixTimeGrain;
280
284
  label?: string;
281
285
  subtotal?: boolean | {
282
286
  enabled?: boolean;
@@ -689,7 +693,7 @@ declare type SemaphorDerivedFieldDefinition = {
689
693
  defaultAggregate?: SemaphorAggregateFunction;
690
694
  aggregationBehavior?: SemaphorDerivedFieldAggregationBehavior;
691
695
  aggregationStrategy?: SemaphorDerivedFieldAggregationStrategy;
692
- format?: SemaphorValueFormat;
696
+ format?: SemaphorScalarValueFormat;
693
697
  tags?: string[];
694
698
  };
695
699
 
@@ -820,7 +824,7 @@ declare type SemaphorMatrixAxisExpansionOptions = {
820
824
  declare type SemaphorMatrixAxisLevel = {
821
825
  id?: string;
822
826
  field: SemaphorFieldRef;
823
- grain?: SemaphorTimeGrain;
827
+ grain?: SemaphorMatrixTimeGrain;
824
828
  label?: string;
825
829
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
826
830
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -912,6 +916,8 @@ declare type SemaphorMatrixSubtotalOptions = {
912
916
  label?: string;
913
917
  };
914
918
 
919
+ declare type SemaphorMatrixTimeGrain = (typeof SEMAPHOR_MATRIX_TIME_GRAINS)[number];
920
+
915
921
  declare type SemaphorMatrixTotalCalculation = {
916
922
  kind: 'defaultAggregate';
917
923
  } | {
@@ -947,7 +953,7 @@ declare type SemaphorMatrixValueField = {
947
953
  field: SemaphorFieldRef;
948
954
  aggregate?: SemaphorAggregateFunction;
949
955
  label?: string;
950
- format?: SemaphorValueFormat;
956
+ format?: SemaphorScalarValueFormat;
951
957
  totalBehavior?: SemaphorMatrixTotalCalculation;
952
958
  };
953
959
 
@@ -1042,7 +1048,7 @@ declare type SemaphorRelationshipHint = {
1042
1048
 
1043
1049
  declare type SemaphorRelativeTimeWindow = {
1044
1050
  kind?: 'relative';
1045
- unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
1051
+ unit: SemaphorTimeGrain;
1046
1052
  value: number;
1047
1053
  anchor?: 'now' | 'latest_available';
1048
1054
  completeness?: 'include_partial' | 'complete_periods';
@@ -1050,6 +1056,43 @@ declare type SemaphorRelativeTimeWindow = {
1050
1056
 
1051
1057
  declare type SemaphorScalar = string | number | boolean | null;
1052
1058
 
1059
+ declare type SemaphorScalarValueFormat = {
1060
+ type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
1061
+ minimumFractionDigits?: number;
1062
+ maximumFractionDigits?: number;
1063
+ useGrouping?: boolean;
1064
+ prefix?: string;
1065
+ suffix?: string;
1066
+ negativeStyle?: 'minus' | 'parentheses';
1067
+ compact?: boolean;
1068
+ scale?: number;
1069
+ currency?: string;
1070
+ percentValueMode?: 'fraction' | 'whole';
1071
+ } | {
1072
+ type: 'date' | 'datetime';
1073
+ locale?: string;
1074
+ pattern?: string;
1075
+ relative?: boolean;
1076
+ timezone?: string;
1077
+ sourceTimezone?: string;
1078
+ prefix?: string;
1079
+ suffix?: string;
1080
+ } | {
1081
+ type: 'duration';
1082
+ inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1083
+ outputStyle?: 'compact' | 'digital' | 'long';
1084
+ largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1085
+ smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1086
+ maxUnits?: number;
1087
+ prefix?: string;
1088
+ suffix?: string;
1089
+ negativeStyle?: 'minus' | 'parentheses';
1090
+ } | {
1091
+ type: 'string';
1092
+ prefix?: string;
1093
+ suffix?: string;
1094
+ };
1095
+
1053
1096
  declare type SemaphorSemanticSourceRef = Extract<SemaphorSourceRef, {
1054
1097
  kind: 'semantic';
1055
1098
  }>;
@@ -1095,47 +1138,10 @@ declare type SemaphorSqlIntent = {
1095
1138
  inputs?: SemaphorInputBinding[];
1096
1139
  };
1097
1140
 
1098
- declare type SemaphorTimeGrain = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
1141
+ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
1099
1142
 
1100
1143
  declare type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
1101
1144
 
1102
- declare type SemaphorValueFormat = {
1103
- type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
1104
- minimumFractionDigits?: number;
1105
- maximumFractionDigits?: number;
1106
- useGrouping?: boolean;
1107
- prefix?: string;
1108
- suffix?: string;
1109
- negativeStyle?: 'minus' | 'parentheses';
1110
- compact?: boolean;
1111
- scale?: number;
1112
- currency?: string;
1113
- percentValueMode?: 'fraction' | 'whole';
1114
- } | {
1115
- type: 'date' | 'datetime';
1116
- locale?: string;
1117
- pattern?: string;
1118
- relative?: boolean;
1119
- timezone?: string;
1120
- sourceTimezone?: string;
1121
- prefix?: string;
1122
- suffix?: string;
1123
- } | {
1124
- type: 'duration';
1125
- inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1126
- outputStyle?: 'compact' | 'digital' | 'long';
1127
- largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1128
- smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1129
- maxUnits?: number;
1130
- prefix?: string;
1131
- suffix?: string;
1132
- negativeStyle?: 'minus' | 'parentheses';
1133
- } | {
1134
- type: 'string';
1135
- prefix?: string;
1136
- suffix?: string;
1137
- };
1138
-
1139
1145
  export declare function validateCodegenSummary(value: unknown): string[];
1140
1146
 
1141
1147
  export declare function validateSemaphorDataAppCodegenSummary(value: unknown): {
@@ -62,6 +62,10 @@ export declare const SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION: "semaphor
62
62
 
63
63
  export declare const SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION: "semaphor-data-app-codegen-summary-validator/v2";
64
64
 
65
+ declare const SEMAPHOR_MATRIX_TIME_GRAINS: ["hour", "day", "week", "month", "quarter", "year"];
66
+
67
+ declare const SEMAPHOR_TIME_GRAINS: readonly ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
68
+
65
69
  declare type SemaphorAbsoluteTimeWindow = {
66
70
  kind: 'absolute';
67
71
  start: string;
@@ -262,7 +266,7 @@ declare type SemaphorDataAppCodegenMatrixIntent = {
262
266
  rows: Array<{
263
267
  id?: string;
264
268
  field?: SemaphorDataAppCodegenFieldRef;
265
- grain?: SemaphorTimeGrain;
269
+ grain?: SemaphorMatrixTimeGrain;
266
270
  label?: string;
267
271
  subtotal?: boolean | {
268
272
  enabled?: boolean;
@@ -272,7 +276,7 @@ declare type SemaphorDataAppCodegenMatrixIntent = {
272
276
  columns?: Array<{
273
277
  id?: string;
274
278
  field?: SemaphorDataAppCodegenFieldRef;
275
- grain?: SemaphorTimeGrain;
279
+ grain?: SemaphorMatrixTimeGrain;
276
280
  label?: string;
277
281
  subtotal?: boolean | {
278
282
  enabled?: boolean;
@@ -679,7 +683,7 @@ declare type SemaphorDerivedFieldDefinition = {
679
683
  defaultAggregate?: SemaphorAggregateFunction;
680
684
  aggregationBehavior?: SemaphorDerivedFieldAggregationBehavior;
681
685
  aggregationStrategy?: SemaphorDerivedFieldAggregationStrategy;
682
- format?: SemaphorValueFormat;
686
+ format?: SemaphorScalarValueFormat;
683
687
  tags?: string[];
684
688
  };
685
689
 
@@ -792,7 +796,7 @@ declare type SemaphorMatrixAxisExpansionOptions = {
792
796
  declare type SemaphorMatrixAxisLevel = {
793
797
  id?: string;
794
798
  field: SemaphorFieldRef;
795
- grain?: SemaphorTimeGrain;
799
+ grain?: SemaphorMatrixTimeGrain;
796
800
  label?: string;
797
801
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
798
802
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -884,6 +888,8 @@ declare type SemaphorMatrixSubtotalOptions = {
884
888
  label?: string;
885
889
  };
886
890
 
891
+ declare type SemaphorMatrixTimeGrain = (typeof SEMAPHOR_MATRIX_TIME_GRAINS)[number];
892
+
887
893
  declare type SemaphorMatrixTotalCalculation = {
888
894
  kind: 'defaultAggregate';
889
895
  } | {
@@ -919,7 +925,7 @@ declare type SemaphorMatrixValueField = {
919
925
  field: SemaphorFieldRef;
920
926
  aggregate?: SemaphorAggregateFunction;
921
927
  label?: string;
922
- format?: SemaphorValueFormat;
928
+ format?: SemaphorScalarValueFormat;
923
929
  totalBehavior?: SemaphorMatrixTotalCalculation;
924
930
  };
925
931
 
@@ -1014,7 +1020,7 @@ declare type SemaphorRelationshipHint = {
1014
1020
 
1015
1021
  declare type SemaphorRelativeTimeWindow = {
1016
1022
  kind?: 'relative';
1017
- unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
1023
+ unit: SemaphorTimeGrain;
1018
1024
  value: number;
1019
1025
  anchor?: 'now' | 'latest_available';
1020
1026
  completeness?: 'include_partial' | 'complete_periods';
@@ -1022,6 +1028,43 @@ declare type SemaphorRelativeTimeWindow = {
1022
1028
 
1023
1029
  declare type SemaphorScalar = string | number | boolean | null;
1024
1030
 
1031
+ declare type SemaphorScalarValueFormat = {
1032
+ type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
1033
+ minimumFractionDigits?: number;
1034
+ maximumFractionDigits?: number;
1035
+ useGrouping?: boolean;
1036
+ prefix?: string;
1037
+ suffix?: string;
1038
+ negativeStyle?: 'minus' | 'parentheses';
1039
+ compact?: boolean;
1040
+ scale?: number;
1041
+ currency?: string;
1042
+ percentValueMode?: 'fraction' | 'whole';
1043
+ } | {
1044
+ type: 'date' | 'datetime';
1045
+ locale?: string;
1046
+ pattern?: string;
1047
+ relative?: boolean;
1048
+ timezone?: string;
1049
+ sourceTimezone?: string;
1050
+ prefix?: string;
1051
+ suffix?: string;
1052
+ } | {
1053
+ type: 'duration';
1054
+ inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1055
+ outputStyle?: 'compact' | 'digital' | 'long';
1056
+ largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1057
+ smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1058
+ maxUnits?: number;
1059
+ prefix?: string;
1060
+ suffix?: string;
1061
+ negativeStyle?: 'minus' | 'parentheses';
1062
+ } | {
1063
+ type: 'string';
1064
+ prefix?: string;
1065
+ suffix?: string;
1066
+ };
1067
+
1025
1068
  declare type SemaphorSemanticSourceRef = Extract<SemaphorSourceRef, {
1026
1069
  kind: 'semantic';
1027
1070
  }>;
@@ -1067,47 +1110,10 @@ declare type SemaphorSqlIntent = {
1067
1110
  inputs?: SemaphorInputBinding[];
1068
1111
  };
1069
1112
 
1070
- declare type SemaphorTimeGrain = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
1113
+ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
1071
1114
 
1072
1115
  declare type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
1073
1116
 
1074
- declare type SemaphorValueFormat = {
1075
- type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
1076
- minimumFractionDigits?: number;
1077
- maximumFractionDigits?: number;
1078
- useGrouping?: boolean;
1079
- prefix?: string;
1080
- suffix?: string;
1081
- negativeStyle?: 'minus' | 'parentheses';
1082
- compact?: boolean;
1083
- scale?: number;
1084
- currency?: string;
1085
- percentValueMode?: 'fraction' | 'whole';
1086
- } | {
1087
- type: 'date' | 'datetime';
1088
- locale?: string;
1089
- pattern?: string;
1090
- relative?: boolean;
1091
- timezone?: string;
1092
- sourceTimezone?: string;
1093
- prefix?: string;
1094
- suffix?: string;
1095
- } | {
1096
- type: 'duration';
1097
- inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1098
- outputStyle?: 'compact' | 'digital' | 'long';
1099
- largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1100
- smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1101
- maxUnits?: number;
1102
- prefix?: string;
1103
- suffix?: string;
1104
- negativeStyle?: 'minus' | 'parentheses';
1105
- } | {
1106
- type: 'string';
1107
- prefix?: string;
1108
- suffix?: string;
1109
- };
1110
-
1111
1117
  export declare function validateCodegenSummary(value: unknown): string[];
1112
1118
 
1113
1119
  export declare function validateSemaphorDataAppCodegenSummary(value: unknown): {
@@ -26,6 +26,10 @@ export declare function normalizeSemaphorInputOptions(options?: Array<{
26
26
  disambiguation?: string[];
27
27
  }[];
28
28
 
29
+ declare const SEMAPHOR_MATRIX_TIME_GRAINS: ["hour", "day", "week", "month", "quarter", "year"];
30
+
31
+ declare const SEMAPHOR_TIME_GRAINS: readonly ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
32
+
29
33
  declare type SemaphorAbsoluteTimeWindow = {
30
34
  kind: 'absolute';
31
35
  start: string;
@@ -122,7 +126,7 @@ declare type SemaphorDerivedFieldDefinition = {
122
126
  defaultAggregate?: SemaphorAggregateFunction;
123
127
  aggregationBehavior?: SemaphorDerivedFieldAggregationBehavior;
124
128
  aggregationStrategy?: SemaphorDerivedFieldAggregationStrategy;
125
- format?: SemaphorValueFormat;
129
+ format?: SemaphorScalarValueFormat;
126
130
  tags?: string[];
127
131
  };
128
132
 
@@ -259,7 +263,7 @@ declare type SemaphorMatrixAxisExpansionOptions = {
259
263
  declare type SemaphorMatrixAxisLevel = {
260
264
  id?: string;
261
265
  field: SemaphorFieldRef;
262
- grain?: SemaphorTimeGrain;
266
+ grain?: SemaphorMatrixTimeGrain;
263
267
  label?: string;
264
268
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
265
269
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -366,6 +370,8 @@ declare type SemaphorMatrixSubtotalOptions = {
366
370
  label?: string;
367
371
  };
368
372
 
373
+ declare type SemaphorMatrixTimeGrain = (typeof SEMAPHOR_MATRIX_TIME_GRAINS)[number];
374
+
369
375
  declare type SemaphorMatrixTotalCalculation = {
370
376
  kind: 'defaultAggregate';
371
377
  } | {
@@ -401,7 +407,7 @@ declare type SemaphorMatrixValueField = {
401
407
  field: SemaphorFieldRef;
402
408
  aggregate?: SemaphorAggregateFunction;
403
409
  label?: string;
404
- format?: SemaphorValueFormat;
410
+ format?: SemaphorScalarValueFormat;
405
411
  totalBehavior?: SemaphorMatrixTotalCalculation;
406
412
  };
407
413
 
@@ -561,7 +567,7 @@ declare type SemaphorRelationshipHint = {
561
567
 
562
568
  declare type SemaphorRelativeTimeWindow = {
563
569
  kind?: 'relative';
564
- unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
570
+ unit: SemaphorTimeGrain;
565
571
  value: number;
566
572
  anchor?: 'now' | 'latest_available';
567
573
  completeness?: 'include_partial' | 'complete_periods';
@@ -569,6 +575,43 @@ declare type SemaphorRelativeTimeWindow = {
569
575
 
570
576
  declare type SemaphorScalar = string | number | boolean | null;
571
577
 
578
+ declare type SemaphorScalarValueFormat = {
579
+ type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
580
+ minimumFractionDigits?: number;
581
+ maximumFractionDigits?: number;
582
+ useGrouping?: boolean;
583
+ prefix?: string;
584
+ suffix?: string;
585
+ negativeStyle?: 'minus' | 'parentheses';
586
+ compact?: boolean;
587
+ scale?: number;
588
+ currency?: string;
589
+ percentValueMode?: 'fraction' | 'whole';
590
+ } | {
591
+ type: 'date' | 'datetime';
592
+ locale?: string;
593
+ pattern?: string;
594
+ relative?: boolean;
595
+ timezone?: string;
596
+ sourceTimezone?: string;
597
+ prefix?: string;
598
+ suffix?: string;
599
+ } | {
600
+ type: 'duration';
601
+ inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
602
+ outputStyle?: 'compact' | 'digital' | 'long';
603
+ largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
604
+ smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
605
+ maxUnits?: number;
606
+ prefix?: string;
607
+ suffix?: string;
608
+ negativeStyle?: 'minus' | 'parentheses';
609
+ } | {
610
+ type: 'string';
611
+ prefix?: string;
612
+ suffix?: string;
613
+ };
614
+
572
615
  declare type SemaphorSemanticSourceRef = Extract<SemaphorSourceRef, {
573
616
  kind: 'semantic';
574
617
  }>;
@@ -635,47 +678,10 @@ declare type SemaphorSqlSourceSpec = {
635
678
  }>;
636
679
  };
637
680
 
638
- declare type SemaphorTimeGrain = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
681
+ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
639
682
 
640
683
  declare type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
641
684
 
642
- declare type SemaphorValueFormat = {
643
- type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
644
- minimumFractionDigits?: number;
645
- maximumFractionDigits?: number;
646
- useGrouping?: boolean;
647
- prefix?: string;
648
- suffix?: string;
649
- negativeStyle?: 'minus' | 'parentheses';
650
- compact?: boolean;
651
- scale?: number;
652
- currency?: string;
653
- percentValueMode?: 'fraction' | 'whole';
654
- } | {
655
- type: 'date' | 'datetime';
656
- locale?: string;
657
- pattern?: string;
658
- relative?: boolean;
659
- timezone?: string;
660
- sourceTimezone?: string;
661
- prefix?: string;
662
- suffix?: string;
663
- } | {
664
- type: 'duration';
665
- inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
666
- outputStyle?: 'compact' | 'digital' | 'long';
667
- largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
668
- smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
669
- maxUnits?: number;
670
- prefix?: string;
671
- suffix?: string;
672
- negativeStyle?: 'minus' | 'parentheses';
673
- } | {
674
- type: 'string';
675
- prefix?: string;
676
- suffix?: string;
677
- };
678
-
679
685
  export declare function toSemaphorActiveInputSnapshots(inputs: SemaphorInputReference[] | undefined): SemaphorActiveInput[];
680
686
 
681
687
  export declare function toSemaphorAnalysisIntent(spec: SemaphorAnalysisQuerySpec): SemaphorMetricIntent;
@@ -20,7 +20,7 @@ declare type MatrixAxisLevelDescriptor = {
20
20
  fieldKey: string;
21
21
  label: string;
22
22
  field: SemaphorFieldRef;
23
- grain?: SemaphorTimeGrain;
23
+ grain?: SemaphorMatrixTimeGrain;
24
24
  subtotal?: SemaphorMatrixSubtotalOptions;
25
25
  };
26
26
 
@@ -135,7 +135,7 @@ declare type MatrixMeasureDescriptor = {
135
135
  label: string;
136
136
  field: SemaphorFieldRef;
137
137
  aggregate?: SemaphorAggregateFunction;
138
- format?: SemaphorValueFormat;
138
+ format?: SemaphorScalarValueFormat;
139
139
  totalBehavior?: SemaphorMatrixTotalCalculation;
140
140
  };
141
141
 
@@ -149,7 +149,7 @@ declare type MatrixMeasureSemantics = {
149
149
  } | {
150
150
  kind: 'semiAdditive';
151
151
  aggregate?: SemaphorAggregateFunction;
152
- grain?: SemaphorTimeGrain;
152
+ grain?: SemaphorMatrixTimeGrain;
153
153
  } | {
154
154
  kind: 'nonAdditive';
155
155
  aggregate?: SemaphorAggregateFunction;
@@ -250,6 +250,10 @@ export declare function relatedProjectionFieldCandidatesForIntent(intent: Relati
250
250
 
251
251
  declare type RelationshipAwareProjectionIntent = SemaphorRecordsIntent | SemaphorMetricIntent | SemaphorMatrixIntent;
252
252
 
253
+ declare const SEMAPHOR_MATRIX_TIME_GRAINS: ["hour", "day", "week", "month", "quarter", "year"];
254
+
255
+ declare const SEMAPHOR_TIME_GRAINS: readonly ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
256
+
253
257
  declare type SemaphorAbsoluteTimeWindow = {
254
258
  kind: 'absolute';
255
259
  start: string;
@@ -545,7 +549,7 @@ declare type SemaphorDerivedFieldDefinition = {
545
549
  defaultAggregate?: SemaphorAggregateFunction;
546
550
  aggregationBehavior?: SemaphorDerivedFieldAggregationBehavior;
547
551
  aggregationStrategy?: SemaphorDerivedFieldAggregationStrategy;
548
- format?: SemaphorValueFormat;
552
+ format?: SemaphorScalarValueFormat;
549
553
  tags?: string[];
550
554
  };
551
555
 
@@ -700,7 +704,7 @@ declare type SemaphorMatrixAxisExpansionOptions = {
700
704
  declare type SemaphorMatrixAxisLevel = {
701
705
  id?: string;
702
706
  field: SemaphorFieldRef;
703
- grain?: SemaphorTimeGrain;
707
+ grain?: SemaphorMatrixTimeGrain;
704
708
  label?: string;
705
709
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
706
710
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -835,6 +839,8 @@ declare type SemaphorMatrixSubtotalOptions = {
835
839
  label?: string;
836
840
  };
837
841
 
842
+ declare type SemaphorMatrixTimeGrain = (typeof SEMAPHOR_MATRIX_TIME_GRAINS)[number];
843
+
838
844
  declare type SemaphorMatrixTotalCalculation = {
839
845
  kind: 'defaultAggregate';
840
846
  } | {
@@ -870,7 +876,7 @@ declare type SemaphorMatrixValueField = {
870
876
  field: SemaphorFieldRef;
871
877
  aggregate?: SemaphorAggregateFunction;
872
878
  label?: string;
873
- format?: SemaphorValueFormat;
879
+ format?: SemaphorScalarValueFormat;
874
880
  totalBehavior?: SemaphorMatrixTotalCalculation;
875
881
  };
876
882
 
@@ -981,6 +987,30 @@ declare type SemaphorPaginationRequest = {
981
987
  pageSize: number;
982
988
  };
983
989
 
990
+ declare type SemaphorPivotResultColumnIdentity = {
991
+ metricId: string;
992
+ /** Collision-safe identity for this configured metric instance. */
993
+ metricAlias: string;
994
+ /**
995
+ * Sole transported tuple identity in configured pivot-axis order. A leaf
996
+ * carries the complete tuple, a subtotal carries its explicit prefix, and a
997
+ * metric-only or grand-total column carries an empty tuple.
998
+ */
999
+ members: SemaphorPivotResultMember[];
1000
+ };
1001
+
1002
+ declare type SemaphorPivotResultMember = {
1003
+ /** Stable identity of the configured pivot field. */
1004
+ fieldId: string;
1005
+ /** Canonical pivot member value; labels are resolved only at presentation. */
1006
+ value: SemaphorPivotValue;
1007
+ /** Present when this member is an activated governed temporal bucket. */
1008
+ temporalBucket?: TemporalBucketMetadata;
1009
+ };
1010
+
1011
+ /** Stable canonical scalar transported for one physical pivot member. */
1012
+ declare type SemaphorPivotValue = string | null;
1013
+
984
1014
  declare type SemaphorProtocolIssue = {
985
1015
  code: string;
986
1016
  message: string;
@@ -1113,7 +1143,7 @@ declare type SemaphorRelationshipHint = {
1113
1143
 
1114
1144
  declare type SemaphorRelativeTimeWindow = {
1115
1145
  kind?: 'relative';
1116
- unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
1146
+ unit: SemaphorTimeGrain;
1117
1147
  value: number;
1118
1148
  anchor?: 'now' | 'latest_available';
1119
1149
  completeness?: 'include_partial' | 'complete_periods';
@@ -1138,10 +1168,49 @@ declare type SemaphorResultColumn = {
1138
1168
  aggregate?: SemaphorFieldRef['aggregate'];
1139
1169
  source?: SemaphorFieldRef['source'];
1140
1170
  derivedField?: SemaphorDerivedFieldDefinition;
1171
+ temporalBucket?: TemporalBucketMetadata;
1172
+ pivotIdentity?: SemaphorPivotResultColumnIdentity;
1141
1173
  };
1142
1174
 
1143
1175
  declare type SemaphorScalar = string | number | boolean | null;
1144
1176
 
1177
+ declare type SemaphorScalarValueFormat = {
1178
+ type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
1179
+ minimumFractionDigits?: number;
1180
+ maximumFractionDigits?: number;
1181
+ useGrouping?: boolean;
1182
+ prefix?: string;
1183
+ suffix?: string;
1184
+ negativeStyle?: 'minus' | 'parentheses';
1185
+ compact?: boolean;
1186
+ scale?: number;
1187
+ currency?: string;
1188
+ percentValueMode?: 'fraction' | 'whole';
1189
+ } | {
1190
+ type: 'date' | 'datetime';
1191
+ locale?: string;
1192
+ pattern?: string;
1193
+ relative?: boolean;
1194
+ timezone?: string;
1195
+ sourceTimezone?: string;
1196
+ prefix?: string;
1197
+ suffix?: string;
1198
+ } | {
1199
+ type: 'duration';
1200
+ inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1201
+ outputStyle?: 'compact' | 'digital' | 'long';
1202
+ largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1203
+ smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1204
+ maxUnits?: number;
1205
+ prefix?: string;
1206
+ suffix?: string;
1207
+ negativeStyle?: 'minus' | 'parentheses';
1208
+ } | {
1209
+ type: 'string';
1210
+ prefix?: string;
1211
+ suffix?: string;
1212
+ };
1213
+
1145
1214
  declare type SemaphorSemanticSourceRef = Extract<SemaphorSourceRef, {
1146
1215
  kind: 'semantic';
1147
1216
  }>;
@@ -1223,45 +1292,14 @@ declare type SemaphorSqlSourceSpec = {
1223
1292
  }>;
1224
1293
  };
1225
1294
 
1226
- declare type SemaphorTimeGrain = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
1295
+ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
1227
1296
 
1228
1297
  declare type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
1229
1298
 
1230
- declare type SemaphorValueFormat = {
1231
- type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
1232
- minimumFractionDigits?: number;
1233
- maximumFractionDigits?: number;
1234
- useGrouping?: boolean;
1235
- prefix?: string;
1236
- suffix?: string;
1237
- negativeStyle?: 'minus' | 'parentheses';
1238
- compact?: boolean;
1239
- scale?: number;
1240
- currency?: string;
1241
- percentValueMode?: 'fraction' | 'whole';
1242
- } | {
1243
- type: 'date' | 'datetime';
1244
- locale?: string;
1245
- pattern?: string;
1246
- relative?: boolean;
1247
- timezone?: string;
1248
- sourceTimezone?: string;
1249
- prefix?: string;
1250
- suffix?: string;
1251
- } | {
1252
- type: 'duration';
1253
- inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1254
- outputStyle?: 'compact' | 'digital' | 'long';
1255
- largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1256
- smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1257
- maxUnits?: number;
1258
- prefix?: string;
1259
- suffix?: string;
1260
- negativeStyle?: 'minus' | 'parentheses';
1261
- } | {
1262
- type: 'string';
1263
- prefix?: string;
1264
- suffix?: string;
1299
+ declare type TemporalBucketMetadata = {
1300
+ kind: 'temporal_bucket';
1301
+ granularity: SemaphorTimeGrain;
1302
+ calendar: Pick<CalendarContext, 'tz' | 'weekStart' | 'fiscalCalendar'>;
1265
1303
  };
1266
1304
 
1267
1305
  export declare function validateSemaphorDataAppQuerySpecs(input: {