react-semaphor 0.1.494 → 0.1.496

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 (127) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +233 -218
  3. package/dist/brand-studio/index.cjs +1 -1
  4. package/dist/brand-studio/index.js +4 -4
  5. package/dist/briefings/index.cjs +1 -1
  6. package/dist/briefings/index.js +5 -5
  7. package/dist/chunks/calculated-field-identity-Cq9GwHfE.js +1266 -0
  8. package/dist/chunks/calculated-field-identity-DTfyvvLC.cjs +1 -0
  9. package/dist/chunks/{constants-D47EhfJR.js → constants-CC3WKmqC.js} +14 -14
  10. package/dist/chunks/{constants-BMfm1XgO.cjs → constants-DIuhVR6J.cjs} +1 -1
  11. package/dist/chunks/{dashboard-briefing-launcher-DQFa0Ti1.js → dashboard-briefing-launcher-Bbz4cwHb.js} +9 -9
  12. package/dist/chunks/{dashboard-briefing-launcher-nWBKnd0X.cjs → dashboard-briefing-launcher-CM6LTGw5.cjs} +1 -1
  13. package/dist/chunks/{dashboard-controls-BbPWWVO-.cjs → dashboard-controls-B2nrczJl.cjs} +1 -1
  14. package/dist/chunks/{dashboard-controls-DWpnRtQI.js → dashboard-controls-BsgADy-S.js} +11 -11
  15. package/dist/chunks/{dashboard-date-comparison-definition-CKXgDzSB.js → dashboard-date-comparison-definition-Bqti6YAo.js} +1 -1
  16. package/dist/chunks/{dashboard-date-comparison-definition-DCIUwJnZ.cjs → dashboard-date-comparison-definition-C69F-zaC.cjs} +1 -1
  17. package/dist/chunks/{dashboard-json-DyTQysQF.js → dashboard-json-CA-BChbt.js} +7 -7
  18. package/dist/chunks/{dashboard-json-BFJNDHxv.cjs → dashboard-json-CwRRBSSL.cjs} +1 -1
  19. package/dist/chunks/edit-dashboard-visual-BlS27LDw.cjs +172 -0
  20. package/dist/chunks/{edit-dashboard-visual-D-gauuNQ.js → edit-dashboard-visual-CEiPgdkX.js} +7903 -7939
  21. package/dist/chunks/{editor-action-buttons-DMgnHVY1.js → editor-action-buttons-6HBjjcfK.js} +6 -6
  22. package/dist/chunks/{editor-action-buttons-B7YezrkC.cjs → editor-action-buttons-kk2BNiTe.cjs} +1 -1
  23. package/dist/chunks/{field-aggregations-J7de9KZm.js → field-aggregations-C8kZqMTD.js} +11 -11
  24. package/dist/chunks/{field-aggregations-hx8odlTh.cjs → field-aggregations-naKZ7S2Q.cjs} +1 -1
  25. package/dist/chunks/{index-DXQsuuMQ.cjs → index-BSRwdFTN.cjs} +226 -225
  26. package/dist/chunks/{index-Df4YBtX5.cjs → index-CCa-A-Yx.cjs} +1 -1
  27. package/dist/chunks/{index-CPWfCksu.js → index-Cgoz65yM.js} +39519 -38739
  28. package/dist/chunks/{index-BDtC8et3.js → index-oll4m-qi.js} +11 -11
  29. package/dist/chunks/{matrix-analytical-definition-DAFStKt2.js → matrix-analytical-definition-B1xhoCak.js} +1 -1
  30. package/dist/chunks/{matrix-analytical-definition-B3p3vF0K.cjs → matrix-analytical-definition-BK5y9XHH.cjs} +1 -1
  31. package/dist/chunks/{matrix-card-5R39CCdj.js → matrix-card-BEb6hr8i.js} +2 -2
  32. package/dist/chunks/{matrix-card-DzkJRoM4.cjs → matrix-card-Ii8yYSnw.cjs} +1 -1
  33. package/dist/chunks/{matrix-control-sources-BWbqiGmN.cjs → matrix-control-sources-CdegRBcA.cjs} +1 -1
  34. package/dist/chunks/{matrix-control-sources-DxjWV8ry.js → matrix-control-sources-cbYmqWNg.js} +5 -5
  35. package/dist/chunks/{matrix-definition-Z80mIEfu.cjs → matrix-definition-CSNthxru.cjs} +1 -1
  36. package/dist/chunks/{matrix-definition-BcJi7qGZ.js → matrix-definition-CZM5-YJX.js} +1 -1
  37. package/dist/chunks/{matrix-formatter-3QR1mqhn.cjs → matrix-formatter-C19PZAal.cjs} +1 -1
  38. package/dist/chunks/{matrix-formatter-youWVghC.js → matrix-formatter-CiXzpX6X.js} +27 -27
  39. package/dist/chunks/matrix-member-presentation-CQHvq18l.cjs +1 -0
  40. package/dist/chunks/matrix-member-presentation-CabW8mJc.js +105 -0
  41. package/dist/chunks/{matrix-operation-contract-D5I-t3i7.js → matrix-operation-contract-0Nor-C71.js} +21 -21
  42. package/dist/chunks/{matrix-operation-contract-BiUMcd6G.cjs → matrix-operation-contract-o9GXbiHw.cjs} +1 -1
  43. package/dist/chunks/{metric-comparison-vr9j4Z_Z.js → metric-comparison-Br8l0WkK.js} +1 -1
  44. package/dist/chunks/{metric-comparison-D1VRq5Os.cjs → metric-comparison-DeiOjEm5.cjs} +1 -1
  45. package/dist/chunks/{operators-C8TxpM4C.js → operators-B3zZoskU.js} +28 -10
  46. package/dist/chunks/operators-DEfKaU_V.cjs +1 -0
  47. package/dist/chunks/{pivot-header-presentation-Dcd4IBM5.cjs → pivot-header-presentation-DRv-cSIP.cjs} +1 -1
  48. package/dist/chunks/{pivot-header-presentation-BslEo_4O.js → pivot-header-presentation-DW-ti5ek.js} +3 -3
  49. package/dist/chunks/{pivot-result-identity-CmvwpG4K.cjs → pivot-result-identity-DEenUrMj.cjs} +1 -1
  50. package/dist/chunks/{pivot-result-identity-CMz27nri.js → pivot-result-identity-sZc1RaIz.js} +1 -1
  51. package/dist/chunks/{pivot-result-lifecycle-H_pntnd9.cjs → pivot-result-lifecycle-D81qcCcZ.cjs} +1 -1
  52. package/dist/chunks/{pivot-result-lifecycle-BCoOFUiU.js → pivot-result-lifecycle-DJ40gdwk.js} +7 -7
  53. package/dist/chunks/{raw-temporal-DcHmXurp.cjs → raw-temporal-DDTt2yv5.cjs} +1 -1
  54. package/dist/chunks/{raw-temporal-YWo1GEmr.js → raw-temporal-DHCZrFe7.js} +15 -15
  55. package/dist/chunks/{raw-temporal-contract-Bg1mtRGE.cjs → raw-temporal-contract-BcbV56Rc.cjs} +1 -1
  56. package/dist/chunks/{raw-temporal-contract-DY-Jd4Sc.js → raw-temporal-contract-CkvdtPYA.js} +1 -1
  57. package/dist/chunks/{report-preferences-dialog-Bt8T3To1.js → report-preferences-dialog-CVRJOCQu.js} +6 -6
  58. package/dist/chunks/{report-preferences-dialog-oT-C29vV.cjs → report-preferences-dialog-DGEq-iBF.cjs} +1 -1
  59. package/dist/chunks/{report-runtime-context-nCHl3uHC.js → report-runtime-context-BlDpc-F-.js} +1 -1
  60. package/dist/chunks/{report-runtime-context-Bb0ejvVq.cjs → report-runtime-context-lSIvyKm2.cjs} +1 -1
  61. package/dist/chunks/{semantic-format-CMPIcb8l.cjs → semantic-format--_VEin18.cjs} +1 -1
  62. package/dist/chunks/{semantic-format-UvUAyZS-.js → semantic-format-ew5zviaT.js} +2 -2
  63. package/dist/chunks/{source-entity-resolution-Dm4in31q.js → source-entity-resolution-79Rihbk3.js} +121 -107
  64. package/dist/chunks/source-entity-resolution-DPjslVgx.cjs +1 -0
  65. package/dist/chunks/{switch-DHOv6xHT.js → switch-BmyuyM7e.js} +4736 -4697
  66. package/dist/chunks/switch-nDjQC2y3.cjs +139 -0
  67. package/dist/chunks/{temporal-bucket-contract-CPuYzg7A.cjs → temporal-bucket-contract-BYR6tj6F.cjs} +1 -1
  68. package/dist/chunks/{temporal-bucket-contract-Bx5TJXF3.js → temporal-bucket-contract-C-kKQ_W4.js} +1 -1
  69. package/dist/chunks/{token-types-5buW2I6f.js → token-types-BIYFAsGq.js} +1 -1
  70. package/dist/chunks/{token-types-hl08eNuY.cjs → token-types-CkAGFhiW.cjs} +1 -1
  71. package/dist/chunks/{update-policy-BP_2uCgs.cjs → update-policy-BCtFr2Qh.cjs} +1 -1
  72. package/dist/chunks/{update-policy-D3I1J2kl.js → update-policy-CP_A1IVD.js} +2 -2
  73. package/dist/chunks/{validators-BpJDwDnG.js → validators-D-_IT-Xw.js} +1134 -1013
  74. package/dist/chunks/validators-ux2obZB9.cjs +1 -0
  75. package/dist/dashboard/index.cjs +1 -1
  76. package/dist/dashboard/index.js +1 -1
  77. package/dist/dashboard-authoring/index.cjs +3 -3
  78. package/dist/dashboard-authoring/index.js +157 -150
  79. package/dist/data-app-builder/index.cjs +1 -1
  80. package/dist/data-app-builder/index.js +2 -2
  81. package/dist/data-app-codegen/index.cjs +1 -1
  82. package/dist/data-app-codegen/index.js +2 -2
  83. package/dist/data-app-codegen-node/index.cjs +2 -2
  84. package/dist/data-app-codegen-node/index.js +33 -36
  85. package/dist/data-app-sdk/index.cjs +2 -2
  86. package/dist/data-app-sdk/index.js +232 -230
  87. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  88. package/dist/data-app-sdk-adapters/index.js +3 -3
  89. package/dist/data-app-sdk-validation/index.cjs +1 -1
  90. package/dist/data-app-sdk-validation/index.js +5 -5
  91. package/dist/format-utils/index.cjs +1 -1
  92. package/dist/format-utils/index.js +26 -26
  93. package/dist/index.cjs +1 -1
  94. package/dist/index.js +15 -15
  95. package/dist/report-runtime-context/index.cjs +1 -1
  96. package/dist/report-runtime-context/index.js +2 -2
  97. package/dist/style.css +1 -1
  98. package/dist/surfboard/index.cjs +1 -1
  99. package/dist/surfboard/index.js +2 -2
  100. package/dist/types/analytics-protocol.d.ts +265 -1
  101. package/dist/types/briefings.d.ts +55 -0
  102. package/dist/types/dashboard-assistant.d.ts +55 -1
  103. package/dist/types/dashboard-authoring.d.ts +140 -2
  104. package/dist/types/dashboard.d.ts +57 -0
  105. package/dist/types/data-app-builder.d.ts +32 -1
  106. package/dist/types/data-app-codegen-node.d.ts +32 -1
  107. package/dist/types/data-app-codegen.d.ts +32 -1
  108. package/dist/types/data-app-sdk-adapters.d.ts +32 -1
  109. package/dist/types/data-app-sdk-validation.d.ts +55 -1
  110. package/dist/types/data-app-sdk.d.ts +60 -1
  111. package/dist/types/format-utils.d.ts +9 -0
  112. package/dist/types/index.cjs +1 -1
  113. package/dist/types/index.js +4 -4
  114. package/dist/types/main.d.ts +122 -1
  115. package/dist/types/shared.d.ts +55 -0
  116. package/dist/types/surfboard.d.ts +57 -0
  117. package/dist/types/types.d.ts +57 -0
  118. package/package.json +1 -1
  119. package/dist/chunks/calculated-field-identity-CSabKrXt.js +0 -1117
  120. package/dist/chunks/calculated-field-identity-D4VOHjBJ.cjs +0 -1
  121. package/dist/chunks/edit-dashboard-visual-Dtacp_qY.cjs +0 -172
  122. package/dist/chunks/matrix-member-presentation-BEWAH5xK.js +0 -24
  123. package/dist/chunks/matrix-member-presentation-DtLGyv8w.cjs +0 -1
  124. package/dist/chunks/operators-DrTQsJXv.cjs +0 -1
  125. package/dist/chunks/source-entity-resolution-DeH38dTU.cjs +0 -1
  126. package/dist/chunks/switch-CatLIoK-.cjs +0 -139
  127. package/dist/chunks/validators-4dRtYUI1.cjs +0 -1
@@ -6646,6 +6646,15 @@ declare interface Field {
6646
6646
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
6647
6647
  */
6648
6648
  label: string;
6649
+ /**
6650
+ * Set only when `label` was synthesized from `name` because the source
6651
+ * provided no authored label (raw database objects). Field pickers follow
6652
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
6653
+ * label is shown as is, otherwise the physical column name. A field whose
6654
+ * `label` still equals `derivedLabel` has no authored label; any later
6655
+ * edit to `label` makes it authored without touching this marker.
6656
+ */
6657
+ derivedLabel?: string;
6649
6658
  /**
6650
6659
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
6651
6660
  * If not provided, should be auto-generated from label or name.
@@ -32772,6 +32781,15 @@ declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
32772
32781
  dependencies?: SemaphorOptionDependencies;
32773
32782
  search?: string;
32774
32783
  limit?: number;
32784
+ /**
32785
+ * Authoritative selected-value relevance check: return only options whose
32786
+ * value is one of these exact raw values, under the same dependency and
32787
+ * population context, with no search or paging. Bounded by
32788
+ * `MAX_OPTION_MATCH_VALUES`. The result's `match.complete` says whether
32789
+ * absence from the returned options proves no match. Scalars only; see
32790
+ * `parseOptionMatchValues`.
32791
+ */
32792
+ matchValues?: Array<string | number | boolean>;
32775
32793
  inputs?: SemaphorInputBinding[];
32776
32794
  derivedFields?: SemaphorDerivedFieldDefinition[];
32777
32795
  };
@@ -32788,6 +32806,11 @@ export declare type SemaphorInputOptionSource = {
32788
32806
 
32789
32807
  export declare type SemaphorInputOptionsPayload = {
32790
32808
  options: SemaphorInputOption[];
32809
+ /** Per-dependency classification for the option query; see
32810
+ * `SemaphorOptionDependencyOutcome`. Absent when no dependencies applied. */
32811
+ dependencyOutcomes?: SemaphorOptionDependencyOutcome[];
32812
+ /** Authoritative exact-value relevance result when the request asked for it. */
32813
+ match?: SemaphorOptionMatchResult;
32791
32814
  executionResult?: SemaphorAnalyticsExecutionResult;
32792
32815
  };
32793
32816
 
@@ -32820,6 +32843,9 @@ export declare type SemaphorInputOptionsQuerySpec = Omit<SemaphorQuerySourceSpec
32820
32843
 
32821
32844
  declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
32822
32845
  kind: 'inputOptions';
32846
+ dependencyOutcomes?: SemaphorOptionDependencyOutcome[];
32847
+ /** Present when the intent carried `matchValues`. */
32848
+ match?: SemaphorOptionMatchResult;
32823
32849
  options: Array<{
32824
32850
  label: string;
32825
32851
  value: unknown;
@@ -32956,9 +32982,42 @@ declare type SemaphorMetricResult = SemaphorAnalyticsResultBase & {
32956
32982
  export declare type SemaphorNonEmptyArray<T> = [T, ...T[]];
32957
32983
 
32958
32984
  export declare type SemaphorOptionDependencies = {
32959
- mode?: 'independent' | 'explicit';
32985
+ /** Omitted mode means independent for protocol callers. Dashboard authoring
32986
+ * normalizes omission separately through `resolveDashboardOptionDependencies`. */
32987
+ mode?: SemaphorOptionDependencyMode;
32960
32988
  includeInputIds?: string[];
32961
32989
  excludeInputIds?: string[];
32990
+ /**
32991
+ * Ephemeral browse override: explicit dependencies the viewer asked to
32992
+ * browse without. Only valid in explicit mode, only for ids in
32993
+ * `includeInputIds`, and only honored by the server when that dependency
32994
+ * would otherwise fail with an overridable reason (see
32995
+ * `OVERRIDABLE_OPTION_DEPENDENCY_REASONS`). Never persisted, never applied
32996
+ * to card predicates; it lives in one browse request and its cache identity.
32997
+ */
32998
+ omitInputIds?: string[];
32999
+ };
33000
+
33001
+ declare type SemaphorOptionDependencyMode = 'independent' | 'explicit' | 'all_applicable';
33002
+
33003
+ /** Per-candidate classification of an option query's dependencies. Describes
33004
+ * which viewer selections constrained the option list; it never substitutes
33005
+ * for execution success or failure. */
33006
+ declare type SemaphorOptionDependencyOutcome = {
33007
+ inputId: string;
33008
+ status: SemaphorOptionDependencyOutcomeStatus;
33009
+ reason?: SemaphorOptionDependencyOutcomeReason;
33010
+ };
33011
+
33012
+ declare type SemaphorOptionDependencyOutcomeReason = 'unrelated' | 'population_required' | 'missing_dependency' | 'missing_relationship' | 'ambiguous_relationship' | 'invalid_metadata' | 'unsupported_dependency' | 'override_not_eligible';
33013
+
33014
+ declare type SemaphorOptionDependencyOutcomeStatus = 'applied' | 'inactive' | 'skipped' | 'overridden' | 'error';
33015
+
33016
+ declare type SemaphorOptionMatchResult = {
33017
+ /** True only when every submitted value was evaluated by a complete exact
33018
+ * check; only then may absence be read as `no_match`. */
33019
+ complete: boolean;
33020
+ reason?: 'unsupported' | 'truncated';
32962
33021
  };
32963
33022
 
32964
33023
  export declare type SemaphorOptionPopulation = {
@@ -5633,6 +5633,15 @@ declare interface Field {
5633
5633
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
5634
5634
  */
5635
5635
  label: string;
5636
+ /**
5637
+ * Set only when `label` was synthesized from `name` because the source
5638
+ * provided no authored label (raw database objects). Field pickers follow
5639
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
5640
+ * label is shown as is, otherwise the physical column name. A field whose
5641
+ * `label` still equals `derivedLabel` has no authored label; any later
5642
+ * edit to `label` makes it authored without touching this marker.
5643
+ */
5644
+ derivedLabel?: string;
5636
5645
  /**
5637
5646
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
5638
5647
  * If not provided, should be auto-generated from label or name.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../chunks/common-types-nBuCd3u2.cjs"),e=require("../chunks/validators-4dRtYUI1.cjs"),l=require("../chunks/token-types-hl08eNuY.cjs"),E=require("../chunks/pivot-result-identity-CmvwpG4K.cjs"),a=require("../chunks/report-runtime-context-Bb0ejvVq.cjs");exports.CONTROL_CARD_DEFAULT_VALUE=t.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=t.EMPTY_SELECTION;exports.CALCULATED_FIELD_ENTITY_MARKER=e.CALCULATED_FIELD_ENTITY_MARKER;exports.DATE_FORMAT_VALUES=e.DATE_FORMAT_VALUES;exports.LEGACY_CALCULATED_FIELD_ENTITY_MARKER=e.LEGACY_CALCULATED_FIELD_ENTITY_MARKER;exports.PivotMarkerEnum=e.PivotMarkerEnum;exports.getFieldRuntimeColumnName=e.getFieldRuntimeColumnName;exports.hasCalculatedFieldMarker=e.hasCalculatedFieldMarker;exports.hasCalculatedFormulaInputs=e.hasCalculatedFormulaInputs;exports.hasSyntheticCalculatedFieldOwner=e.hasSyntheticCalculatedFieldOwner;exports.isCalculatedDimension=e.isCalculatedDimension;exports.isCalculatedField=e.isCalculatedField;exports.isCalculatedMetric=e.isCalculatedMetric;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=l.DEFAULT_SEMANTIC_DOMAIN_ACCESS;exports.resolveQueryColumnKeyMapEntry=E.resolveQueryColumnKeyMapEntry;exports.resolveUniqueQueryColumnKeyMapEntry=E.resolveUniqueQueryColumnKeyMapEntry;exports.DEFAULT_CALENDAR_CONTEXT=a.DEFAULT_CALENDAR_CONTEXT;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../chunks/common-types-nBuCd3u2.cjs"),e=require("../chunks/validators-ux2obZB9.cjs"),l=require("../chunks/token-types-CkAGFhiW.cjs"),E=require("../chunks/pivot-result-identity-DEenUrMj.cjs"),a=require("../chunks/report-runtime-context-lSIvyKm2.cjs");exports.CONTROL_CARD_DEFAULT_VALUE=t.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=t.EMPTY_SELECTION;exports.CALCULATED_FIELD_ENTITY_MARKER=e.CALCULATED_FIELD_ENTITY_MARKER;exports.DATE_FORMAT_VALUES=e.DATE_FORMAT_VALUES;exports.LEGACY_CALCULATED_FIELD_ENTITY_MARKER=e.LEGACY_CALCULATED_FIELD_ENTITY_MARKER;exports.PivotMarkerEnum=e.PivotMarkerEnum;exports.getFieldRuntimeColumnName=e.getFieldRuntimeColumnName;exports.hasCalculatedFieldMarker=e.hasCalculatedFieldMarker;exports.hasCalculatedFormulaInputs=e.hasCalculatedFormulaInputs;exports.hasSyntheticCalculatedFieldOwner=e.hasSyntheticCalculatedFieldOwner;exports.isCalculatedDimension=e.isCalculatedDimension;exports.isCalculatedField=e.isCalculatedField;exports.isCalculatedMetric=e.isCalculatedMetric;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=l.DEFAULT_SEMANTIC_DOMAIN_ACCESS;exports.resolveQueryColumnKeyMapEntry=E.resolveQueryColumnKeyMapEntry;exports.resolveUniqueQueryColumnKeyMapEntry=E.resolveUniqueQueryColumnKeyMapEntry;exports.DEFAULT_CALENDAR_CONTEXT=a.DEFAULT_CALENDAR_CONTEXT;
@@ -1,8 +1,8 @@
1
1
  import { C as s, E } from "../chunks/common-types-C6cAQgyh.js";
2
- import { C, D as l, L as t, P as A, g as o, c as _, h as T, d as u, a as L, b as i, i as D } from "../chunks/validators-BpJDwDnG.js";
3
- import { D as n } from "../chunks/token-types-5buW2I6f.js";
4
- import { r as F, a as M } from "../chunks/pivot-result-identity-CMz27nri.js";
5
- import { D as N } from "../chunks/report-runtime-context-nCHl3uHC.js";
2
+ import { C, D as l, L as t, P as A, g as o, c as _, h as T, d as u, a as L, b as i, i as D } from "../chunks/validators-D-_IT-Xw.js";
3
+ import { D as n } from "../chunks/token-types-BIYFAsGq.js";
4
+ import { r as F, a as M } from "../chunks/pivot-result-identity-sZc1RaIz.js";
5
+ import { D as N } from "../chunks/report-runtime-context-BlDpc-F-.js";
6
6
  export {
7
7
  C as CALCULATED_FIELD_ENTITY_MARKER,
8
8
  s as CONTROL_CARD_DEFAULT_VALUE,
@@ -8704,6 +8704,12 @@ declare type DashboardFilterAuthoringSettingsUpdate = {
8704
8704
  target?: DashboardInputRuntimeTarget;
8705
8705
  optionSourceChanged?: boolean;
8706
8706
  optionSource?: DashboardFilterOptionSource;
8707
+ /** Authored option dependency policy edit; undefined value restores the
8708
+ * dashboard default (omitted, meaning All applicable). */
8709
+ optionDependenciesChanged?: boolean;
8710
+ optionDependencies?: DashboardFilterOptionDependencies;
8711
+ optionPopulationChanged?: boolean;
8712
+ optionPopulation?: DashboardFilterOptionPopulation;
8707
8713
  /** Raw selection identity changed; the previous runtime value is invalid. */
8708
8714
  selectionIdentityChanged?: boolean;
8709
8715
  };
@@ -8890,6 +8896,16 @@ declare type DashboardFilterMappingDraftRow = {
8890
8896
 
8891
8897
  declare type DashboardFilterMappingDraftStatus = 'pendingSource' | 'automatic' | 'suggested' | 'needsMapping' | 'mapped' | 'notApplicable' | 'excluded' | 'invalidMapping' | 'metadataUnavailable';
8892
8898
 
8899
+ /**
8900
+ * Persisted policy for which peer selections narrow a filter's option list.
8901
+ * Omitted means All applicable for dashboards; see
8902
+ * `resolveDashboardOptionDependencies`.
8903
+ */
8904
+ declare type DashboardFilterOptionDependencies = SemaphorOptionDependencies;
8905
+
8906
+ /** Persisted population that fixes relevance for fact-bridged cascades. */
8907
+ declare type DashboardFilterOptionPopulation = SemaphorOptionPopulation;
8908
+
8893
8909
  /** Persisted label/value option definition for a mapped dashboard filter. */
8894
8910
  export declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
8895
8911
 
@@ -10117,6 +10133,8 @@ export declare type EmbeddedFilterDashboardInput = FilterDashboardInputBase & {
10117
10133
  filter: TFilter;
10118
10134
  filterReference?: never;
10119
10135
  optionSource?: DashboardFilterOptionSource;
10136
+ optionDependencies?: DashboardFilterOptionDependencies;
10137
+ optionPopulation?: DashboardFilterOptionPopulation;
10120
10138
  application?: DashboardFilterApplication;
10121
10139
  };
10122
10140
 
@@ -10514,6 +10532,15 @@ export declare interface Field {
10514
10532
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
10515
10533
  */
10516
10534
  label: string;
10535
+ /**
10536
+ * Set only when `label` was synthesized from `name` because the source
10537
+ * provided no authored label (raw database objects). Field pickers follow
10538
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
10539
+ * label is shown as is, otherwise the physical column name. A field whose
10540
+ * `label` still equals `derivedLabel` has no authored label; any later
10541
+ * edit to `label` makes it authored without touching this marker.
10542
+ */
10543
+ derivedLabel?: string;
10517
10544
  /**
10518
10545
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
10519
10546
  * If not provided, should be auto-generated from label or name.
@@ -10711,6 +10738,53 @@ declare type FilterOnClick = {
10711
10738
  columnIndex: number;
10712
10739
  };
10713
10740
 
10741
+ declare type FilterOptionDependencyFailure = {
10742
+ peer: FilterOptionDependencyPeer;
10743
+ reason?: SemaphorOptionDependencyOutcomeReason;
10744
+ /** Viewer-safe explanation built from the reason, never raw server text. */
10745
+ message: string;
10746
+ /** Explicit mode and an overridable, classified reason. */
10747
+ canOverride: boolean;
10748
+ };
10749
+
10750
+ declare type FilterOptionDependencyFeedback = {
10751
+ applied: FilterOptionDependencyPeer[];
10752
+ skipped: Array<FilterOptionDependencyPeer & {
10753
+ reason?: SemaphorOptionDependencyOutcomeReason;
10754
+ }>;
10755
+ overridden: Array<FilterOptionDependencyPeer & {
10756
+ reason?: SemaphorOptionDependencyOutcomeReason;
10757
+ }>;
10758
+ failure?: FilterOptionDependencyFailure;
10759
+ };
10760
+
10761
+ /**
10762
+ * Viewer-facing reading of the server's dependency outcomes for one option
10763
+ * list. Pure: outcomes and the request error come from the response, labels
10764
+ * come from the dashboard. Nothing here decides applicability; the server
10765
+ * already did. It only says what was applied, what was skipped and why, what
10766
+ * the viewer is browsing around, and whether a classified failure may be
10767
+ * browsed around at all.
10768
+ */
10769
+ declare type FilterOptionDependencyPeer = {
10770
+ inputId: string;
10771
+ label: string;
10772
+ };
10773
+
10774
+ /**
10775
+ * Dependency state a list renders: what narrowed it, what was skipped, the
10776
+ * active browse override, and the one classified failure a viewer may
10777
+ * browse around. Overrides live here, in browse state, and nowhere else.
10778
+ */
10779
+ declare type FilterOptionDependencyState = FilterOptionDependencyFeedback & {
10780
+ /** Explicit dependency ids currently browsed without. */
10781
+ override: readonly string[];
10782
+ showDiagnostics: boolean;
10783
+ /** Browse without one classified dependency; the server re-validates. */
10784
+ overrideDependency: (inputId: string) => void;
10785
+ clearOverride: () => void;
10786
+ };
10787
+
10714
10788
  declare type FilterOptionValue = string | number | boolean;
10715
10789
 
10716
10790
  declare type FilterSemanticContext = {
@@ -19927,6 +20001,8 @@ export declare type NormalizedFilterDashboardInput = FilterDashboardInputBase &
19927
20001
  kind: 'filter';
19928
20002
  filter: TFilter;
19929
20003
  optionSource?: DashboardFilterOptionSource;
20004
+ optionDependencies?: DashboardFilterOptionDependencies;
20005
+ optionPopulation?: DashboardFilterOptionPopulation;
19930
20006
  application?: DashboardFilterApplication;
19931
20007
  definitionOrigin: 'embedded' | 'dashboardFilter';
19932
20008
  };
@@ -19994,6 +20070,21 @@ declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in'
19994
20070
 
19995
20071
  export declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'like' | 'not like' | 'in' | 'not in' | 'between' | 'not between' | 'isNull' | 'isNotNull';
19996
20072
 
20073
+ declare type OptionSelectionRelevance = {
20074
+ byIdentity: ReadonlyMap<string, OptionSelectionRelevanceStatus>;
20075
+ noMatchIdentities: ReadonlySet<string>;
20076
+ isPending: boolean;
20077
+ };
20078
+
20079
+ /**
20080
+ * Per-value relevance of a retained selection under the authored dependency
20081
+ * context. Only a successful, complete exact-value check may say
20082
+ * `no_match`; everything else (pending, failed, unsupported, truncated,
20083
+ * beyond the bounded batch) stays `unknown`, so a stale or partial answer can
20084
+ * never mark a current selection wrong.
20085
+ */
20086
+ declare type OptionSelectionRelevanceStatus = 'matches' | 'no_match' | 'unknown';
20087
+
19997
20088
  declare type OptionsMap = {
19998
20089
  number: NumberOptions;
19999
20090
  string: StringOptions;
@@ -21872,6 +21963,8 @@ export declare type ReferencedFilterDashboardInput = FilterDashboardInputBase &
21872
21963
  filterId: string;
21873
21964
  };
21874
21965
  optionSource?: DashboardFilterOptionSource;
21966
+ optionDependencies?: DashboardFilterOptionDependencies;
21967
+ optionPopulation?: DashboardFilterOptionPopulation;
21875
21968
  application?: DashboardFilterApplication;
21876
21969
  };
21877
21970
 
@@ -22379,6 +22472,15 @@ declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
22379
22472
  dependencies?: SemaphorOptionDependencies;
22380
22473
  search?: string;
22381
22474
  limit?: number;
22475
+ /**
22476
+ * Authoritative selected-value relevance check: return only options whose
22477
+ * value is one of these exact raw values, under the same dependency and
22478
+ * population context, with no search or paging. Bounded by
22479
+ * `MAX_OPTION_MATCH_VALUES`. The result's `match.complete` says whether
22480
+ * absence from the returned options proves no match. Scalars only; see
22481
+ * `parseOptionMatchValues`.
22482
+ */
22483
+ matchValues?: Array<string | number | boolean>;
22382
22484
  inputs?: SemaphorInputBinding[];
22383
22485
  derivedFields?: SemaphorDerivedFieldDefinition[];
22384
22486
  };
@@ -22431,11 +22533,26 @@ declare type SemaphorMetricIntent = {
22431
22533
  };
22432
22534
 
22433
22535
  declare type SemaphorOptionDependencies = {
22434
- mode?: 'independent' | 'explicit';
22536
+ /** Omitted mode means independent for protocol callers. Dashboard authoring
22537
+ * normalizes omission separately through `resolveDashboardOptionDependencies`. */
22538
+ mode?: SemaphorOptionDependencyMode;
22435
22539
  includeInputIds?: string[];
22436
22540
  excludeInputIds?: string[];
22541
+ /**
22542
+ * Ephemeral browse override: explicit dependencies the viewer asked to
22543
+ * browse without. Only valid in explicit mode, only for ids in
22544
+ * `includeInputIds`, and only honored by the server when that dependency
22545
+ * would otherwise fail with an overridable reason (see
22546
+ * `OVERRIDABLE_OPTION_DEPENDENCY_REASONS`). Never persisted, never applied
22547
+ * to card predicates; it lives in one browse request and its cache identity.
22548
+ */
22549
+ omitInputIds?: string[];
22437
22550
  };
22438
22551
 
22552
+ declare type SemaphorOptionDependencyMode = 'independent' | 'explicit' | 'all_applicable';
22553
+
22554
+ declare type SemaphorOptionDependencyOutcomeReason = 'unrelated' | 'population_required' | 'missing_dependency' | 'missing_relationship' | 'ambiguous_relationship' | 'invalid_metadata' | 'unsupported_dependency' | 'override_not_eligible';
22555
+
22439
22556
  declare type SemaphorOptionPopulation = {
22440
22557
  kind: 'option_source';
22441
22558
  baseSource?: never;
@@ -26155,7 +26272,9 @@ export declare function useTextFilterHook(filterId: string): {
26155
26272
  isLoading: boolean;
26156
26273
  isFetching: boolean;
26157
26274
  isPlaceholderData: boolean;
26275
+ isLoadingOptions: boolean;
26158
26276
  isError: boolean;
26277
+ retry: () => void;
26159
26278
  hasNextPage: boolean;
26160
26279
  hasLoadedMoreOptions: boolean;
26161
26280
  isFetchingNextPage: boolean;
@@ -26174,6 +26293,8 @@ export declare function useTextFilterHook(filterId: string): {
26174
26293
  isSearching: boolean;
26175
26294
  searchError: boolean;
26176
26295
  resultSource: "server" | "both" | "local";
26296
+ dependency: FilterOptionDependencyState;
26297
+ selectionRelevance: OptionSelectionRelevance;
26177
26298
  };
26178
26299
 
26179
26300
  export declare function validateBriefingFormDraft(draft: BriefingFormDraft): BriefingFormValidationResult;
@@ -4004,6 +4004,16 @@ declare type DashboardFilterExcludedCardApplication = {
4004
4004
  cardId: string;
4005
4005
  };
4006
4006
 
4007
+ /**
4008
+ * Persisted policy for which peer selections narrow a filter's option list.
4009
+ * Omitted means All applicable for dashboards; see
4010
+ * `resolveDashboardOptionDependencies`.
4011
+ */
4012
+ declare type DashboardFilterOptionDependencies = SemaphorOptionDependencies;
4013
+
4014
+ /** Persisted population that fixes relevance for fact-bridged cascades. */
4015
+ declare type DashboardFilterOptionPopulation = SemaphorOptionPopulation;
4016
+
4007
4017
  /** Persisted label/value option definition for a mapped dashboard filter. */
4008
4018
  declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
4009
4019
 
@@ -4575,6 +4585,8 @@ declare type EmbeddedFilterDashboardInput = FilterDashboardInputBase & {
4575
4585
  filter: TFilter;
4576
4586
  filterReference?: never;
4577
4587
  optionSource?: DashboardFilterOptionSource;
4588
+ optionDependencies?: DashboardFilterOptionDependencies;
4589
+ optionPopulation?: DashboardFilterOptionPopulation;
4578
4590
  application?: DashboardFilterApplication;
4579
4591
  };
4580
4592
 
@@ -4776,6 +4788,15 @@ declare interface Field {
4776
4788
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
4777
4789
  */
4778
4790
  label: string;
4791
+ /**
4792
+ * Set only when `label` was synthesized from `name` because the source
4793
+ * provided no authored label (raw database objects). Field pickers follow
4794
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
4795
+ * label is shown as is, otherwise the physical column name. A field whose
4796
+ * `label` still equals `derivedLabel` has no authored label; any later
4797
+ * edit to `label` makes it authored without touching this marker.
4798
+ */
4799
+ derivedLabel?: string;
4779
4800
  /**
4780
4801
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
4781
4802
  * If not provided, should be auto-generated from label or name.
@@ -7130,6 +7151,8 @@ declare type ReferencedFilterDashboardInput = FilterDashboardInputBase & {
7130
7151
  filterId: string;
7131
7152
  };
7132
7153
  optionSource?: DashboardFilterOptionSource;
7154
+ optionDependencies?: DashboardFilterOptionDependencies;
7155
+ optionPopulation?: DashboardFilterOptionPopulation;
7133
7156
  application?: DashboardFilterApplication;
7134
7157
  };
7135
7158
 
@@ -7225,6 +7248,38 @@ declare type SemaphorInputOptionSource = {
7225
7248
  disambiguationFields?: SemaphorFieldRef[];
7226
7249
  };
7227
7250
 
7251
+ declare type SemaphorOptionDependencies = {
7252
+ /** Omitted mode means independent for protocol callers. Dashboard authoring
7253
+ * normalizes omission separately through `resolveDashboardOptionDependencies`. */
7254
+ mode?: SemaphorOptionDependencyMode;
7255
+ includeInputIds?: string[];
7256
+ excludeInputIds?: string[];
7257
+ /**
7258
+ * Ephemeral browse override: explicit dependencies the viewer asked to
7259
+ * browse without. Only valid in explicit mode, only for ids in
7260
+ * `includeInputIds`, and only honored by the server when that dependency
7261
+ * would otherwise fail with an overridable reason (see
7262
+ * `OVERRIDABLE_OPTION_DEPENDENCY_REASONS`). Never persisted, never applied
7263
+ * to card predicates; it lives in one browse request and its cache identity.
7264
+ */
7265
+ omitInputIds?: string[];
7266
+ };
7267
+
7268
+ declare type SemaphorOptionDependencyMode = 'independent' | 'explicit' | 'all_applicable';
7269
+
7270
+ declare type SemaphorOptionPopulation = {
7271
+ kind: 'option_source';
7272
+ baseSource?: never;
7273
+ } | {
7274
+ kind: 'related_population';
7275
+ baseSource: SemaphorSourceRef;
7276
+ relationshipHint?: SemaphorRelationshipHint;
7277
+ };
7278
+
7279
+ declare type SemaphorRelationshipHint = {
7280
+ relationshipIds?: string[];
7281
+ };
7282
+
7228
7283
  declare type SemaphorScalarValueFormat = {
7229
7284
  type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
7230
7285
  minimumFractionDigits?: number;
@@ -4149,6 +4149,16 @@ export declare type DashboardFilterExcludedCardApplication = {
4149
4149
  cardId: string;
4150
4150
  };
4151
4151
 
4152
+ /**
4153
+ * Persisted policy for which peer selections narrow a filter's option list.
4154
+ * Omitted means All applicable for dashboards; see
4155
+ * `resolveDashboardOptionDependencies`.
4156
+ */
4157
+ declare type DashboardFilterOptionDependencies = SemaphorOptionDependencies;
4158
+
4159
+ /** Persisted population that fixes relevance for fact-bridged cascades. */
4160
+ declare type DashboardFilterOptionPopulation = SemaphorOptionPopulation;
4161
+
4152
4162
  /** Persisted label/value option definition for a mapped dashboard filter. */
4153
4163
  export declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
4154
4164
 
@@ -4936,6 +4946,8 @@ export declare type EmbeddedFilterDashboardInput = FilterDashboardInputBase & {
4936
4946
  filter: TFilter;
4937
4947
  filterReference?: never;
4938
4948
  optionSource?: DashboardFilterOptionSource;
4949
+ optionDependencies?: DashboardFilterOptionDependencies;
4950
+ optionPopulation?: DashboardFilterOptionPopulation;
4939
4951
  application?: DashboardFilterApplication;
4940
4952
  };
4941
4953
 
@@ -5150,6 +5162,15 @@ declare interface Field {
5150
5162
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
5151
5163
  */
5152
5164
  label: string;
5165
+ /**
5166
+ * Set only when `label` was synthesized from `name` because the source
5167
+ * provided no authored label (raw database objects). Field pickers follow
5168
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
5169
+ * label is shown as is, otherwise the physical column name. A field whose
5170
+ * `label` still equals `derivedLabel` has no authored label; any later
5171
+ * edit to `label` makes it authored without touching this marker.
5172
+ */
5173
+ derivedLabel?: string;
5153
5174
  /**
5154
5175
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
5155
5176
  * If not provided, should be auto-generated from label or name.
@@ -5913,6 +5934,8 @@ export declare type NormalizedFilterDashboardInput = FilterDashboardInputBase &
5913
5934
  kind: 'filter';
5914
5935
  filter: TFilter;
5915
5936
  optionSource?: DashboardFilterOptionSource;
5937
+ optionDependencies?: DashboardFilterOptionDependencies;
5938
+ optionPopulation?: DashboardFilterOptionPopulation;
5916
5939
  application?: DashboardFilterApplication;
5917
5940
  definitionOrigin: 'embedded' | 'dashboardFilter';
5918
5941
  };
@@ -7680,6 +7703,8 @@ export declare type ReferencedFilterDashboardInput = FilterDashboardInputBase &
7680
7703
  filterId: string;
7681
7704
  };
7682
7705
  optionSource?: DashboardFilterOptionSource;
7706
+ optionDependencies?: DashboardFilterOptionDependencies;
7707
+ optionPopulation?: DashboardFilterOptionPopulation;
7683
7708
  application?: DashboardFilterApplication;
7684
7709
  };
7685
7710
 
@@ -7977,6 +8002,38 @@ declare type SemaphorInputOptionSource = {
7977
8002
  disambiguationFields?: SemaphorFieldRef[];
7978
8003
  };
7979
8004
 
8005
+ declare type SemaphorOptionDependencies = {
8006
+ /** Omitted mode means independent for protocol callers. Dashboard authoring
8007
+ * normalizes omission separately through `resolveDashboardOptionDependencies`. */
8008
+ mode?: SemaphorOptionDependencyMode;
8009
+ includeInputIds?: string[];
8010
+ excludeInputIds?: string[];
8011
+ /**
8012
+ * Ephemeral browse override: explicit dependencies the viewer asked to
8013
+ * browse without. Only valid in explicit mode, only for ids in
8014
+ * `includeInputIds`, and only honored by the server when that dependency
8015
+ * would otherwise fail with an overridable reason (see
8016
+ * `OVERRIDABLE_OPTION_DEPENDENCY_REASONS`). Never persisted, never applied
8017
+ * to card predicates; it lives in one browse request and its cache identity.
8018
+ */
8019
+ omitInputIds?: string[];
8020
+ };
8021
+
8022
+ declare type SemaphorOptionDependencyMode = 'independent' | 'explicit' | 'all_applicable';
8023
+
8024
+ declare type SemaphorOptionPopulation = {
8025
+ kind: 'option_source';
8026
+ baseSource?: never;
8027
+ } | {
8028
+ kind: 'related_population';
8029
+ baseSource: SemaphorSourceRef;
8030
+ relationshipHint?: SemaphorRelationshipHint;
8031
+ };
8032
+
8033
+ declare type SemaphorRelationshipHint = {
8034
+ relationshipIds?: string[];
8035
+ };
8036
+
7980
8037
  declare type SemaphorScalarValueFormat = {
7981
8038
  type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
7982
8039
  minimumFractionDigits?: number;
@@ -4664,6 +4664,16 @@ export declare type DashboardFilterExcludedCardApplication = {
4664
4664
  cardId: string;
4665
4665
  };
4666
4666
 
4667
+ /**
4668
+ * Persisted policy for which peer selections narrow a filter's option list.
4669
+ * Omitted means All applicable for dashboards; see
4670
+ * `resolveDashboardOptionDependencies`.
4671
+ */
4672
+ declare type DashboardFilterOptionDependencies = SemaphorOptionDependencies;
4673
+
4674
+ /** Persisted population that fixes relevance for fact-bridged cascades. */
4675
+ declare type DashboardFilterOptionPopulation = SemaphorOptionPopulation;
4676
+
4667
4677
  /** Persisted label/value option definition for a mapped dashboard filter. */
4668
4678
  export declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
4669
4679
 
@@ -5513,6 +5523,8 @@ export declare type EmbeddedFilterDashboardInput = FilterDashboardInputBase & {
5513
5523
  filter: TFilter;
5514
5524
  filterReference?: never;
5515
5525
  optionSource?: DashboardFilterOptionSource;
5526
+ optionDependencies?: DashboardFilterOptionDependencies;
5527
+ optionPopulation?: DashboardFilterOptionPopulation;
5516
5528
  application?: DashboardFilterApplication;
5517
5529
  };
5518
5530
 
@@ -5737,6 +5749,15 @@ export declare interface Field {
5737
5749
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
5738
5750
  */
5739
5751
  label: string;
5752
+ /**
5753
+ * Set only when `label` was synthesized from `name` because the source
5754
+ * provided no authored label (raw database objects). Field pickers follow
5755
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
5756
+ * label is shown as is, otherwise the physical column name. A field whose
5757
+ * `label` still equals `derivedLabel` has no authored label; any later
5758
+ * edit to `label` makes it authored without touching this marker.
5759
+ */
5760
+ derivedLabel?: string;
5740
5761
  /**
5741
5762
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
5742
5763
  * If not provided, should be auto-generated from label or name.
@@ -6583,6 +6604,8 @@ export declare type NormalizedFilterDashboardInput = FilterDashboardInputBase &
6583
6604
  kind: 'filter';
6584
6605
  filter: TFilter;
6585
6606
  optionSource?: DashboardFilterOptionSource;
6607
+ optionDependencies?: DashboardFilterOptionDependencies;
6608
+ optionPopulation?: DashboardFilterOptionPopulation;
6586
6609
  application?: DashboardFilterApplication;
6587
6610
  definitionOrigin: 'embedded' | 'dashboardFilter';
6588
6611
  };
@@ -8488,6 +8511,8 @@ export declare type ReferencedFilterDashboardInput = FilterDashboardInputBase &
8488
8511
  filterId: string;
8489
8512
  };
8490
8513
  optionSource?: DashboardFilterOptionSource;
8514
+ optionDependencies?: DashboardFilterOptionDependencies;
8515
+ optionPopulation?: DashboardFilterOptionPopulation;
8491
8516
  application?: DashboardFilterApplication;
8492
8517
  };
8493
8518
 
@@ -8838,6 +8863,34 @@ declare type SemaphorInputOptionSource = {
8838
8863
  disambiguationFields?: SemaphorFieldRef[];
8839
8864
  };
8840
8865
 
8866
+ declare type SemaphorOptionDependencies = {
8867
+ /** Omitted mode means independent for protocol callers. Dashboard authoring
8868
+ * normalizes omission separately through `resolveDashboardOptionDependencies`. */
8869
+ mode?: SemaphorOptionDependencyMode;
8870
+ includeInputIds?: string[];
8871
+ excludeInputIds?: string[];
8872
+ /**
8873
+ * Ephemeral browse override: explicit dependencies the viewer asked to
8874
+ * browse without. Only valid in explicit mode, only for ids in
8875
+ * `includeInputIds`, and only honored by the server when that dependency
8876
+ * would otherwise fail with an overridable reason (see
8877
+ * `OVERRIDABLE_OPTION_DEPENDENCY_REASONS`). Never persisted, never applied
8878
+ * to card predicates; it lives in one browse request and its cache identity.
8879
+ */
8880
+ omitInputIds?: string[];
8881
+ };
8882
+
8883
+ declare type SemaphorOptionDependencyMode = 'independent' | 'explicit' | 'all_applicable';
8884
+
8885
+ declare type SemaphorOptionPopulation = {
8886
+ kind: 'option_source';
8887
+ baseSource?: never;
8888
+ } | {
8889
+ kind: 'related_population';
8890
+ baseSource: SemaphorSourceRef;
8891
+ relationshipHint?: SemaphorRelationshipHint;
8892
+ };
8893
+
8841
8894
  declare type SemaphorPivotResultColumnIdentity = {
8842
8895
  metricId: string;
8843
8896
  /** Collision-safe identity for this configured metric instance. */
@@ -8862,6 +8915,10 @@ declare type SemaphorPivotResultMember = {
8862
8915
  /** Stable canonical scalar transported for one physical pivot member. */
8863
8916
  declare type SemaphorPivotValue = string | null;
8864
8917
 
8918
+ declare type SemaphorRelationshipHint = {
8919
+ relationshipIds?: string[];
8920
+ };
8921
+
8865
8922
  declare type SemaphorResultColumn = {
8866
8923
  /**
8867
8924
  * Stable row accessor for this result. Consumers should read values with
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.1.494",
8
+ "version": "0.1.496",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",