react-semaphor 0.1.526 → 0.1.528

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 (180) hide show
  1. package/DATA_APP_SDK.md +5 -1
  2. package/dist/analytics-protocol/index.js +1190 -296
  3. package/dist/brand-studio/index.js +15 -15
  4. package/dist/briefings/index.js +50 -49
  5. package/dist/chunks/{calculated-field-identity-D1ofR4KJ.js → calculated-field-identity-DUu-tCQw.js} +66 -65
  6. package/dist/chunks/{card-config-utils-9sv4e-Vb.js → card-config-utils-BdPceiw8.js} +68 -65
  7. package/dist/chunks/{constants-DeLIHVAW.js → constants-DNWVy8Y3.js} +4 -4
  8. package/dist/chunks/dashboard-BkskKMck.js +14 -0
  9. package/dist/chunks/{dashboard-briefing-launcher-DXz1GhFZ.js → dashboard-briefing-launcher-Bb0RhGRC.js} +372 -359
  10. package/dist/chunks/{dashboard-controls-Df8qOSrs.js → dashboard-controls-loWTHPMi.js} +739 -686
  11. package/dist/chunks/{dashboard-json-Xldp0qww.js → dashboard-json-DUci_SOR.js} +10 -10
  12. package/dist/chunks/{edit-dashboard-visual-COHBqyic.js → edit-dashboard-visual-z9WN26w7.js} +6603 -6572
  13. package/dist/chunks/{editor-action-buttons-DahlP57T.js → editor-action-buttons-CGSFK9S-.js} +266 -267
  14. package/dist/chunks/{field-aggregations-BQjogiI1.js → field-aggregations-CdXSo1pb.js} +19 -19
  15. package/dist/chunks/{field-dependencies-v-lJNzC7.js → field-dependencies-CGYic38w.js} +1 -1
  16. package/dist/chunks/{index-CbjuruKe.js → index-CTYnXU85.js} +781 -780
  17. package/dist/chunks/{matrix-analytical-definition-BimC4XIV.js → matrix-analytical-definition-BJyH5-99.js} +1 -1
  18. package/dist/chunks/{matrix-card-CIlz0Dnp.js → matrix-card-DhykwdZs.js} +7 -6
  19. package/dist/chunks/{matrix-control-sources-2VAzGlt8.js → matrix-control-sources-BV9ywFtJ.js} +11 -11
  20. package/dist/chunks/{matrix-definition-E5gXXSTZ.js → matrix-definition-Cdn3LoxW.js} +3 -3
  21. package/dist/chunks/{semantic-format-Baqp8kD_.js → matrix-formatter-1Mm8x8w7.js} +655 -511
  22. package/dist/chunks/{matrix-member-presentation-Bw7-JCrr.js → matrix-member-presentation-BBW0n1iY.js} +1 -1
  23. package/dist/chunks/matrix-operation-contract-Dp7kFpVk.js +1383 -0
  24. package/dist/chunks/{metric-comparison-BphoJ9bq.js → metric-comparison-Crljx_XY.js} +15 -10
  25. package/dist/chunks/{numeric-presentation-VhMUHfrJ.js → numeric-presentation-LvnNY5Ma.js} +68 -68
  26. package/dist/chunks/pivot-header-presentation-CZa3556D.js +618 -0
  27. package/dist/chunks/{pivot-result-identity-BzUQiCEV.js → pivot-result-identity-CY__BuwI.js} +1 -1
  28. package/dist/chunks/{pivot-result-lifecycle-BFO354lk.js → pivot-result-lifecycle-Bqdtknud.js} +259 -204
  29. package/dist/chunks/{raw-temporal-7bFbXd2a.js → raw-temporal-CdnA_OXJ.js} +10 -10
  30. package/dist/chunks/{raw-temporal-contract-BQZIJ1fn.js → raw-temporal-contract-Bc9z83t-.js} +1 -1
  31. package/dist/chunks/relative-date-DAF9J7mt.js +456 -0
  32. package/dist/chunks/{report-preferences-dialog-BcH-0lR-.js → report-preferences-dialog-VV0-Ro6F.js} +131 -132
  33. package/dist/chunks/{report-runtime-context-CxIoGyNM.js → report-runtime-context-CtaGGlit.js} +1 -1
  34. package/dist/chunks/{selection-reducer-NF5C07yM.js → selection-reducer-IZjBSU6Z.js} +47 -26
  35. package/dist/chunks/semantic-format-BBLvfwua.js +192 -0
  36. package/dist/chunks/{semaphor-ready-indicator-BLRDuLr4.js → semaphor-ready-indicator-DbA4mVQL.js} +49909 -46207
  37. package/dist/chunks/{slider-BYIH4icg.js → slider-DpiJG8lv.js} +81 -82
  38. package/dist/chunks/{source-entity-resolution-Bzefiive.js → source-entity-resolution-Bde29mqE.js} +25 -25
  39. package/dist/chunks/switch-C4YH-W1X.js +24003 -0
  40. package/dist/chunks/{temporal-bucket-PcLFSYWX.js → temporal-bucket-DlFuhCnT.js} +6 -6
  41. package/dist/chunks/{temporal-bucket-contract-DTLDRzgV.js → temporal-bucket-contract-C6lUGPS3.js} +1 -1
  42. package/dist/chunks/temporal-input-presentation-DyMWCZYh.js +195 -0
  43. package/dist/chunks/{token-types-BC6RcUY8.js → token-types-UjyNz95-.js} +1 -1
  44. package/dist/chunks/{validators-CsdOtZI6.js → validators-CQcG0EPN.js} +852 -731
  45. package/dist/chunks/zoned-wall-clock-BkxV9jS2.js +46 -0
  46. package/dist/dashboard/index.js +1 -1
  47. package/dist/dashboard-authoring/index.js +138 -137
  48. package/dist/data-app-sdk/index.js +12 -12
  49. package/dist/data-app-sdk-adapters/index.js +23 -22
  50. package/dist/data-app-sdk-validation/index.js +27 -26
  51. package/dist/format-utils/index.js +247 -329
  52. package/dist/index.js +165 -168
  53. package/dist/report-runtime-context/index.js +2 -2
  54. package/dist/style.css +1 -1
  55. package/dist/surfboard/index.js +1 -1
  56. package/dist/types/briefings/index.d.ts +3 -0
  57. package/dist/types/components/explorer/filters/card-date-filter.d.ts +13 -5
  58. package/dist/types/components/explorer/filters/card-date-selection.d.ts +28 -0
  59. package/dist/types/components/sharing-and-management/dashboard-actions-menu.d.ts +1 -1
  60. package/dist/types/components/sharing-and-management/hooks/use-resource-management.d.ts +0 -1
  61. package/dist/types/components/surfboard/download-settings-dialog.d.ts +8 -0
  62. package/dist/types/components/surfboard/filter/types.d.ts +8 -29
  63. package/dist/types/components/surfboard/filter/use-dashboard-filter-mapping-popover.d.ts +5 -1
  64. package/dist/types/components/ui-custom/date-range-picker.d.ts +18 -2
  65. package/dist/types/components/ui-custom/date-range-presets.d.ts +8 -21
  66. package/dist/types/components/ui-custom/report-calendar.d.ts +18 -0
  67. package/dist/types/components/visual/aggregated-table/utils/export-utils.d.ts +3 -5
  68. package/dist/types/components/visual/data-table/data-table-toolbar.d.ts +1 -1
  69. package/dist/types/components/visual/pivot-table/utils/pivot-table-export-utils.d.ts +3 -1
  70. package/dist/types/index.js +5 -5
  71. package/dist/types/lib/api/exports-api.d.ts +3 -0
  72. package/dist/types/lib/csv-download.d.ts +9 -0
  73. package/dist/types/lib/csv-encoding-options.d.ts +6 -0
  74. package/dist/types/lib/dashboard-inputs/dashboard-filter-mapping-storage-transition.d.ts +2 -1
  75. package/dist/types/lib/dashboard-navigation/build-carried-click-context.d.ts +0 -1
  76. package/dist/types/lib/document/document-input-runtime.d.ts +2 -1
  77. package/dist/types/lib/export-utils.d.ts +17 -15
  78. package/dist/types/lib/hooks/explorer/use-filter-builder.d.ts +2 -2
  79. package/dist/types/lib/hooks/use-relative-date-summarizer.d.ts +7 -0
  80. package/dist/types/lib/matrix-table/matrix-application-adapter.d.ts +3 -2
  81. package/dist/types/lib/matrix-table/matrix-card-adapter.d.ts +1 -1
  82. package/dist/types/lib/matrix-table/matrix-card-draft.d.ts +1 -1
  83. package/dist/types/lib/matrix-table/matrix-dataset-history.d.ts +47 -0
  84. package/dist/types/lib/matrix-table/matrix-delivery.d.ts +7 -3
  85. package/dist/types/lib/matrix-table/matrix-execution-context.d.ts +2 -0
  86. package/dist/types/lib/matrix-table/matrix-query-transport.d.ts +4 -1
  87. package/dist/types/lib/matrix-table/matrix-runtime-types.d.ts +105 -4
  88. package/dist/types/lib/matrix-table/matrix-runtime.d.ts +43 -2
  89. package/dist/types/lib/matrix-table/use-matrix.d.ts +6 -0
  90. package/dist/types/lib/query-context/build-card-query-context.d.ts +5 -1
  91. package/dist/types/lib/query-context/build-dashboard-card-query-contract.d.ts +0 -1
  92. package/dist/types/lib/query-context/build-global-date-comparison-context.d.ts +1 -2
  93. package/dist/types/lib/query-context/compile-dashboard-card-filters.d.ts +1 -2
  94. package/dist/types/lib/query-context/dashboard-card-query-key.d.ts +10 -0
  95. package/dist/types/lib/query-context/query-auth-scope.d.ts +5 -0
  96. package/dist/types/lib/stores/dashboard-store.d.ts +9 -4
  97. package/dist/types/lib/temporal-filter/temporal-filter-utils.d.ts +9 -2
  98. package/dist/types/lib/types/common-types.d.ts +5 -0
  99. package/dist/types/lib/types/explorer-types.d.ts +14 -0
  100. package/dist/types/lib/types/semantic-types.d.ts +4 -2
  101. package/dist/types/lib/types/token-types.d.ts +0 -1
  102. package/dist/types/lib/utils/aggregate-expression-utils.d.ts +0 -4
  103. package/dist/types/lib/utils/card-definition.d.ts +1 -1
  104. package/dist/types/lib/utils/date-timezone-utils.d.ts +4 -46
  105. package/dist/types/lib/utils/filter-default-value-utils.d.ts +8 -2
  106. package/dist/types/lib/utils/inline-filter-utils.d.ts +3 -2
  107. package/dist/types/lib/utils/relative-date-description.d.ts +38 -0
  108. package/dist/types/shared/analytics-protocol/aggregate-expression.d.ts +89 -0
  109. package/dist/types/shared/analytics-protocol/analytics-refusal.d.ts +32 -0
  110. package/dist/types/shared/analytics-protocol/contracts.d.ts +48 -7
  111. package/dist/types/shared/analytics-protocol/index.d.ts +15 -1
  112. package/dist/types/shared/analytics-protocol/matrix-definition-contract.d.ts +20 -20
  113. package/dist/types/shared/analytics-protocol/matrix-operation-contract.d.ts +10 -10
  114. package/dist/types/shared/analytics-protocol/matrix-operation-request.d.ts +8 -8
  115. package/dist/types/shared/analytics-protocol/matrix-window-contract.d.ts +61 -6
  116. package/dist/types/shared/analytics-protocol/measure-aggregation-profile.d.ts +63 -0
  117. package/dist/types/shared/analytics-protocol/metric-comparison.d.ts +9 -3
  118. package/dist/types/shared/analytics-protocol/operation-temporal-state.d.ts +64 -0
  119. package/dist/types/shared/analytics-protocol/relative-date-filter.d.ts +61 -0
  120. package/dist/types/shared/analytics-protocol/relative-date-label.d.ts +20 -0
  121. package/dist/types/shared/analytics-protocol/runtime-schemas.d.ts +0 -2
  122. package/dist/types/shared/analytics-protocol/time-window-schema.d.ts +314 -0
  123. package/dist/types/shared/analytics-protocol/time-window.d.ts +13 -0
  124. package/dist/types/shared/dashboard-authoring/matrix-delivery.d.ts +8 -4
  125. package/dist/types/shared/format-utils/exporters/csv-utils.d.ts +46 -15
  126. package/dist/types/shared/format-utils/exporters/index.d.ts +2 -3
  127. package/dist/types/shared/format-utils/flat-table-export-totals.d.ts +2 -1
  128. package/dist/types/shared/format-utils/matrix-export-presentation.d.ts +2 -2
  129. package/dist/types/shared/format-utils/types/format-types.d.ts +0 -42
  130. package/dist/types/shared/temporal/calendar-periods.d.ts +56 -0
  131. package/dist/types/shared/temporal/index.d.ts +5 -0
  132. package/dist/types/shared/temporal/relative-date.d.ts +21 -0
  133. package/dist/types/shared/temporal/temporal-parity-fixtures.d.ts +73 -0
  134. package/dist/types/shared/temporal/time-window-periods.d.ts +21 -0
  135. package/dist/types/shared/temporal/zoned-wall-clock.d.ts +23 -0
  136. package/package.json +1 -17
  137. package/src/data-app-sdk/README.md +6 -3
  138. package/dist/chunks/code-highlight-994tgM9v.js +0 -22265
  139. package/dist/chunks/dashboard-CsHvEtjN.js +0 -15
  140. package/dist/chunks/dashboard-date-comparison-definition-BqNhECUr.js +0 -183
  141. package/dist/chunks/matrix-formatter-WBgtebUT.js +0 -341
  142. package/dist/chunks/matrix-operation-contract-D32U2CSw.js +0 -1802
  143. package/dist/chunks/mouse-pointer-2-BZvGk45-.js +0 -19
  144. package/dist/chunks/pivot-header-presentation-CGtudHo7.js +0 -661
  145. package/dist/chunks/pre-block-Cq1RqhZX.js +0 -3987
  146. package/dist/chunks/search-CJz-QQ0Q.js +0 -24
  147. package/dist/chunks/switch-XaAACBrJ.js +0 -2234
  148. package/dist/chunks/temporal-input-presentation-2RJrvmYL.js +0 -222
  149. package/dist/chunks/update-policy-DhAUtiC8.js +0 -913
  150. package/dist/data-app-builder/index.js +0 -3666
  151. package/dist/data-app-builder-browser-runtime/index.js +0 -8
  152. package/dist/data-app-codegen/index.js +0 -22
  153. package/dist/data-app-codegen-node/index.js +0 -1807
  154. package/dist/types/components/data-app-runtime/published-data-app-runtime.d.ts +0 -7
  155. package/dist/types/components/surfboard/json-to-csv.d.ts +0 -7
  156. package/dist/types/components/visual/data-table/utils/export-utils.d.ts +0 -31
  157. package/dist/types/data-app-builder/browser-runtime.d.ts +0 -174
  158. package/dist/types/data-app-builder/constants.d.ts +0 -14
  159. package/dist/types/data-app-builder/data-app-builder.d.ts +0 -14
  160. package/dist/types/data-app-builder/index.d.ts +0 -1
  161. package/dist/types/data-app-builder/lib/api.d.ts +0 -36
  162. package/dist/types/data-app-builder/lib/context-select.d.ts +0 -3
  163. package/dist/types/data-app-builder/lib/diagnostics.d.ts +0 -12
  164. package/dist/types/data-app-builder/lib/file-tree.d.ts +0 -2
  165. package/dist/types/data-app-builder/types.d.ts +0 -558
  166. package/dist/types/data-app-builder-browser-runtime.d.ts +0 -2
  167. package/dist/types/data-app-builder.d.ts +0 -2
  168. package/dist/types/data-app-codegen/generate-contract.d.ts +0 -26
  169. package/dist/types/data-app-codegen/generated-contract-files.d.ts +0 -7
  170. package/dist/types/data-app-codegen/generated-contract-validation.d.ts +0 -13
  171. package/dist/types/data-app-codegen/index.d.ts +0 -6
  172. package/dist/types/data-app-codegen/live-execution.d.ts +0 -42
  173. package/dist/types/data-app-codegen/node.d.ts +0 -2
  174. package/dist/types/data-app-codegen/update-policy.d.ts +0 -25
  175. package/dist/types/data-app-codegen/validation.d.ts +0 -8
  176. package/dist/types/data-app-codegen-node.d.ts +0 -2
  177. package/dist/types/data-app-codegen.d.ts +0 -2
  178. package/dist/types/shared/analytics-protocol/data-app-codegen-summary.d.ts +0 -418
  179. package/dist/types/shared/format-utils/exporters/pivot-exporter.d.ts +0 -13
  180. package/dist/types/shared/format-utils/exporters/table-exporter.d.ts +0 -10
@@ -1,5 +1,6 @@
1
1
  import { TDashboard } from '../types/common-types.js';
2
2
  import { TFilterValue } from '../../components/surfboard/filter/types.js';
3
+ import { DefaultsCalendar } from './filter-default-value-utils.js';
3
4
  /**
4
5
  * Hydrate inline filter defaults for all cards in the dashboard.
5
6
  * Returns a map of cardId → TFilterValue[] for runtime-only storage.
@@ -9,7 +10,7 @@ import { TFilterValue } from '../../components/surfboard/filter/types.js';
9
10
  * function only owns traversal and card-scoped runtime storage.
10
11
  *
11
12
  * @param dashboard - The dashboard to extract inline filter defaults from
12
- * @param timezone - Optional timezone for date calculations (defaults to browser timezone)
13
+ * @param calendar - The report calendar (or its timezone) for date defaults (defaults to the browser timezone)
13
14
  * @returns Map of cardId to array of filter values
14
15
  */
15
- export declare function computeInlineFilterDefaults(dashboard: TDashboard, timezone?: string): Record<string, TFilterValue[]>;
16
+ export declare function computeInlineFilterDefaults(dashboard: TDashboard, calendar?: DefaultsCalendar): Record<string, TFilterValue[]>;
@@ -0,0 +1,38 @@
1
+ import { RelativeDateFilter } from '../../shared/analytics-protocol/relative-date-filter.js';
2
+ import { CalendarContext } from '../../shared/report-runtime-context/index.js';
3
+ import { ResolvedTemporalValueFormatPreferences } from '../../shared/value-format-preferences/index.js';
4
+ export type RelativeDateDescription = {
5
+ label: string;
6
+ /** The window as of the calendar's anchor, or null when the browser can't know it. */
7
+ range: {
8
+ start: Date;
9
+ end: Date;
10
+ } | null;
11
+ };
12
+ export type RelativeDateCalendar = Pick<CalendarContext, 'tz' | 'weekStart' | 'anchor'>;
13
+ export declare const RELATIVE_DATES_FOLLOW_CALENDAR = "Dates follow your calendar each time the card runs.";
14
+ /** A window that counts back from the latest data has no dates the browser can know. */
15
+ export declare const RELATIVE_DATES_FOLLOW_DATA = "Dates count back from the latest data each time the card runs.";
16
+ /** What a latest-value condition reads as (analytics kernel K13). */
17
+ export declare const LATEST_VALUE_LABEL = "Latest value";
18
+ /** Display-only description of a relative date; the server resolves the real window. */
19
+ export declare function describeRelativeDate(relative: RelativeDateFilter, calendar: RelativeDateCalendar): RelativeDateDescription;
20
+ /** What a relative date reads as: its label, and its dates when known. */
21
+ export type RelativeDateSummary = {
22
+ label: string;
23
+ /** The current window as the shared date-input presenter writes it. */
24
+ dates: string | null;
25
+ /** The current window itself, when `dates` is known. */
26
+ range: {
27
+ start: Date;
28
+ end: Date;
29
+ } | null;
30
+ };
31
+ /**
32
+ * The label and today's dates of a relative date, written in the viewer's
33
+ * date preferences: the same text a text card shows for a date filter.
34
+ */
35
+ export declare function summarizeRelativeDate(relative: RelativeDateFilter, context: {
36
+ calendar: RelativeDateCalendar;
37
+ preferences: ResolvedTemporalValueFormatPreferences;
38
+ }): RelativeDateSummary;
@@ -0,0 +1,89 @@
1
+ /**
2
+ * The one aggregate vocabulary and expression scanner for measure
3
+ * expressions (analytics owners plan, owner A). Every consumer that asks
4
+ * "does this expression aggregate, with which functions, and how are they
5
+ * combined?" reads it here instead of keeping its own function list or
6
+ * regular expression.
7
+ *
8
+ * Expressions are Semaphor SQL templates: `{field_N}` tokens for inputs,
9
+ * SQL function calls, string literals in single or double quotes.
10
+ */
11
+ /** What an aggregate function computes, for analytics decisions. */
12
+ export type AggregationFunctionKind = 'count' | 'count_distinct' | 'sum' | 'avg' | 'min' | 'max' | 'median'
13
+ /** Unchanged when input rows repeat: BOOL_AND, BIT_OR, ANY_VALUE, ... */
14
+ | 'repeat_safe_other' | 'other';
15
+ /** Whether a SQL function name is an aggregate. */
16
+ export declare function isAggregateFunctionName(name: string): boolean;
17
+ /**
18
+ * What an aggregate call computes. A DISTINCT argument makes COUNT a
19
+ * distinct count; any other aggregate over DISTINCT values counts each
20
+ * value once, so it is unchanged by repeated rows.
21
+ */
22
+ export declare function aggregationFunctionKind(name: string, distinct?: boolean): AggregationFunctionKind;
23
+ /** One outermost aggregate call in an expression. */
24
+ export type ScannedAggregateCall = {
25
+ name: string;
26
+ kind: AggregationFunctionKind;
27
+ distinct: boolean;
28
+ /** Followed by OVER (...): a window, not a group aggregate. */
29
+ windowed: boolean;
30
+ /** Input tokens inside the call (`field_N` names). */
31
+ tokens: string[];
32
+ /** Source offsets for compiler rewrites; end excludes FILTER/OVER suffixes. */
33
+ span: {
34
+ start: number;
35
+ end: number;
36
+ argumentStart: number;
37
+ argumentEnd: number;
38
+ };
39
+ argumentCount: number;
40
+ filtered: boolean;
41
+ };
42
+ export type ScannedAggregateExpression = {
43
+ calls: ScannedAggregateCall[];
44
+ /** An aggregate call inside another aggregate call. */
45
+ nestedAggregate: boolean;
46
+ windowed: boolean;
47
+ /** Input tokens that occur outside every aggregate call, in order. */
48
+ tokensOutsideAggregates: string[];
49
+ /** All data reads belong to recognized aggregate calls; the rest consists
50
+ * only of literals, operators and understood scalar composition. */
51
+ aggregateInputsComplete: boolean;
52
+ /**
53
+ * The expression with each outermost aggregate call replaced by `@N` (its
54
+ * index in `calls`) and each token outside a call by `#token`, for shape
55
+ * analysis.
56
+ */
57
+ skeleton: string;
58
+ };
59
+ /**
60
+ * Scans an expression's aggregate calls (outermost only), their DISTINCT,
61
+ * FILTER and OVER suffixes, and the input tokens outside them.
62
+ */
63
+ export declare function scanAggregateExpression(expression: string, resolvedInputTokens?: ReadonlySet<string>): ScannedAggregateExpression;
64
+ /** A unit of an expression skeleton: an aggregate call or an input token. */
65
+ export type SkeletonUnit = {
66
+ kind: 'call';
67
+ index: number;
68
+ } | {
69
+ kind: 'token';
70
+ token: string;
71
+ };
72
+ /**
73
+ * The shape of a skeleton: one unit (possibly in parentheses), a linear
74
+ * combination of units (sums and differences, scaled by numeric constants),
75
+ * or anything else (ratios, products of units, functions, CASE, constants
76
+ * added to units).
77
+ */
78
+ export type SkeletonShape = {
79
+ kind: 'single';
80
+ unit: SkeletonUnit;
81
+ } | {
82
+ kind: 'linear';
83
+ units: SkeletonUnit[];
84
+ } | {
85
+ kind: 'other';
86
+ hasDivision: boolean;
87
+ };
88
+ /** Classifies a skeleton from `scanAggregateExpression`. */
89
+ export declare function skeletonShape(skeleton: string): SkeletonShape;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * One typed refusal for governed analytics (analytics owners plan, owner C).
3
+ * Wherever a query is refused or fails, the refusal carries one code from
4
+ * this list, the structured details, and the next step, unchanged through
5
+ * every strategy to the tool that maps it once. Input validation keeps its
6
+ * own specific codes (`invalid_dimension`, `missing_measure`, ...); every
7
+ * other failure uses these.
8
+ */
9
+ export declare const ANALYTICS_REFUSAL_CODES: readonly ["invalid_request", "missing_relationship", "ambiguous_relationship", "unsafe_join", "unsupported_capability", "capability_required", "forbidden", "not_found", "execution_failed", "timeout", "budget_exceeded", "cancelled"];
10
+ export type AnalyticsRefusalCode = (typeof ANALYTICS_REFUSAL_CODES)[number];
11
+ export type AnalyticsRefusal = {
12
+ code: AnalyticsRefusalCode;
13
+ message: string;
14
+ /** Structured specifics: planner code, datasets, path, field, SQL. */
15
+ details?: Record<string, unknown>;
16
+ /** What the caller can do next; absent when retrying is the only option. */
17
+ nextStep?: string;
18
+ /** Only warehouse failures and timeouts are worth retrying unchanged. */
19
+ retryable: boolean;
20
+ /** HTTP status for routes that answer with one. */
21
+ status: number;
22
+ };
23
+ export declare function isAnalyticsRefusalCode(value: unknown): value is AnalyticsRefusalCode;
24
+ /** Builds a refusal with the code's status and retry rule. */
25
+ export declare function analyticsRefusal(code: AnalyticsRefusalCode, message: string, extra?: {
26
+ details?: Record<string, unknown>;
27
+ nextStep?: string;
28
+ status?: number;
29
+ }): AnalyticsRefusal;
30
+ /** Reads a refusal carried on a value (an error, a result, a response). */
31
+ export declare function readAnalyticsRefusal(value: unknown): AnalyticsRefusal | undefined;
32
+ export declare function publicAnalyticsRefusal(refusal: Pick<AnalyticsRefusal, 'code'> & Partial<Pick<AnalyticsRefusal, 'status' | 'retryable'>>): AnalyticsRefusal;
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { matrixAnalyticalIntentSchema } from './matrix-definition-contract.js';
3
3
  import { matrixResultSchema } from './matrix-window-contract.js';
4
4
  import { CalendarContext } from '../report-runtime-context/index.js';
5
+ import { DateUnit } from './relative-date-filter.js';
5
6
  export type SemaphorProtocolVersion = 1;
6
7
  export type SemaphorDialect = 'postgres' | 'mysql' | 'mssql' | 'snowflake' | 'clickhouse' | 'bigquery' | 'redshift' | 'duckdb' | 'sqlite' | 'unknown';
7
8
  export type SemaphorSourceLevel = 'database' | 'schema' | 'table';
@@ -351,12 +352,20 @@ export type SemaphorRelativeTimeWindow = {
351
352
  anchor?: 'now' | 'latest_available';
352
353
  completeness?: 'include_partial' | 'complete_periods';
353
354
  };
355
+ /** A whole calendar period, such as this month or the previous quarter. */
356
+ export type SemaphorCalendarTimeWindow = {
357
+ kind: 'calendar';
358
+ unit: DateUnit;
359
+ period: 'this' | 'previous';
360
+ /** Only with period "this": the period so far, ending at the anchor. */
361
+ toDate?: boolean;
362
+ };
354
363
  export type SemaphorAbsoluteTimeWindow = {
355
364
  kind: 'absolute';
356
365
  start: string;
357
366
  end: string;
358
367
  };
359
- export type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
368
+ export type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorCalendarTimeWindow | SemaphorAbsoluteTimeWindow;
360
369
  export type SemaphorPaginationRequest = {
361
370
  page: number;
362
371
  pageSize: number;
@@ -723,7 +732,45 @@ export type SemaphorRelationshipDiagnostics = {
723
732
  fanoutRisk?: {
724
733
  status: 'none' | 'warning' | 'error' | 'unknown';
725
734
  message?: string;
735
+ /** The planner's structured findings (analytics owners plan, owner B). */
736
+ findings?: SemaphorJoinFinding[];
726
737
  };
738
+ /** How queries ran their joins; mixed means component queries used different strategies. */
739
+ joinStrategy?: 'plain_join' | 'aggregate_then_join' | 'mixed' | 'unknown';
740
+ };
741
+ /** One join walked from a measure's dataset, with its cardinality that way. */
742
+ export type SemaphorJoinStep = {
743
+ from: string;
744
+ to: string;
745
+ relationship?: string;
746
+ walked: 'to_one' | 'to_many' | 'many_to_many' | 'unknown';
747
+ };
748
+ /** What a join does to a measure's rows, as the planner classifies it. */
749
+ export type SemaphorJoinFinding =
750
+ /** Rows repeat per member of a bridge or dimension many side: values per member are attributions. */
751
+ {
752
+ kind: 'attribution';
753
+ measureDataset: string;
754
+ via: SemaphorJoinStep[];
755
+ }
756
+ /** Rows repeat per row of another fact (a chasm trap): values are inflated. */
757
+ | {
758
+ kind: 'inflation';
759
+ measureDataset: string;
760
+ otherFact: string;
761
+ via: SemaphorJoinStep[];
762
+ }
763
+ /** A step's cardinality isn't authored, so repeats can't be ruled out. */
764
+ | {
765
+ kind: 'unknown_cardinality';
766
+ measureDataset: string;
767
+ via: SemaphorJoinStep[];
768
+ }
769
+ /** Measures from facts with no direct relationship, combined at a shared grain. */
770
+ | {
771
+ kind: 'cross_fact';
772
+ datasets: string[];
773
+ sharedGrain?: string[];
727
774
  };
728
775
  export type SemaphorAnalyticsPopulation = {
729
776
  scope: 'filtered_query';
@@ -816,12 +863,6 @@ export type SemaphorOperationIntent = {
816
863
  targetDashboardId?: string;
817
864
  analyticsIntent?: SemaphorAnalyticsIntent;
818
865
  context?: Record<string, unknown>;
819
- } | {
820
- version: SemaphorProtocolVersion;
821
- kind: 'data_app_change';
822
- instruction: string;
823
- analyticsIntent?: SemaphorAnalyticsIntent;
824
- context?: Record<string, unknown>;
825
866
  };
826
867
  export type SemaphorRecoveryToolCall = {
827
868
  name: 'semaphor_get_dataset_schema' | 'semaphor_analyze' | 'semaphor_query_sql_advanced' | string;
@@ -5,7 +5,6 @@ export * from './option-relevance.js';
5
5
  export * from './validators.js';
6
6
  export * from './analyze-result-contract.js';
7
7
  export * from './catalog-field-grounding.js';
8
- export * from './data-app-codegen-summary.js';
9
8
  export * from './runtime-schemas.js';
10
9
  export * from './source-capabilities.js';
11
10
  export * from './catalog-source-address.js';
@@ -21,6 +20,21 @@ export * from './selection-filter-compiler.js';
21
20
  export * from './temporal-context.js';
22
21
  export * from './temporal-bucket-contract.js';
23
22
  export * from './raw-temporal-contract.js';
23
+ export * from './relative-date-filter.js';
24
+ export * from './relative-date-label.js';
25
+ export * from './operation-temporal-state.js';
26
+ export * from './aggregate-expression.js';
27
+ export * from './measure-aggregation-profile.js';
28
+ export * from './analytics-refusal.js';
29
+ /**
30
+ * The saved filter contract, strict: a key outside it (an execution-only
31
+ * field the server adds while it runs a filter) fails to parse, so a save
32
+ * point can prove it saves no run state (temporal predicate contract E2).
33
+ */
34
+ export { filterGroupSchema as savedFilterGroupSchema } from './explorer-input-schemas.js';
35
+ export * from '../temporal/index.js';
36
+ export * from './time-window.js';
37
+ export * from './time-window-schema.js';
24
38
  export * from './scalar-value.js';
25
39
  export * from './matrix-window-contract.js';
26
40
  export * from './matrix-member-presentation.js';
@@ -300,7 +300,7 @@ declare const specShape: z.ZodObject<{
300
300
  levelId: string;
301
301
  axis: "columns" | "rows";
302
302
  direction: "asc" | "desc";
303
- nulls: "first" | "last";
303
+ nulls: "last" | "first";
304
304
  }[];
305
305
  rankings: readonly MatrixRanking[];
306
306
  filters?: FilterGroup | undefined;
@@ -367,7 +367,7 @@ declare const specShape: z.ZodObject<{
367
367
  levelId: string;
368
368
  axis: "columns" | "rows";
369
369
  direction: "asc" | "desc";
370
- nulls: "first" | "last";
370
+ nulls: "last" | "first";
371
371
  }[];
372
372
  rankings: readonly MatrixRanking[];
373
373
  filters?: FilterGroup | undefined;
@@ -507,7 +507,7 @@ declare const authoringSpecShape: z.ZodObject<{
507
507
  levelId: string;
508
508
  axis: "columns" | "rows";
509
509
  direction: "asc" | "desc";
510
- nulls: "first" | "last";
510
+ nulls: "last" | "first";
511
511
  }[];
512
512
  rankings: readonly MatrixRanking[];
513
513
  filters?: FilterGroup | undefined;
@@ -574,7 +574,7 @@ declare const authoringSpecShape: z.ZodObject<{
574
574
  levelId: string;
575
575
  axis: "columns" | "rows";
576
576
  direction: "asc" | "desc";
577
- nulls: "first" | "last";
577
+ nulls: "last" | "first";
578
578
  }[];
579
579
  rankings: readonly MatrixRanking[];
580
580
  filters?: FilterGroup | undefined;
@@ -714,7 +714,7 @@ declare const analyticalIntentShape: z.ZodObject<{
714
714
  levelId: string;
715
715
  axis: "columns" | "rows";
716
716
  direction: "asc" | "desc";
717
- nulls: "first" | "last";
717
+ nulls: "last" | "first";
718
718
  }[];
719
719
  rankings: readonly MatrixRanking[];
720
720
  filters?: FilterGroup | undefined;
@@ -782,7 +782,7 @@ declare const analyticalIntentShape: z.ZodObject<{
782
782
  levelId: string;
783
783
  axis: "columns" | "rows";
784
784
  direction: "asc" | "desc";
785
- nulls: "first" | "last";
785
+ nulls: "last" | "first";
786
786
  }[];
787
787
  rankings: readonly MatrixRanking[];
788
788
  filters?: FilterGroup | undefined;
@@ -3837,7 +3837,7 @@ declare const viewStateShape: z.ZodObject<{
3837
3837
  levelId: string;
3838
3838
  axis: "columns" | "rows";
3839
3839
  direction: "asc" | "desc";
3840
- nulls: "first" | "last";
3840
+ nulls: "last" | "first";
3841
3841
  }[];
3842
3842
  }, {
3843
3843
  columns: {
@@ -3904,7 +3904,7 @@ declare const viewStateShape: z.ZodObject<{
3904
3904
  levelId: string;
3905
3905
  axis: "columns" | "rows";
3906
3906
  direction: "asc" | "desc";
3907
- nulls: "first" | "last";
3907
+ nulls: "last" | "first";
3908
3908
  }[];
3909
3909
  }>;
3910
3910
  type MatrixViewStateSchema = z.ZodEffects<typeof viewStateShape>;
@@ -4200,7 +4200,7 @@ declare const definitionInputShape: z.ZodObject<{
4200
4200
  levelId: string;
4201
4201
  axis: "columns" | "rows";
4202
4202
  direction: "asc" | "desc";
4203
- nulls: "first" | "last";
4203
+ nulls: "last" | "first";
4204
4204
  }[];
4205
4205
  rankings: readonly MatrixRanking[];
4206
4206
  filters?: FilterGroup | undefined;
@@ -4316,7 +4316,7 @@ declare const definitionInputShape: z.ZodObject<{
4316
4316
  levelId: string;
4317
4317
  axis: "columns" | "rows";
4318
4318
  direction: "asc" | "desc";
4319
- nulls: "first" | "last";
4319
+ nulls: "last" | "first";
4320
4320
  }[];
4321
4321
  } | undefined;
4322
4322
  }, {
@@ -4601,7 +4601,7 @@ declare const definitionInputShape: z.ZodObject<{
4601
4601
  levelId: string;
4602
4602
  axis: "columns" | "rows";
4603
4603
  direction: "asc" | "desc";
4604
- nulls: "first" | "last";
4604
+ nulls: "last" | "first";
4605
4605
  }[];
4606
4606
  rankings: readonly MatrixRanking[];
4607
4607
  filters?: FilterGroup | undefined;
@@ -4717,7 +4717,7 @@ declare const definitionInputShape: z.ZodObject<{
4717
4717
  levelId: string;
4718
4718
  axis: "columns" | "rows";
4719
4719
  direction: "asc" | "desc";
4720
- nulls: "first" | "last";
4720
+ nulls: "last" | "first";
4721
4721
  }[];
4722
4722
  } | undefined;
4723
4723
  }>;
@@ -5012,7 +5012,7 @@ declare const configShape: z.ZodObject<{
5012
5012
  levelId: string;
5013
5013
  axis: "columns" | "rows";
5014
5014
  direction: "asc" | "desc";
5015
- nulls: "first" | "last";
5015
+ nulls: "last" | "first";
5016
5016
  }[];
5017
5017
  rankings: readonly MatrixRanking[];
5018
5018
  filters?: FilterGroup | undefined;
@@ -5346,7 +5346,7 @@ declare const configShape: z.ZodObject<{
5346
5346
  levelId: string;
5347
5347
  axis: "columns" | "rows";
5348
5348
  direction: "asc" | "desc";
5349
- nulls: "first" | "last";
5349
+ nulls: "last" | "first";
5350
5350
  }[];
5351
5351
  rankings: readonly MatrixRanking[];
5352
5352
  filters?: FilterGroup | undefined;
@@ -5690,7 +5690,7 @@ declare const authoringConfigShape: z.ZodObject<{
5690
5690
  levelId: string;
5691
5691
  axis: "columns" | "rows";
5692
5692
  direction: "asc" | "desc";
5693
- nulls: "first" | "last";
5693
+ nulls: "last" | "first";
5694
5694
  }[];
5695
5695
  rankings: readonly MatrixRanking[];
5696
5696
  filters?: FilterGroup | undefined;
@@ -6024,7 +6024,7 @@ declare const authoringConfigShape: z.ZodObject<{
6024
6024
  levelId: string;
6025
6025
  axis: "columns" | "rows";
6026
6026
  direction: "asc" | "desc";
6027
- nulls: "first" | "last";
6027
+ nulls: "last" | "first";
6028
6028
  }[];
6029
6029
  rankings: readonly MatrixRanking[];
6030
6030
  filters?: FilterGroup | undefined;
@@ -6464,7 +6464,7 @@ declare const exportRequestShape: z.ZodUnion<[z.ZodObject<{
6464
6464
  levelId: string;
6465
6465
  axis: "columns" | "rows";
6466
6466
  direction: "asc" | "desc";
6467
- nulls: "first" | "last";
6467
+ nulls: "last" | "first";
6468
6468
  }[];
6469
6469
  rankings: readonly MatrixRanking[];
6470
6470
  filters?: FilterGroup | undefined;
@@ -6802,7 +6802,7 @@ declare const exportRequestShape: z.ZodUnion<[z.ZodObject<{
6802
6802
  levelId: string;
6803
6803
  axis: "columns" | "rows";
6804
6804
  direction: "asc" | "desc";
6805
- nulls: "first" | "last";
6805
+ nulls: "last" | "first";
6806
6806
  }[];
6807
6807
  rankings: readonly MatrixRanking[];
6808
6808
  filters?: FilterGroup | undefined;
@@ -7146,7 +7146,7 @@ declare const exportRequestShape: z.ZodUnion<[z.ZodObject<{
7146
7146
  levelId: string;
7147
7147
  axis: "columns" | "rows";
7148
7148
  direction: "asc" | "desc";
7149
- nulls: "first" | "last";
7149
+ nulls: "last" | "first";
7150
7150
  }[];
7151
7151
  rankings: readonly MatrixRanking[];
7152
7152
  filters?: FilterGroup | undefined;
@@ -7439,7 +7439,7 @@ declare const exportRequestShape: z.ZodUnion<[z.ZodObject<{
7439
7439
  levelId: string;
7440
7440
  axis: "columns" | "rows";
7441
7441
  direction: "asc" | "desc";
7442
- nulls: "first" | "last";
7442
+ nulls: "last" | "first";
7443
7443
  }[];
7444
7444
  rankings: readonly MatrixRanking[];
7445
7445
  filters?: FilterGroup | undefined;
@@ -77,7 +77,7 @@ export declare const matrixRuntimeInputsSchema: z.ZodObject<{
77
77
  levelId: string;
78
78
  axis: "columns" | "rows";
79
79
  direction: "asc" | "desc";
80
- nulls: "first" | "last";
80
+ nulls: "last" | "first";
81
81
  }, {
82
82
  target: import('./matrix-definition-contract.js').MatrixSortTarget;
83
83
  scope: {
@@ -102,7 +102,7 @@ export declare const matrixRuntimeInputsSchema: z.ZodObject<{
102
102
  levelId: string;
103
103
  axis: "columns" | "rows";
104
104
  direction: "asc" | "desc";
105
- nulls: "first" | "last";
105
+ nulls: "last" | "first";
106
106
  }>, "many">>>;
107
107
  }, "strip", z.ZodTypeAny, {
108
108
  runtimeSorts?: readonly {
@@ -129,7 +129,7 @@ export declare const matrixRuntimeInputsSchema: z.ZodObject<{
129
129
  levelId: string;
130
130
  axis: "columns" | "rows";
131
131
  direction: "asc" | "desc";
132
- nulls: "first" | "last";
132
+ nulls: "last" | "first";
133
133
  }[] | undefined;
134
134
  runtimeFilters?: import('../../components/index.js').FilterGroup | undefined;
135
135
  }, {
@@ -157,7 +157,7 @@ export declare const matrixRuntimeInputsSchema: z.ZodObject<{
157
157
  levelId: string;
158
158
  axis: "columns" | "rows";
159
159
  direction: "asc" | "desc";
160
- nulls: "first" | "last";
160
+ nulls: "last" | "first";
161
161
  }[] | undefined;
162
162
  runtimeFilters?: import('../../components/index.js').FilterGroup | undefined;
163
163
  }>;
@@ -375,7 +375,7 @@ declare const matrixExecutionShape: {
375
375
  levelId: string;
376
376
  axis: "columns" | "rows";
377
377
  direction: "asc" | "desc";
378
- nulls: "first" | "last";
378
+ nulls: "last" | "first";
379
379
  }, {
380
380
  target: import('./matrix-definition-contract.js').MatrixSortTarget;
381
381
  scope: {
@@ -400,7 +400,7 @@ declare const matrixExecutionShape: {
400
400
  levelId: string;
401
401
  axis: "columns" | "rows";
402
402
  direction: "asc" | "desc";
403
- nulls: "first" | "last";
403
+ nulls: "last" | "first";
404
404
  }>, "many">>;
405
405
  rankings: z.ZodReadonly<z.ZodArray<z.ZodType<import('./matrix-definition-contract.js').MatrixRanking, z.ZodTypeDef, import('./matrix-definition-contract.js').MatrixRanking>, "many">>;
406
406
  } & {
@@ -479,7 +479,7 @@ declare const matrixExecutionShape: {
479
479
  levelId: string;
480
480
  axis: "columns" | "rows";
481
481
  direction: "asc" | "desc";
482
- nulls: "first" | "last";
482
+ nulls: "last" | "first";
483
483
  }[];
484
484
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
485
485
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -561,7 +561,7 @@ declare const matrixExecutionShape: {
561
561
  levelId: string;
562
562
  axis: "columns" | "rows";
563
563
  direction: "asc" | "desc";
564
- nulls: "first" | "last";
564
+ nulls: "last" | "first";
565
565
  }[];
566
566
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
567
567
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -643,7 +643,7 @@ declare const matrixExecutionShape: {
643
643
  levelId: string;
644
644
  axis: "columns" | "rows";
645
645
  direction: "asc" | "desc";
646
- nulls: "first" | "last";
646
+ nulls: "last" | "first";
647
647
  }[];
648
648
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
649
649
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -725,7 +725,7 @@ declare const matrixExecutionShape: {
725
725
  levelId: string;
726
726
  axis: "columns" | "rows";
727
727
  direction: "asc" | "desc";
728
- nulls: "first" | "last";
728
+ nulls: "last" | "first";
729
729
  }[];
730
730
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
731
731
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -209,7 +209,7 @@ export declare const matrixOperationRequestSchema: z.ZodObject<{
209
209
  levelId: string;
210
210
  axis: "columns" | "rows";
211
211
  direction: "asc" | "desc";
212
- nulls: "first" | "last";
212
+ nulls: "last" | "first";
213
213
  }, {
214
214
  target: import('./matrix-definition-contract.js').MatrixSortTarget;
215
215
  scope: {
@@ -234,7 +234,7 @@ export declare const matrixOperationRequestSchema: z.ZodObject<{
234
234
  levelId: string;
235
235
  axis: "columns" | "rows";
236
236
  direction: "asc" | "desc";
237
- nulls: "first" | "last";
237
+ nulls: "last" | "first";
238
238
  }>, "many">>;
239
239
  rankings: z.ZodReadonly<z.ZodArray<z.ZodType<import('./matrix-definition-contract.js').MatrixRanking, z.ZodTypeDef, import('./matrix-definition-contract.js').MatrixRanking>, "many">>;
240
240
  } & {
@@ -313,7 +313,7 @@ export declare const matrixOperationRequestSchema: z.ZodObject<{
313
313
  levelId: string;
314
314
  axis: "columns" | "rows";
315
315
  direction: "asc" | "desc";
316
- nulls: "first" | "last";
316
+ nulls: "last" | "first";
317
317
  }[];
318
318
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
319
319
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -395,7 +395,7 @@ export declare const matrixOperationRequestSchema: z.ZodObject<{
395
395
  levelId: string;
396
396
  axis: "columns" | "rows";
397
397
  direction: "asc" | "desc";
398
- nulls: "first" | "last";
398
+ nulls: "last" | "first";
399
399
  }[];
400
400
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
401
401
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -477,7 +477,7 @@ export declare const matrixOperationRequestSchema: z.ZodObject<{
477
477
  levelId: string;
478
478
  axis: "columns" | "rows";
479
479
  direction: "asc" | "desc";
480
- nulls: "first" | "last";
480
+ nulls: "last" | "first";
481
481
  }[];
482
482
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
483
483
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -559,7 +559,7 @@ export declare const matrixOperationRequestSchema: z.ZodObject<{
559
559
  levelId: string;
560
560
  axis: "columns" | "rows";
561
561
  direction: "asc" | "desc";
562
- nulls: "first" | "last";
562
+ nulls: "last" | "first";
563
563
  }[];
564
564
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
565
565
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -644,7 +644,7 @@ export declare const matrixOperationRequestSchema: z.ZodObject<{
644
644
  levelId: string;
645
645
  axis: "columns" | "rows";
646
646
  direction: "asc" | "desc";
647
- nulls: "first" | "last";
647
+ nulls: "last" | "first";
648
648
  }[];
649
649
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
650
650
  filters?: import('../../components/index.js').FilterGroup | undefined;
@@ -729,7 +729,7 @@ export declare const matrixOperationRequestSchema: z.ZodObject<{
729
729
  levelId: string;
730
730
  axis: "columns" | "rows";
731
731
  direction: "asc" | "desc";
732
- nulls: "first" | "last";
732
+ nulls: "last" | "first";
733
733
  }[];
734
734
  rankings: readonly import('./matrix-definition-contract.js').MatrixRanking[];
735
735
  filters?: import('../../components/index.js').FilterGroup | undefined;