react-semaphor 0.1.449 → 0.1.453

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 (134) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +115 -109
  3. package/dist/appearance/index.cjs +1 -1
  4. package/dist/appearance/index.js +1 -1
  5. package/dist/brand-studio/index.cjs +4 -4
  6. package/dist/brand-studio/index.js +15 -13
  7. package/dist/briefings/index.cjs +1 -1
  8. package/dist/briefings/index.js +39 -2131
  9. package/dist/chunks/{analyze-result-contract-BHb7sUUW.cjs → analyze-result-contract-Dxw66nUG.cjs} +1 -1
  10. package/dist/chunks/{analyze-result-contract-T-0Ntzys.js → analyze-result-contract-GHKFwThg.js} +1 -1
  11. package/dist/chunks/canonical-result-keys-Drc2x-lf.cjs +1 -0
  12. package/dist/chunks/canonical-result-keys-KLk__J_O.js +466 -0
  13. package/dist/chunks/color-CJvdlFM_.js +2162 -0
  14. package/dist/chunks/color-CyB5o13F.cjs +4 -0
  15. package/dist/chunks/{common-types-CQ6SHfLk.cjs → common-types-Ci66eflG.cjs} +1 -1
  16. package/dist/chunks/{common-types-B7Jk3Rtj.js → common-types-F6qk6PPS.js} +1 -1
  17. package/dist/chunks/contracts-CoCOpd_i.js +11 -0
  18. package/dist/chunks/contracts-CtB2VONT.cjs +1 -0
  19. package/dist/chunks/{dashboard-briefing-launcher-DCHiEkLE.js → dashboard-briefing-launcher-CFpX0WX3.js} +86 -84
  20. package/dist/chunks/dashboard-briefing-launcher-mUXWuiOZ.cjs +26 -0
  21. package/dist/chunks/{dashboard-controls-DwRFCcHV.js → dashboard-controls-BeYAmOJc.js} +15 -13
  22. package/dist/chunks/{dashboard-controls-CaFioayc.cjs → dashboard-controls-SoNubIu1.cjs} +1 -1
  23. package/dist/chunks/dashboard-json-BublPnQ4.cjs +1 -0
  24. package/dist/chunks/{dashboard-json-WoILbfTe.js → dashboard-json-DeLUagVV.js} +25 -23
  25. package/dist/chunks/edit-dashboard-visual-CrvPcO7A.cjs +172 -0
  26. package/dist/chunks/{edit-dashboard-visual-ciFhxqaI.js → edit-dashboard-visual-Go0h82DR.js} +6925 -6947
  27. package/dist/chunks/editor-action-buttons-1Lo0fIh7.cjs +16 -0
  28. package/dist/chunks/{editor-action-buttons-BPo_45pM.js → editor-action-buttons-BFNtjFzO.js} +41 -39
  29. package/dist/chunks/format-types-CFHQoIuk.js +1350 -0
  30. package/dist/chunks/format-types-PSZZ7hG8.cjs +1 -0
  31. package/dist/chunks/index-B3ZugihZ.js +3713 -0
  32. package/dist/chunks/{index-CPuawpXJ.js → index-BsH32bn1.js} +47472 -47845
  33. package/dist/chunks/index-ByFbacH7.cjs +1 -0
  34. package/dist/chunks/index-CACdoqu3.js +318 -0
  35. package/dist/chunks/index-DSKR3nKn.js +421 -0
  36. package/dist/chunks/index-DjiIh_9n.cjs +4 -0
  37. package/dist/chunks/index-F25jnH0p.cjs +1 -0
  38. package/dist/chunks/index-q12_nNUS.cjs +1392 -0
  39. package/dist/chunks/{metric-comparison-97zHGEx5.js → metric-comparison-D0T0MKRK.js} +1 -1
  40. package/dist/chunks/{metric-comparison-CUAJ8n4y.cjs → metric-comparison-DYR3RXam.cjs} +1 -1
  41. package/dist/chunks/pivot-header-presentation-DcfPaCiy.cjs +4 -0
  42. package/dist/chunks/pivot-header-presentation-nk604qc1.js +557 -0
  43. package/dist/chunks/{pivot-result-identity-CwJWpKI7.js → pivot-result-identity-C43Ai5Kr.js} +1 -1
  44. package/dist/chunks/{pivot-result-identity-CDLRT-YG.cjs → pivot-result-identity-CRUokNgm.cjs} +1 -1
  45. package/dist/chunks/pivot-result-lifecycle-4kSe0Hk1.js +1642 -0
  46. package/dist/chunks/pivot-result-lifecycle-BiJepH5S.cjs +1 -0
  47. package/dist/chunks/raw-temporal-contract-BF7PjBY9.js +64 -0
  48. package/dist/chunks/raw-temporal-contract-CxbRFwnd.cjs +1 -0
  49. package/dist/chunks/report-preferences-dialog-BEVZAE3m.cjs +1 -0
  50. package/dist/chunks/report-preferences-dialog-BNV7qXYH.js +723 -0
  51. package/dist/chunks/{report-runtime-context-bCy3CVzK.js → report-runtime-context-BJQDu2fV.js} +1 -1
  52. package/dist/chunks/{report-runtime-context-C8LZFsqV.cjs → report-runtime-context-DjYqLV-c.cjs} +1 -1
  53. package/dist/chunks/saved-temporal-bucket-format-DiZdQXOL.js +924 -0
  54. package/dist/chunks/saved-temporal-bucket-format-Gfbh4IiP.cjs +1 -0
  55. package/dist/chunks/switch-CjJ6FHYJ.cjs +138 -0
  56. package/dist/chunks/{switch-BXet-Sno.js → switch-DgLwr7O-.js} +4352 -5249
  57. package/dist/chunks/temporal-bucket-Dnj8qT9l.cjs +1 -0
  58. package/dist/chunks/temporal-bucket-FBZGrDCe.js +560 -0
  59. package/dist/chunks/temporal-bucket-authoring-7hv2laOG.cjs +1 -0
  60. package/dist/chunks/temporal-bucket-authoring-FIRnJz0e.js +221 -0
  61. package/dist/chunks/{temporal-bucket-contract-_F6vNhhH.js → temporal-bucket-contract-BQOj6Frl.js} +1 -1
  62. package/dist/chunks/{temporal-bucket-contract-ChDBWX8I.cjs → temporal-bucket-contract-anl4h-vg.cjs} +1 -1
  63. package/dist/chunks/{token-types-BHR58aTy.js → token-types-CRpQJ4kv.js} +1 -1
  64. package/dist/chunks/{token-types-BdQ8kHBm.cjs → token-types-D0i0IUX3.cjs} +1 -1
  65. package/dist/chunks/{update-policy-BxvYMYz0.cjs → update-policy-C1i9bgsy.cjs} +1 -1
  66. package/dist/chunks/{update-policy-g0rCQ9BM.js → update-policy-CaJz9aPG.js} +1 -1
  67. package/dist/chunks/{validators-Cs74WVie.js → validators-DeMXwRON.js} +253 -233
  68. package/dist/chunks/validators-Dm7Kpz6p.cjs +1 -0
  69. package/dist/dashboard/index.cjs +1 -1
  70. package/dist/dashboard/index.js +2 -2
  71. package/dist/dashboard-authoring/index.cjs +3 -3
  72. package/dist/dashboard-authoring/index.js +32 -29
  73. package/dist/data-app-builder/index.cjs +1 -1
  74. package/dist/data-app-builder/index.js +2 -2
  75. package/dist/data-app-codegen/index.cjs +1 -1
  76. package/dist/data-app-codegen/index.js +2 -2
  77. package/dist/data-app-codegen-node/index.cjs +1 -1
  78. package/dist/data-app-codegen-node/index.js +3 -3
  79. package/dist/data-app-sdk/index.cjs +1 -1
  80. package/dist/data-app-sdk/index.js +3 -3
  81. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  82. package/dist/data-app-sdk-adapters/index.js +2 -2
  83. package/dist/data-app-sdk-validation/index.cjs +1 -1
  84. package/dist/data-app-sdk-validation/index.js +3 -3
  85. package/dist/format-utils/index.cjs +3 -3
  86. package/dist/format-utils/index.js +162 -145
  87. package/dist/index.cjs +1 -1
  88. package/dist/index.js +157 -155
  89. package/dist/report-runtime-context/index.cjs +1 -1
  90. package/dist/report-runtime-context/index.js +2 -2
  91. package/dist/style.css +1 -1
  92. package/dist/surfboard/index.cjs +1 -1
  93. package/dist/surfboard/index.js +3 -3
  94. package/dist/types/analytics-protocol.d.ts +37 -0
  95. package/dist/types/briefings.d.ts +718 -7
  96. package/dist/types/dashboard-assistant.d.ts +18 -0
  97. package/dist/types/dashboard-authoring.d.ts +52 -2
  98. package/dist/types/dashboard.d.ts +128 -0
  99. package/dist/types/data-app-sdk-validation.d.ts +13 -0
  100. package/dist/types/data-app-sdk.d.ts +13 -0
  101. package/dist/types/format-utils.d.ts +190 -3
  102. package/dist/types/index.cjs +1 -1
  103. package/dist/types/index.js +4 -4
  104. package/dist/types/main.d.ts +103 -12
  105. package/dist/types/shared.d.ts +5 -0
  106. package/dist/types/surfboard.d.ts +129 -1
  107. package/dist/types/types.d.ts +98 -6
  108. package/dist/types/value-format-preferences.d.ts +3 -0
  109. package/package.json +2 -1
  110. package/dist/chunks/card-config-utils-15sRtebL.cjs +0 -1
  111. package/dist/chunks/card-config-utils-BYZ5MJOh.js +0 -16
  112. package/dist/chunks/dashboard-briefing-launcher-DDgDr2s3.cjs +0 -26
  113. package/dist/chunks/dashboard-json-CYtvwtvj.cjs +0 -1
  114. package/dist/chunks/edit-dashboard-visual-DwKcvlsF.cjs +0 -177
  115. package/dist/chunks/editor-action-buttons-BVmsk0Aj.cjs +0 -16
  116. package/dist/chunks/format-types-CSv0V7mm.cjs +0 -1
  117. package/dist/chunks/format-types-DZGgYj39.js +0 -1663
  118. package/dist/chunks/index-CJdxSyQq.js +0 -2578
  119. package/dist/chunks/index-DPv8_Ild.cjs +0 -1395
  120. package/dist/chunks/index-DRlMUglg.cjs +0 -4
  121. package/dist/chunks/pivot-result-lifecycle-BBabQ_da.js +0 -914
  122. package/dist/chunks/pivot-result-lifecycle-DPc0ANwk.cjs +0 -4
  123. package/dist/chunks/presentation-execution-BLfPTGX_.js +0 -637
  124. package/dist/chunks/presentation-execution-BTV-Q43g.cjs +0 -1
  125. package/dist/chunks/report-preferences-dialog-D9ZCGh9l.js +0 -691
  126. package/dist/chunks/report-preferences-dialog-DaqTEcac.cjs +0 -1
  127. package/dist/chunks/switch-Cjk6G06r.cjs +0 -138
  128. package/dist/chunks/temporal-bucket-BnPxGrAi.js +0 -446
  129. package/dist/chunks/temporal-bucket-authoring-CPTwHzvs.cjs +0 -1
  130. package/dist/chunks/temporal-bucket-authoring-CgOuakGW.js +0 -205
  131. package/dist/chunks/temporal-bucket-pMnV-4Nj.cjs +0 -1
  132. package/dist/chunks/temporal-result-owner-6peubmhU.js +0 -443
  133. package/dist/chunks/temporal-result-owner-f6-i65Fb.cjs +0 -1
  134. package/dist/chunks/validators-9D4KBqKD.cjs +0 -1
@@ -54,6 +54,8 @@ export declare function arrayToCSV(rows: (string | number | null | undefined)[][
54
54
  */
55
55
  export declare function arrayToCSVRow(values: (string | number | null | undefined)[], delimiter?: string): string;
56
56
 
57
+ export declare function assertRawTemporalChunkClassificationAgreement(inputs: readonly unknown[]): void;
58
+
57
59
  export declare function buildFlatTableExportTotalsFooter(params: {
58
60
  totalsByColumnId: FlatTableExportTotalsByColumnId;
59
61
  visibleColumns: readonly string[];
@@ -75,7 +77,7 @@ declare type CalendarContext = {
75
77
 
76
78
  export declare type CanonicalDurationUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
77
79
 
78
- export declare type CanonicalFormatSpec = NumericCanonicalFormat | DateCanonicalFormat | DurationCanonicalFormat | StringCanonicalFormat | TemporalBucketFormat;
80
+ export declare type CanonicalFormatSpec = NumericCanonicalFormat | DateCanonicalFormat | RawTemporalFormat | DurationCanonicalFormat | StringCanonicalFormat | TemporalBucketFormat;
79
81
 
80
82
  declare type CanonicalPivotResultBase = {
81
83
  columns: SemaphorResultColumn[];
@@ -95,6 +97,11 @@ export declare type CanonicalPivotResultState = 'loaded_empty' | 'loaded_valid';
95
97
 
96
98
  export declare type CanonicalPivotResultTransport = LoadedEmptyPivotResult | LoadedValidPivotResult;
97
99
 
100
+ export declare function classifyDeclaredSqlTemporalColumn(input: {
101
+ columnKey: string;
102
+ values: readonly (string | null)[];
103
+ }): SqlTemporalColumnClassification;
104
+
98
105
  export declare interface ColorRange {
99
106
  min: number;
100
107
  max: number;
@@ -163,6 +170,13 @@ export declare function createCanonicalPivotResultTransport(input: {
163
170
  columnMetadata?: Readonly<Record<string, PivotResultColumnClassification | undefined>>;
164
171
  }): CanonicalPivotResultTransport;
165
172
 
173
+ export declare function createPresentationExecutionSnapshot(input: {
174
+ reportContext: ReportRuntimeContext;
175
+ resolvedFormats: readonly ResolvedPresentationEntry[];
176
+ }): PresentationExecutionSnapshot;
177
+
178
+ export declare function createRawTemporalChunkClassificationEvidence(classifications: ReadonlyMap<string, SqlTemporalColumnClassification>): RawTemporalChunkClassificationEvidence;
179
+
166
180
  export declare interface CSVExportOptions {
167
181
  delimiter: ',' | ';' | '\t';
168
182
  includeHeaders: boolean;
@@ -197,6 +211,8 @@ export declare interface DateFormatOptions {
197
211
  locale?: string;
198
212
  }
199
213
 
214
+ export declare const DEFAULT_RESOLVED_TEMPORAL_STYLE_SET: ResolvedTemporalStyleSet;
215
+
200
216
  /**
201
217
  * Derives the authored identity expectations stored in a canonical pivot
202
218
  * lifecycle contract. Producers and cache-compatibility consumers must use
@@ -278,6 +294,12 @@ export declare function findResolvedNumericFormat(input: {
278
294
  target: NumericPresentationTarget;
279
295
  }): NumericCanonicalFormat | undefined;
280
296
 
297
+ export declare function findResolvedRawTemporalFormat(input: {
298
+ snapshot: PresentationExecutionSnapshot;
299
+ scope: PresentationScope;
300
+ target: RawTemporalPresentationTarget;
301
+ }): ResolvedRawTemporalFormat | undefined;
302
+
281
303
  export declare function findResolvedTemporalBucketFormat(input: {
282
304
  snapshot: PresentationExecutionSnapshot;
283
305
  scope: PresentationScope;
@@ -426,6 +448,13 @@ export declare function formatPivotDataRow(row: PivotRowData, pivotConfig: Pivot
426
448
  */
427
449
  export declare function formatPivotTableForCSV(data: PivotRowData[], pivotConfig: PivotExportConfig, formattingConfig: ExportFormattingConfig): string[];
428
450
 
451
+ /** Strict one-off convenience; row loops should prepare once per column. */
452
+ export declare function formatRawTemporalValue(input: {
453
+ value: string | null;
454
+ metadata: RawTemporalValueMetadata;
455
+ format: ResolvedRawTemporalFormat;
456
+ }): RawTemporalFormatResult;
457
+
429
458
  /**
430
459
  * Format relative time using date-fns (e.g., "2 days ago")
431
460
  *
@@ -555,6 +584,12 @@ declare type MetricResultAliasInput = {
555
584
  expression?: string;
556
585
  };
557
586
 
587
+ export declare class MissingResolvedRawTemporalFormatError extends Error {
588
+ readonly code = "missing_resolved_raw_temporal_format";
589
+ readonly deliveryBlocking = true;
590
+ constructor(columnKey: string);
591
+ }
592
+
558
593
  declare type MonthAlignedFiscalCalendar = {
559
594
  kind: 'month_aligned';
560
595
  yearStartMonth: number;
@@ -650,10 +685,17 @@ export declare function parsePresentationExecutionSnapshot(input: unknown): Pres
650
685
 
651
686
  export declare function parsePresentationScope(input: unknown, path?: string): PresentationScope;
652
687
 
688
+ export declare function parseRawTemporalChunkClassificationEvidence(input: unknown): RawTemporalChunkClassificationEvidence;
689
+
690
+ /** Strictly parses one raw temporal descriptor at a result boundary. */
691
+ export declare function parseRawTemporalValueMetadata(input: unknown): RawTemporalValueMetadata;
692
+
653
693
  export declare function parseResolvedNumericCanonicalFormat(input: unknown): NumericCanonicalFormatParseResult;
654
694
 
655
695
  export declare function parseResolvedPresentationEntries(input: unknown): ResolvedPresentationEntry[];
656
696
 
697
+ export declare function parseResolvedRawTemporalFormat(input: unknown): ResolvedRawTemporalFormat;
698
+
657
699
  export declare function parseResolvedTemporalBucketFormat(input: unknown): ResolvedTemporalBucketFormatParseResult;
658
700
 
659
701
  export declare function parseTemporalBucketValue(value: TemporalBucketValue, metadata: TemporalBucketMetadata): TemporalBucketValueParseResult;
@@ -753,6 +795,14 @@ export declare interface PivotRowData {
753
795
  isGrandTotal?: boolean;
754
796
  }
755
797
 
798
+ /** Strictly prepared per-column formatter for repeated cell rendering. */
799
+ export declare type PreparedRawTemporalFormatter = (value: string | null) => RawTemporalFormatResult;
800
+
801
+ export declare function prepareRawTemporalFormatter(input: {
802
+ metadata: RawTemporalValueMetadata;
803
+ format: ResolvedRawTemporalFormat;
804
+ }): PreparedRawTemporalFormatter;
805
+
756
806
  /**
757
807
  * Formats one physical aggregate group cell. Row metadata alone determines
758
808
  * subtotal/grand-total ownership; null is always passed to the value formatter
@@ -766,10 +816,17 @@ export declare function presentAggregateGroupRow<T = string>(input: {
766
816
  }): AggregateGroupRowPresentation<T>;
767
817
 
768
818
  export declare type PresentationExecutionSnapshot = {
819
+ version: 1;
769
820
  reportContext: ReportRuntimeContext;
770
821
  resolvedFormats: ResolvedPresentationEntry[];
771
822
  };
772
823
 
824
+ export declare class PresentationExecutionSnapshotError extends Error {
825
+ readonly code = "invalid_presentation_execution_snapshot";
826
+ readonly deliveryBlocking = true;
827
+ constructor(message: string);
828
+ }
829
+
773
830
  export declare type PresentationScope = {
774
831
  dashboardId: string;
775
832
  cardId?: string;
@@ -804,6 +861,66 @@ export declare interface QueryColumnKeyMapEntry {
804
861
 
805
862
  export declare type QueryColumnKeyRole = 'groupby' | 'metric' | 'pivotby' | 'detail';
806
863
 
864
+ export declare type RawTemporalChunkClassificationEvidence = {
865
+ version: 1;
866
+ columns: Record<string, RawTemporalChunkClassificationStatus>;
867
+ };
868
+
869
+ export declare type RawTemporalChunkClassificationStatus = 'empty' | 'invalid_only' | RawTemporalValueKind;
870
+
871
+ /** Normalized authored input for an ungrouped temporal result column. */
872
+ export declare type RawTemporalFormat = {
873
+ type: 'raw_temporal';
874
+ /** Authored display timezone; `auto` uses the resolved calendar timezone. */
875
+ timezone?: string;
876
+ /** Authored source timezone; `auto` means UTC for timezone-less values. */
877
+ sourceTimezone?: string;
878
+ presentation: {
879
+ mode: 'auto';
880
+ } | {
881
+ mode: 'pattern';
882
+ dialect: RawTemporalPatternDialect;
883
+ pattern: string;
884
+ };
885
+ };
886
+
887
+ export declare class RawTemporalFormatContractError extends Error {
888
+ readonly code: 'invalid_raw_temporal_format' | 'mixed_sql_temporal_semantics';
889
+ constructor(code: RawTemporalFormatContractError['code'], message: string);
890
+ }
891
+
892
+ export declare type RawTemporalFormatResult = {
893
+ ok: true;
894
+ text: string;
895
+ status: 'formatted' | 'empty';
896
+ } | {
897
+ ok: false;
898
+ text: string;
899
+ diagnostic: {
900
+ code: 'invalid_raw_temporal_value' | 'out_of_range_raw_temporal_value';
901
+ message: string;
902
+ };
903
+ };
904
+
905
+ export declare type RawTemporalPatternDialect = 'semaphor_tokens' | 'date_fns';
906
+
907
+ export declare type RawTemporalPresentationTarget = {
908
+ kind: 'column';
909
+ columnKey: string;
910
+ };
911
+
912
+ /** Authoritative meaning of one ungrouped temporal result column. */
913
+ export declare type RawTemporalValueKind = 'date' | 'wall_datetime' | 'instant';
914
+
915
+ /**
916
+ * Result-column metadata for an ungrouped temporal value. This descriptor is
917
+ * mutually exclusive with grouped `temporalBucket` metadata.
918
+ */
919
+ export declare type RawTemporalValueMetadata = {
920
+ kind: 'raw_temporal';
921
+ valueKind: RawTemporalValueKind;
922
+ };
923
+
807
924
  declare const REPORT_PREFERENCE_SOURCES: readonly ["viewer_user", "viewer_tenant_user", "session_initial", "viewer_tenant", "viewer_organization", "system_default"];
808
925
 
809
926
  declare type ReportPreferenceSource = (typeof REPORT_PREFERENCE_SOURCES)[number];
@@ -873,10 +990,47 @@ export declare type ResolvedNumericPresentationEntry = {
873
990
  format: NumericCanonicalFormat;
874
991
  };
875
992
 
876
- export declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry;
993
+ export declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry | ResolvedRawTemporalPresentationEntry;
877
994
 
878
- export declare type ResolvedTemporalBucketFormat = TemporalBucketFormat & {
995
+ export declare type ResolvedRawTemporalFormat = {
996
+ type: 'raw_temporal';
879
997
  locale: string;
998
+ calendarTimezone: string;
999
+ /** Resolved source timezone for timezone-less wall datetimes, when authored. */
1000
+ sourceTimezone?: string;
1001
+ presentation: {
1002
+ mode: 'auto';
1003
+ styles: ResolvedTemporalStyleSet;
1004
+ } | {
1005
+ mode: 'pattern';
1006
+ dialect: RawTemporalPatternDialect;
1007
+ pattern: string;
1008
+ };
1009
+ };
1010
+
1011
+ export declare type ResolvedRawTemporalPresentationEntry = {
1012
+ scope: PresentationScope;
1013
+ target: RawTemporalPresentationTarget;
1014
+ format: ResolvedRawTemporalFormat;
1015
+ };
1016
+
1017
+ export declare type ResolvedTemporalBucketFormat = {
1018
+ type: 'temporal_bucket';
1019
+ locale: string;
1020
+ presentation: {
1021
+ mode: 'auto';
1022
+ styles: ResolvedTemporalStyleSet;
1023
+ };
1024
+ } | {
1025
+ type: 'temporal_bucket';
1026
+ locale: string;
1027
+ presentation: {
1028
+ mode: 'preset';
1029
+ preset: TemporalBucketPreset;
1030
+ } | {
1031
+ mode: 'pattern';
1032
+ pattern: string;
1033
+ };
880
1034
  };
881
1035
 
882
1036
  export declare type ResolvedTemporalBucketFormatParseResult = {
@@ -901,6 +1055,14 @@ export declare type ResolvedTemporalBucketPresentationEntry = {
901
1055
  format: ResolvedTemporalBucketFormat;
902
1056
  };
903
1057
 
1058
+ export declare type ResolvedTemporalStyleSet = {
1059
+ dateStyle: LocaleStyle;
1060
+ dateTime: {
1061
+ dateStyle: LocaleStyle;
1062
+ timeStyle: LocaleStyle;
1063
+ };
1064
+ };
1065
+
904
1066
  declare type ResolvedValueFormatPreferences = {
905
1067
  locale: string;
906
1068
  dateStyle: LocaleStyle;
@@ -928,6 +1090,12 @@ export declare function resolveNumericPresentation(authored: NumericCanonicalFor
928
1090
 
929
1091
  export declare function resolveQueryColumnKeyMapEntry(columnKeyMap: QueryColumnKeyMap | undefined, fieldId: string, role: QueryColumnKeyRole): QueryColumnKeyMapEntry | undefined;
930
1092
 
1093
+ export declare function resolveRawTemporalFormat(input: {
1094
+ format?: RawTemporalFormat;
1095
+ preferences: ResolvedValueFormatPreferences;
1096
+ calendar: Pick<CalendarContext, 'tz'>;
1097
+ }): ResolvedRawTemporalFormat;
1098
+
931
1099
  export declare function resolveTemporalBucketPresentation(input: ResolveTemporalBucketPresentationInput): ResolvedTemporalBucketPresentation;
932
1100
 
933
1101
  export declare type ResolveTemporalBucketPresentationInput = {
@@ -938,6 +1106,7 @@ export declare type ResolveTemporalBucketPresentationInput = {
938
1106
  };
939
1107
  cardFormat?: TemporalBucketFormat;
940
1108
  locale: string;
1109
+ styles?: ResolvedTemporalStyleSet;
941
1110
  };
942
1111
 
943
1112
  /**
@@ -1054,6 +1223,7 @@ declare type SemaphorResultColumn = {
1054
1223
  source?: SemaphorFieldRef['source'];
1055
1224
  derivedField?: SemaphorDerivedFieldDefinition;
1056
1225
  temporalBucket?: TemporalBucketMetadata;
1226
+ rawTemporal?: RawTemporalValueMetadata;
1057
1227
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
1058
1228
  };
1059
1229
 
@@ -1119,6 +1289,15 @@ declare type SemaphorSourceRef = {
1119
1289
 
1120
1290
  declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
1121
1291
 
1292
+ export declare type SqlTemporalColumnClassification = {
1293
+ status: 'empty';
1294
+ } | {
1295
+ status: 'invalid_only';
1296
+ } | {
1297
+ status: 'classified';
1298
+ metadata: RawTemporalValueMetadata;
1299
+ };
1300
+
1122
1301
  export declare type StringCanonicalFormat = {
1123
1302
  type: 'string';
1124
1303
  prefix?: string;
@@ -1240,6 +1419,14 @@ export declare function validateCardExportPresentationSnapshot(input: {
1240
1419
  useFormattedValues: boolean;
1241
1420
  }): void;
1242
1421
 
1422
+ /**
1423
+ * Validates descriptor exclusivity and datatype compatibility without
1424
+ * inferring temporal meaning from a value or display label.
1425
+ */
1426
+ export declare function validateRawTemporalResultColumn(column: Pick<SemaphorResultColumn, 'dataType' | 'rawTemporal' | 'temporalBucket'>, options: {
1427
+ metadataRequired: boolean;
1428
+ }): RawTemporalValueMetadata | undefined;
1429
+
1243
1430
  export declare function validateTemporalBucketFormatApplicability(format: TemporalBucketFormat, granularity: SemaphorTimeGrain): TemporalBucketFormatApplicabilityResult;
1244
1431
 
1245
1432
  declare type WeekStart = 0 | 1 | 2 | 3 | 4 | 5 | 6;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/common-types-CQ6SHfLk.cjs"),l=require("../chunks/token-types-BdQ8kHBm.cjs"),t=require("../chunks/pivot-result-identity-CDLRT-YG.cjs"),E=require("../chunks/report-runtime-context-C8LZFsqV.cjs");exports.CALCULATED_FIELD_ENTITY_MARKER=e.CALCULATED_FIELD_ENTITY_MARKER;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.DATE_FORMAT_VALUES=e.DATE_FORMAT_VALUES;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;exports.PivotMarkerEnum=e.PivotMarkerEnum;exports.getFieldRuntimeColumnName=e.getFieldRuntimeColumnName;exports.hasCalculatedFieldMarker=e.hasCalculatedFieldMarker;exports.hasCalculatedFormulaInputs=e.hasCalculatedFormulaInputs;exports.isCalculatedDimension=e.isCalculatedDimension;exports.isCalculatedField=e.isCalculatedField;exports.isCalculatedMetric=e.isCalculatedMetric;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=l.DEFAULT_SEMANTIC_DOMAIN_ACCESS;exports.resolveQueryColumnKeyMapEntry=t.resolveQueryColumnKeyMapEntry;exports.resolveUniqueQueryColumnKeyMapEntry=t.resolveUniqueQueryColumnKeyMapEntry;exports.DEFAULT_CALENDAR_CONTEXT=E.DEFAULT_CALENDAR_CONTEXT;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/common-types-Ci66eflG.cjs"),l=require("../chunks/token-types-D0i0IUX3.cjs"),t=require("../chunks/pivot-result-identity-CRUokNgm.cjs"),E=require("../chunks/report-runtime-context-DjYqLV-c.cjs");exports.CALCULATED_FIELD_ENTITY_MARKER=e.CALCULATED_FIELD_ENTITY_MARKER;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.DATE_FORMAT_VALUES=e.DATE_FORMAT_VALUES;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;exports.PivotMarkerEnum=e.PivotMarkerEnum;exports.getFieldRuntimeColumnName=e.getFieldRuntimeColumnName;exports.hasCalculatedFieldMarker=e.hasCalculatedFieldMarker;exports.hasCalculatedFormulaInputs=e.hasCalculatedFormulaInputs;exports.isCalculatedDimension=e.isCalculatedDimension;exports.isCalculatedField=e.isCalculatedField;exports.isCalculatedMetric=e.isCalculatedMetric;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=l.DEFAULT_SEMANTIC_DOMAIN_ACCESS;exports.resolveQueryColumnKeyMapEntry=t.resolveQueryColumnKeyMapEntry;exports.resolveUniqueQueryColumnKeyMapEntry=t.resolveUniqueQueryColumnKeyMapEntry;exports.DEFAULT_CALENDAR_CONTEXT=E.DEFAULT_CALENDAR_CONTEXT;
@@ -1,7 +1,7 @@
1
- import { a as s, C as r, D as E, E as l, P as C, g as o, d as t, h as A, b as u, c as T, i as _ } from "../chunks/common-types-B7Jk3Rtj.js";
2
- import { D } from "../chunks/token-types-BHR58aTy.js";
3
- import { r as n, a as L } from "../chunks/pivot-result-identity-CwJWpKI7.js";
4
- import { D as d } from "../chunks/report-runtime-context-bCy3CVzK.js";
1
+ import { a as s, C as r, D as E, E as l, P as C, g as o, d as t, h as A, b as u, c as T, i as _ } from "../chunks/common-types-F6qk6PPS.js";
2
+ import { D } from "../chunks/token-types-CRpQJ4kv.js";
3
+ import { r as n, a as L } from "../chunks/pivot-result-identity-C43Ai5Kr.js";
4
+ import { D as d } from "../chunks/report-runtime-context-BJQDu2fV.js";
5
5
  export {
6
6
  s as CALCULATED_FIELD_ENTITY_MARKER,
7
7
  r as CONTROL_CARD_DEFAULT_VALUE,
@@ -471,7 +471,7 @@ declare type AsyncMutation<TInput, TOutput> = {
471
471
 
472
472
  export declare type AuthoritativeExportFormattingConfig = ExportFormattingConfig & {
473
473
  comparisonPresentation: ComparisonPresentationSpec;
474
- resolvedFormats: ResolvedPresentationEntry[];
474
+ presentationExecutionSnapshot: PresentationExecutionSnapshot;
475
475
  };
476
476
 
477
477
  export declare type AuthToken = {
@@ -851,9 +851,9 @@ export declare type BriefingFormDraft = {
851
851
  limits: BriefingLimits;
852
852
  };
853
853
 
854
- export declare function briefingFormDraftToCreateRequest(draft: BriefingFormDraft, resolvedFormats?: ResolvedPresentationEntry[]): CreateBriefingRequest;
854
+ export declare function briefingFormDraftToCreateRequest(draft: BriefingFormDraft): CreateBriefingRequest;
855
855
 
856
- export declare function briefingFormDraftToUpdateRequest(draft: BriefingFormDraft, resolvedFormats?: ResolvedPresentationEntry[]): UpdateBriefingRequest;
856
+ export declare function briefingFormDraftToUpdateRequest(draft: BriefingFormDraft): UpdateBriefingRequest;
857
857
 
858
858
  export declare type BriefingFormOutputDraft = {
859
859
  artifactFormats: BriefingArtifactFormat[];
@@ -899,8 +899,7 @@ declare type BriefingFragments = {
899
899
 
900
900
  export declare type BriefingJobConfig = {
901
901
  kind: BriefingKind;
902
- reportContext: ReportRuntimeContext;
903
- resolvedFormats?: ResolvedPresentationEntry[];
902
+ presentationExecutionSnapshot: PresentationExecutionSnapshot;
904
903
  source: BriefingSource;
905
904
  body: BriefingBody;
906
905
  attachments: BriefingAttachment[];
@@ -1302,7 +1301,7 @@ export declare function cancelExport(apiServiceUrl: string, token: string, expor
1302
1301
 
1303
1302
  declare type CanonicalDurationUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1304
1303
 
1305
- export declare type CanonicalFormatSpec = NumericCanonicalFormat | DateCanonicalFormat | DurationCanonicalFormat | StringCanonicalFormat | TemporalBucketFormat;
1304
+ export declare type CanonicalFormatSpec = NumericCanonicalFormat | DateCanonicalFormat | RawTemporalFormat | DurationCanonicalFormat | StringCanonicalFormat | TemporalBucketFormat;
1306
1305
 
1307
1306
  declare type CanonicalPivotResultContract = {
1308
1307
  version: 1;
@@ -1845,7 +1844,6 @@ export declare type CreateBriefingRequest = {
1845
1844
  presentation: BriefingPresentation;
1846
1845
  limits?: BriefingLimits;
1847
1846
  deliveryConfig: BriefingDeliveryConfig | null;
1848
- resolvedFormats?: ResolvedPresentationEntry[];
1849
1847
  };
1850
1848
 
1851
1849
  /**
@@ -1881,7 +1879,6 @@ export declare interface CreateExportRequest {
1881
1879
  controlBindings?: ControlBinding[];
1882
1880
  resolvedPrimaryDateField?: ResolvedPrimaryDateField;
1883
1881
  globalDateComparison?: GlobalDateComparisonContext;
1884
- reportContext: ReportRuntimeContext;
1885
1882
  tableTotalsRequest?: TableTotalsRequest;
1886
1883
  totalRows: number;
1887
1884
  format: ExportFormat;
@@ -2379,6 +2376,8 @@ export declare type DashboardProps = {
2379
2376
  * points. Ordinary dashboard consumers should leave this unset.
2380
2377
  */
2381
2378
  interactionExecutionSnapshot?: Record<string, InteractionState>;
2379
+ /** Server-resolved immutable presentation snapshot for internal print views. */
2380
+ presentationExecutionSnapshot?: PresentationExecutionSnapshot;
2382
2381
  /**
2383
2382
  * Render target for print entry points. Generic dashboard PDF exports also
2384
2383
  * use cardDisplay.mode="print"; document-specific print handling must only
@@ -2634,6 +2633,11 @@ export declare type DeleteBriefingRunResponse = {
2634
2633
  */
2635
2634
  export declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
2636
2635
  role: 'detail';
2636
+ /**
2637
+ * Query transport policy for ungrouped temporal values. This marker is
2638
+ * projected into executable config and is never persisted authoring state.
2639
+ */
2640
+ dateValueMode?: 'canonical' | 'formatted';
2637
2641
  dateFormat?: DateFormatValue;
2638
2642
  customFormat?: string;
2639
2643
  /**
@@ -2679,7 +2683,7 @@ export declare function DisplayFormatPreferencesFields({ value, inherited, inher
2679
2683
  export declare type DisplayFormatPreferencesFieldsProps = {
2680
2684
  value: ValueFormatPreferences;
2681
2685
  inherited: ResolvedValueFormatPreferences;
2682
- inheritedSources: Pick<ResolvedValueFormatPreferenceSources, 'locale' | 'defaultCurrency'>;
2686
+ inheritedSources: Pick<ResolvedValueFormatPreferenceSources, 'locale' | 'dateStyle' | 'dateTime' | 'defaultCurrency'>;
2683
2687
  onChange: (value: ValueFormatPreferences) => void;
2684
2688
  disabled?: boolean;
2685
2689
  };
@@ -3381,7 +3385,7 @@ export declare interface ExportFormattingConfig {
3381
3385
  visibleColumns?: string[];
3382
3386
  columnLabels?: Record<string, string>;
3383
3387
  tableTotalsLabelColumnKey?: string;
3384
- resolvedFormats?: ResolvedPresentationEntry[];
3388
+ presentationExecutionSnapshot?: PresentationExecutionSnapshot;
3385
3389
  comparisonPresentation?: ComparisonPresentationSpec;
3386
3390
  }
3387
3391
 
@@ -4927,6 +4931,12 @@ export declare type PluginType = 'custom' | 'standard';
4927
4931
 
4928
4932
  export declare function polishBriefingText(apiServiceUrl: string, token: string, text: string): Promise<string>;
4929
4933
 
4934
+ declare type PresentationExecutionSnapshot = {
4935
+ version: 1;
4936
+ reportContext: ReportRuntimeContext;
4937
+ resolvedFormats: ResolvedPresentationEntry[];
4938
+ };
4939
+
4930
4940
  declare type PresentationScope = {
4931
4941
  dashboardId: string;
4932
4942
  cardId?: string;
@@ -5015,6 +5025,41 @@ export declare type RangeValue = {
5015
5025
  gt?: string | number;
5016
5026
  };
5017
5027
 
5028
+ /** Normalized authored input for an ungrouped temporal result column. */
5029
+ declare type RawTemporalFormat = {
5030
+ type: 'raw_temporal';
5031
+ /** Authored display timezone; `auto` uses the resolved calendar timezone. */
5032
+ timezone?: string;
5033
+ /** Authored source timezone; `auto` means UTC for timezone-less values. */
5034
+ sourceTimezone?: string;
5035
+ presentation: {
5036
+ mode: 'auto';
5037
+ } | {
5038
+ mode: 'pattern';
5039
+ dialect: RawTemporalPatternDialect;
5040
+ pattern: string;
5041
+ };
5042
+ };
5043
+
5044
+ declare type RawTemporalPatternDialect = 'semaphor_tokens' | 'date_fns';
5045
+
5046
+ declare type RawTemporalPresentationTarget = {
5047
+ kind: 'column';
5048
+ columnKey: string;
5049
+ };
5050
+
5051
+ /** Authoritative meaning of one ungrouped temporal result column. */
5052
+ declare type RawTemporalValueKind = 'date' | 'wall_datetime' | 'instant';
5053
+
5054
+ /**
5055
+ * Result-column metadata for an ungrouped temporal value. This descriptor is
5056
+ * mutually exclusive with grouped `temporalBucket` metadata.
5057
+ */
5058
+ declare type RawTemporalValueMetadata = {
5059
+ kind: 'raw_temporal';
5060
+ valueKind: RawTemporalValueKind;
5061
+ };
5062
+
5018
5063
  declare type RelativeDateFilter = {
5019
5064
  mode: 'last';
5020
5065
  n: number;
@@ -5153,7 +5198,7 @@ declare type ResolvedNumericPresentationEntry = {
5153
5198
  format: NumericCanonicalFormat;
5154
5199
  };
5155
5200
 
5156
- declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry;
5201
+ declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry | ResolvedRawTemporalPresentationEntry;
5157
5202
 
5158
5203
  declare type ResolvedPrimaryDateField = (ResolvedPrimaryDateFieldBase & ({
5159
5204
  defaultGranularity?: SemaphorTimeGrain;
@@ -5178,8 +5223,45 @@ declare type ResolvedPrimaryDateFieldBase = {
5178
5223
  supportedGranularities?: SemaphorTimeGrain[];
5179
5224
  };
5180
5225
 
5181
- declare type ResolvedTemporalBucketFormat = TemporalBucketFormat & {
5226
+ declare type ResolvedRawTemporalFormat = {
5227
+ type: 'raw_temporal';
5182
5228
  locale: string;
5229
+ calendarTimezone: string;
5230
+ /** Resolved source timezone for timezone-less wall datetimes, when authored. */
5231
+ sourceTimezone?: string;
5232
+ presentation: {
5233
+ mode: 'auto';
5234
+ styles: ResolvedTemporalStyleSet;
5235
+ } | {
5236
+ mode: 'pattern';
5237
+ dialect: RawTemporalPatternDialect;
5238
+ pattern: string;
5239
+ };
5240
+ };
5241
+
5242
+ declare type ResolvedRawTemporalPresentationEntry = {
5243
+ scope: PresentationScope;
5244
+ target: RawTemporalPresentationTarget;
5245
+ format: ResolvedRawTemporalFormat;
5246
+ };
5247
+
5248
+ declare type ResolvedTemporalBucketFormat = {
5249
+ type: 'temporal_bucket';
5250
+ locale: string;
5251
+ presentation: {
5252
+ mode: 'auto';
5253
+ styles: ResolvedTemporalStyleSet;
5254
+ };
5255
+ } | {
5256
+ type: 'temporal_bucket';
5257
+ locale: string;
5258
+ presentation: {
5259
+ mode: 'preset';
5260
+ preset: TemporalBucketPreset;
5261
+ } | {
5262
+ mode: 'pattern';
5263
+ pattern: string;
5264
+ };
5183
5265
  };
5184
5266
 
5185
5267
  declare type ResolvedTemporalBucketPresentationEntry = {
@@ -5188,6 +5270,14 @@ declare type ResolvedTemporalBucketPresentationEntry = {
5188
5270
  format: ResolvedTemporalBucketFormat;
5189
5271
  };
5190
5272
 
5273
+ declare type ResolvedTemporalStyleSet = {
5274
+ dateStyle: LocaleStyle;
5275
+ dateTime: {
5276
+ dateStyle: LocaleStyle;
5277
+ timeStyle: LocaleStyle;
5278
+ };
5279
+ };
5280
+
5191
5281
  declare type ResolvedValueFormatPreferences = {
5192
5282
  locale: string;
5193
5283
  dateStyle: LocaleStyle;
@@ -5805,6 +5895,7 @@ declare type SemaphorResultColumn = {
5805
5895
  source?: SemaphorFieldRef['source'];
5806
5896
  derivedField?: SemaphorDerivedFieldDefinition;
5807
5897
  temporalBucket?: TemporalBucketMetadata;
5898
+ rawTemporal?: RawTemporalValueMetadata;
5808
5899
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
5809
5900
  };
5810
5901
 
@@ -736,6 +736,11 @@ declare type DefaultDateFilter = RelativeDateFilter | FixedMonthDefaultDateFilte
736
736
  */
737
737
  declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
738
738
  role: 'detail';
739
+ /**
740
+ * Query transport policy for ungrouped temporal values. This marker is
741
+ * projected into executable config and is never persisted authoring state.
742
+ */
743
+ dateValueMode?: 'canonical' | 'formatted';
739
744
  dateFormat?: DateFormatValue;
740
745
  customFormat?: string;
741
746
  /**