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
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-DXQsuuMQ.cjs"),r=require("../chunks/common-types-nBuCd3u2.cjs"),o=require("../chunks/report-preferences-dialog-oT-C29vV.cjs");exports.DisplayFormatPreferencesFields=e.DisplayFormatPreferencesFields;exports.Surfboard=e.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=r.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;exports.ReportPreferencesDialog=o.ReportPreferencesDialog;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-BSRwdFTN.cjs"),r=require("../chunks/common-types-nBuCd3u2.cjs"),o=require("../chunks/report-preferences-dialog-DGEq-iBF.cjs");exports.DisplayFormatPreferencesFields=e.DisplayFormatPreferencesFields;exports.Surfboard=e.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=r.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;exports.ReportPreferencesDialog=o.ReportPreferencesDialog;
@@ -1,6 +1,6 @@
1
- import { b as a, a as o } from "../chunks/index-CPWfCksu.js";
1
+ import { b as a, a as o } from "../chunks/index-Cgoz65yM.js";
2
2
  import { C as f, E } from "../chunks/common-types-C6cAQgyh.js";
3
- import { R as t } from "../chunks/report-preferences-dialog-Bt8T3To1.js";
3
+ import { R as t } from "../chunks/report-preferences-dialog-CVRJOCQu.js";
4
4
  export {
5
5
  f as CONTROL_CARD_DEFAULT_VALUE,
6
6
  a as DisplayFormatPreferencesFields,
@@ -13360,6 +13360,15 @@ declare interface Field {
13360
13360
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
13361
13361
  */
13362
13362
  label: string;
13363
+ /**
13364
+ * Set only when `label` was synthesized from `name` because the source
13365
+ * provided no authored label (raw database objects). Field pickers follow
13366
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
13367
+ * label is shown as is, otherwise the physical column name. A field whose
13368
+ * `label` still equals `derivedLabel` has no authored label; any later
13369
+ * edit to `label` makes it authored without touching this marker.
13370
+ */
13371
+ derivedLabel?: string;
13363
13372
  /**
13364
13373
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
13365
13374
  * If not provided, should be auto-generated from label or name.
@@ -13889,10 +13898,17 @@ export declare function isExactNumericValue(value: unknown): value is ExactNumer
13889
13898
  /** Null expansion means all detail, not the browser's default depth. */
13890
13899
  export declare function isMatrixPathExpanded(path: MatrixPath, expansion: MatrixExpansion | null): boolean;
13891
13900
 
13901
+ /** Null checks carry no values but still constrain the option list. */
13902
+ export declare function isNullCheckPredicate(predicate: Pick<NativePredicateSemantics, 'operation'>): boolean;
13903
+
13904
+ export declare function isOverridableOptionDependencyReason(reason: unknown): reason is (typeof OVERRIDABLE_OPTION_DEPENDENCY_REASONS)[number];
13905
+
13892
13906
  export declare function isSemaphorAnalyzeResultFieldName(value: string): value is SemaphorAnalyzeResultFieldName;
13893
13907
 
13894
13908
  export declare function isSemaphorDataAppCodegenSummary(value: unknown): value is SemaphorDataAppCodegenSummary;
13895
13909
 
13910
+ export declare function isSemaphorOptionMatchValue(value: unknown): value is SemaphorOptionMatchValue;
13911
+
13896
13912
  /**
13897
13913
  * Classifies persisted selected-entity metadata. This is structural metadata
13898
13914
  * handling; it does not inspect or parse authored SQL.
@@ -60101,6 +60117,10 @@ export declare const matrixWindowSchema: z.ZodEffects<z.ZodObject<{
60101
60117
  }[];
60102
60118
  }>;
60103
60119
 
60120
+ /** Upper bound on exact values one relevance check may submit. Values beyond
60121
+ * it stay `unknown`; a truncated list is never evidence of absence. */
60122
+ export declare const MAX_OPTION_MATCH_VALUES = 200;
60123
+
60104
60124
  export declare function mergeSemaphorSourcesByIdentity<TSource extends SemaphorSourceRef>(sources: readonly TSource[]): TSource[];
60105
60125
 
60106
60126
  export declare type MetricComparisonConfig = {
@@ -60260,6 +60280,34 @@ declare type MonthAlignedFiscalCalendar = {
60260
60280
  yearStartMonth: number;
60261
60281
  };
60262
60282
 
60283
+ export declare const NATIVE_PREDICATE_OPERATIONS: readonly ["=", "!=", ">", "<", ">=", "<=", "like", "not like", "between", "not between", "in", "not in", "is null", "is not null"];
60284
+
60285
+ export declare type NativePredicateOperation = (typeof NATIVE_PREDICATE_OPERATIONS)[number];
60286
+
60287
+ /**
60288
+ * Predicate semantics a dashboard transport wants executed verbatim. This is
60289
+ * a closed contract: only the keys below survive, so a native filter value
60290
+ * crossing a JSON boundary can never carry identity (field name, qualified
60291
+ * name, owning entity, datatype, source context, calculated expression). The
60292
+ * server rebuilds identity from grounding and re-applies the same contract.
60293
+ */
60294
+ export declare type NativePredicateSemantics = {
60295
+ operation: NativePredicateOperation;
60296
+ values: unknown[];
60297
+ valueType?: 'string' | 'number' | 'date' | 'boolean';
60298
+ temporalBucket?: unknown;
60299
+ relativeMeta?: unknown;
60300
+ temporalPrecision?: unknown;
60301
+ };
60302
+
60303
+ /**
60304
+ * The allowlisted keys of a native filter value, unvalidated. This is what a
60305
+ * client transport sends: it never decides whether a predicate is executable,
60306
+ * so nothing is dropped on the way to the server, and it never carries a key
60307
+ * outside the contract. Returns undefined only for a non-object value.
60308
+ */
60309
+ export declare type NativePredicateSemanticsCandidate = Partial<Record<keyof NativePredicateSemantics, unknown>>;
60310
+
60263
60311
  export declare function normalizeAnalyticsCatalogDataType(value: unknown): AnalyticsCatalogDataType;
60264
60312
 
60265
60313
  export declare function normalizeAnalyticsCatalogName(value: unknown): string;
@@ -60290,8 +60338,36 @@ export declare const nullableScalarSchema: z.ZodUnion<[z.ZodNumber, z.ZodString,
60290
60338
 
60291
60339
  declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'like' | 'not like' | 'in' | 'not in' | 'between' | 'not between' | 'isNull' | 'isNotNull';
60292
60340
 
60341
+ /**
60342
+ * Reasons a viewer may browse around with a labeled override. Everything
60343
+ * else (auth, execution, malformed metadata, unsupported semantics) stays an
60344
+ * error that an override cannot bypass.
60345
+ */
60346
+ export declare const OVERRIDABLE_OPTION_DEPENDENCY_REASONS: readonly ["missing_dependency", "missing_relationship", "population_required", "ambiguous_relationship"];
60347
+
60293
60348
  export declare function parseMatrixRuntimeInputs(input: unknown): MatrixRuntimeInputs;
60294
60349
 
60350
+ /**
60351
+ * Builds validated predicate semantics from a native filter value or a
60352
+ * transported candidate. Returns undefined when the operation or cardinality
60353
+ * is not executable; the server reports that as a typed outcome rather than
60354
+ * dropping the candidate.
60355
+ */
60356
+ export declare function parseNativePredicateSemantics(value: unknown): NativePredicateSemantics | undefined;
60357
+
60358
+ /**
60359
+ * The one structural rule for `matchValues` on every transport: a non-empty
60360
+ * list of scalar values within the bound. Both the intent validator and the
60361
+ * standard body parser use it, so the two transports cannot drift.
60362
+ */
60363
+ export declare function parseOptionMatchValues(raw: unknown): {
60364
+ ok: true;
60365
+ values: SemaphorOptionMatchValue[];
60366
+ } | {
60367
+ ok: false;
60368
+ error: string;
60369
+ };
60370
+
60295
60371
  /** Strictly parses one raw temporal descriptor at a result boundary. */
60296
60372
  export declare function parseRawTemporalValueMetadata(input: unknown): RawTemporalValueMetadata;
60297
60373
 
@@ -60306,6 +60382,14 @@ export declare function parseSemaphorQualifiedSourcePath(input: {
60306
60382
  capabilities: Pick<SemaphorConnectionCapabilities, 'prefixLevels'>;
60307
60383
  }): SemaphorSourceCoordinateInput;
60308
60384
 
60385
+ /**
60386
+ * The unqualified, unquoted leaf of a persisted identifier path such as
60387
+ * `schema.table.column`, `"Column Name"`, `` `col` `` or `[col]`. Persisted
60388
+ * filter names and columns carry dialect quoting; consumers that need the
60389
+ * bare column name use this instead of hand-rolled string surgery.
60390
+ */
60391
+ export declare function persistedIdentifierLeafName(value: string | null | undefined): string;
60392
+
60309
60393
  declare type PhysicalResolutionCapabilities = Pick<SemaphorConnectionCapabilities, 'dialect' | 'prefixLevels'>;
60310
60394
 
60311
60395
  export declare function preferSemaphorFieldRefMetadata(current: SemaphorFieldRef, next: SemaphorFieldRef): SemaphorFieldRef;
@@ -61908,6 +61992,8 @@ declare const presentationFields: {
61908
61992
  }>>;
61909
61993
  };
61910
61994
 
61995
+ export declare function projectNativePredicateSemantics(value: unknown): NativePredicateSemanticsCandidate | undefined;
61996
+
61911
61997
  export declare const RAW_TEMPORAL_CONTRACT_ERROR_CODES: {
61912
61998
  readonly invalidMetadata: "invalid_raw_temporal_metadata";
61913
61999
  };
@@ -65072,6 +65158,15 @@ export declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
65072
65158
  dependencies?: SemaphorOptionDependencies;
65073
65159
  search?: string;
65074
65160
  limit?: number;
65161
+ /**
65162
+ * Authoritative selected-value relevance check: return only options whose
65163
+ * value is one of these exact raw values, under the same dependency and
65164
+ * population context, with no search or paging. Bounded by
65165
+ * `MAX_OPTION_MATCH_VALUES`. The result's `match.complete` says whether
65166
+ * absence from the returned options proves no match. Scalars only; see
65167
+ * `parseOptionMatchValues`.
65168
+ */
65169
+ matchValues?: Array<string | number | boolean>;
65075
65170
  inputs?: SemaphorInputBinding[];
65076
65171
  derivedFields?: SemaphorDerivedFieldDefinition[];
65077
65172
  };
@@ -65088,6 +65183,9 @@ export declare type SemaphorInputOptionSource = {
65088
65183
 
65089
65184
  export declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
65090
65185
  kind: 'inputOptions';
65186
+ dependencyOutcomes?: SemaphorOptionDependencyOutcome[];
65187
+ /** Present when the intent carried `matchValues`. */
65188
+ match?: SemaphorOptionMatchResult;
65091
65189
  options: Array<{
65092
65190
  label: string;
65093
65191
  value: unknown;
@@ -65098,6 +65196,29 @@ export declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
65098
65196
 
65099
65197
  export declare const semaphorInputOptionsResultSchema: z.ZodObject<{
65100
65198
  kind: z.ZodLiteral<"inputOptions">;
65199
+ dependencyOutcomes: z.ZodOptional<z.ZodArray<z.ZodObject<{
65200
+ inputId: z.ZodString;
65201
+ status: z.ZodEnum<["applied", "inactive", "skipped", "overridden", "error"]>;
65202
+ reason: z.ZodOptional<z.ZodEnum<["unrelated", "population_required", "missing_dependency", "missing_relationship", "ambiguous_relationship", "invalid_metadata", "unsupported_dependency", "override_not_eligible"]>>;
65203
+ }, "strip", z.ZodTypeAny, {
65204
+ status: "applied" | "inactive" | "skipped" | "overridden" | "error";
65205
+ inputId: string;
65206
+ reason?: "unrelated" | "population_required" | "missing_dependency" | "missing_relationship" | "ambiguous_relationship" | "invalid_metadata" | "unsupported_dependency" | "override_not_eligible" | undefined;
65207
+ }, {
65208
+ status: "applied" | "inactive" | "skipped" | "overridden" | "error";
65209
+ inputId: string;
65210
+ reason?: "unrelated" | "population_required" | "missing_dependency" | "missing_relationship" | "ambiguous_relationship" | "invalid_metadata" | "unsupported_dependency" | "override_not_eligible" | undefined;
65211
+ }>, "many">>;
65212
+ match: z.ZodOptional<z.ZodObject<{
65213
+ complete: z.ZodBoolean;
65214
+ reason: z.ZodOptional<z.ZodEnum<["unsupported", "truncated"]>>;
65215
+ }, "strip", z.ZodTypeAny, {
65216
+ complete: boolean;
65217
+ reason?: "unsupported" | "truncated" | undefined;
65218
+ }, {
65219
+ complete: boolean;
65220
+ reason?: "unsupported" | "truncated" | undefined;
65221
+ }>>;
65101
65222
  options: z.ZodArray<z.ZodEffects<z.ZodObject<z.ZodRawShape, "passthrough", z.ZodTypeAny, z.objectOutputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">, z.objectInputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">>, z.objectOutputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">, z.objectInputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">>, "many">;
65102
65223
  intentId: z.ZodOptional<z.ZodString>;
65103
65224
  queryPath: z.ZodEnum<["query_spec", "sql", "sql_python"]>;
@@ -65129,6 +65250,29 @@ export declare const semaphorInputOptionsResultSchema: z.ZodObject<{
65129
65250
  }, z.ZodTypeAny, "passthrough">>>;
65130
65251
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
65131
65252
  kind: z.ZodLiteral<"inputOptions">;
65253
+ dependencyOutcomes: z.ZodOptional<z.ZodArray<z.ZodObject<{
65254
+ inputId: z.ZodString;
65255
+ status: z.ZodEnum<["applied", "inactive", "skipped", "overridden", "error"]>;
65256
+ reason: z.ZodOptional<z.ZodEnum<["unrelated", "population_required", "missing_dependency", "missing_relationship", "ambiguous_relationship", "invalid_metadata", "unsupported_dependency", "override_not_eligible"]>>;
65257
+ }, "strip", z.ZodTypeAny, {
65258
+ status: "applied" | "inactive" | "skipped" | "overridden" | "error";
65259
+ inputId: string;
65260
+ reason?: "unrelated" | "population_required" | "missing_dependency" | "missing_relationship" | "ambiguous_relationship" | "invalid_metadata" | "unsupported_dependency" | "override_not_eligible" | undefined;
65261
+ }, {
65262
+ status: "applied" | "inactive" | "skipped" | "overridden" | "error";
65263
+ inputId: string;
65264
+ reason?: "unrelated" | "population_required" | "missing_dependency" | "missing_relationship" | "ambiguous_relationship" | "invalid_metadata" | "unsupported_dependency" | "override_not_eligible" | undefined;
65265
+ }>, "many">>;
65266
+ match: z.ZodOptional<z.ZodObject<{
65267
+ complete: z.ZodBoolean;
65268
+ reason: z.ZodOptional<z.ZodEnum<["unsupported", "truncated"]>>;
65269
+ }, "strip", z.ZodTypeAny, {
65270
+ complete: boolean;
65271
+ reason?: "unsupported" | "truncated" | undefined;
65272
+ }, {
65273
+ complete: boolean;
65274
+ reason?: "unsupported" | "truncated" | undefined;
65275
+ }>>;
65132
65276
  options: z.ZodArray<z.ZodEffects<z.ZodObject<z.ZodRawShape, "passthrough", z.ZodTypeAny, z.objectOutputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">, z.objectInputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">>, z.objectOutputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">, z.objectInputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">>, "many">;
65133
65277
  intentId: z.ZodOptional<z.ZodString>;
65134
65278
  queryPath: z.ZodEnum<["query_spec", "sql", "sql_python"]>;
@@ -65160,6 +65304,29 @@ export declare const semaphorInputOptionsResultSchema: z.ZodObject<{
65160
65304
  }, z.ZodTypeAny, "passthrough">>>;
65161
65305
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
65162
65306
  kind: z.ZodLiteral<"inputOptions">;
65307
+ dependencyOutcomes: z.ZodOptional<z.ZodArray<z.ZodObject<{
65308
+ inputId: z.ZodString;
65309
+ status: z.ZodEnum<["applied", "inactive", "skipped", "overridden", "error"]>;
65310
+ reason: z.ZodOptional<z.ZodEnum<["unrelated", "population_required", "missing_dependency", "missing_relationship", "ambiguous_relationship", "invalid_metadata", "unsupported_dependency", "override_not_eligible"]>>;
65311
+ }, "strip", z.ZodTypeAny, {
65312
+ status: "applied" | "inactive" | "skipped" | "overridden" | "error";
65313
+ inputId: string;
65314
+ reason?: "unrelated" | "population_required" | "missing_dependency" | "missing_relationship" | "ambiguous_relationship" | "invalid_metadata" | "unsupported_dependency" | "override_not_eligible" | undefined;
65315
+ }, {
65316
+ status: "applied" | "inactive" | "skipped" | "overridden" | "error";
65317
+ inputId: string;
65318
+ reason?: "unrelated" | "population_required" | "missing_dependency" | "missing_relationship" | "ambiguous_relationship" | "invalid_metadata" | "unsupported_dependency" | "override_not_eligible" | undefined;
65319
+ }>, "many">>;
65320
+ match: z.ZodOptional<z.ZodObject<{
65321
+ complete: z.ZodBoolean;
65322
+ reason: z.ZodOptional<z.ZodEnum<["unsupported", "truncated"]>>;
65323
+ }, "strip", z.ZodTypeAny, {
65324
+ complete: boolean;
65325
+ reason?: "unsupported" | "truncated" | undefined;
65326
+ }, {
65327
+ complete: boolean;
65328
+ reason?: "unsupported" | "truncated" | undefined;
65329
+ }>>;
65163
65330
  options: z.ZodArray<z.ZodEffects<z.ZodObject<z.ZodRawShape, "passthrough", z.ZodTypeAny, z.objectOutputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">, z.objectInputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">>, z.objectOutputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">, z.objectInputType<z.ZodRawShape, z.ZodTypeAny, "passthrough">>, "many">;
65164
65331
  intentId: z.ZodOptional<z.ZodString>;
65165
65332
  queryPath: z.ZodEnum<["query_spec", "sql", "sql_python"]>;
@@ -65445,11 +65612,78 @@ export declare type SemaphorOperationIntent = {
65445
65612
  };
65446
65613
 
65447
65614
  export declare type SemaphorOptionDependencies = {
65448
- mode?: 'independent' | 'explicit';
65615
+ /** Omitted mode means independent for protocol callers. Dashboard authoring
65616
+ * normalizes omission separately through `resolveDashboardOptionDependencies`. */
65617
+ mode?: SemaphorOptionDependencyMode;
65449
65618
  includeInputIds?: string[];
65450
65619
  excludeInputIds?: string[];
65620
+ /**
65621
+ * Ephemeral browse override: explicit dependencies the viewer asked to
65622
+ * browse without. Only valid in explicit mode, only for ids in
65623
+ * `includeInputIds`, and only honored by the server when that dependency
65624
+ * would otherwise fail with an overridable reason (see
65625
+ * `OVERRIDABLE_OPTION_DEPENDENCY_REASONS`). Never persisted, never applied
65626
+ * to card predicates; it lives in one browse request and its cache identity.
65627
+ */
65628
+ omitInputIds?: string[];
65451
65629
  };
65452
65630
 
65631
+ export declare type SemaphorOptionDependencyMode = 'independent' | 'explicit' | 'all_applicable';
65632
+
65633
+ /** Per-candidate classification of an option query's dependencies. Describes
65634
+ * which viewer selections constrained the option list; it never substitutes
65635
+ * for execution success or failure. */
65636
+ export declare type SemaphorOptionDependencyOutcome = {
65637
+ inputId: string;
65638
+ status: SemaphorOptionDependencyOutcomeStatus;
65639
+ reason?: SemaphorOptionDependencyOutcomeReason;
65640
+ };
65641
+
65642
+ export declare type SemaphorOptionDependencyOutcomeReason = 'unrelated' | 'population_required' | 'missing_dependency' | 'missing_relationship' | 'ambiguous_relationship' | 'invalid_metadata' | 'unsupported_dependency' | 'override_not_eligible';
65643
+
65644
+ export declare const semaphorOptionDependencyOutcomeSchema: z.ZodObject<{
65645
+ inputId: z.ZodString;
65646
+ status: z.ZodEnum<["applied", "inactive", "skipped", "overridden", "error"]>;
65647
+ reason: z.ZodOptional<z.ZodEnum<["unrelated", "population_required", "missing_dependency", "missing_relationship", "ambiguous_relationship", "invalid_metadata", "unsupported_dependency", "override_not_eligible"]>>;
65648
+ }, "strip", z.ZodTypeAny, {
65649
+ status: "applied" | "inactive" | "skipped" | "overridden" | "error";
65650
+ inputId: string;
65651
+ reason?: "unrelated" | "population_required" | "missing_dependency" | "missing_relationship" | "ambiguous_relationship" | "invalid_metadata" | "unsupported_dependency" | "override_not_eligible" | undefined;
65652
+ }, {
65653
+ status: "applied" | "inactive" | "skipped" | "overridden" | "error";
65654
+ inputId: string;
65655
+ reason?: "unrelated" | "population_required" | "missing_dependency" | "missing_relationship" | "ambiguous_relationship" | "invalid_metadata" | "unsupported_dependency" | "override_not_eligible" | undefined;
65656
+ }>;
65657
+
65658
+ export declare type SemaphorOptionDependencyOutcomeStatus = 'applied' | 'inactive' | 'skipped' | 'overridden' | 'error';
65659
+
65660
+ export declare type SemaphorOptionDependencyValidationProfile = 'protocol' | 'dashboard';
65661
+
65662
+ export declare type SemaphorOptionMatchResult = {
65663
+ /** True only when every submitted value was evaluated by a complete exact
65664
+ * check; only then may absence be read as `no_match`. */
65665
+ complete: boolean;
65666
+ reason?: 'unsupported' | 'truncated';
65667
+ };
65668
+
65669
+ export declare const semaphorOptionMatchResultSchema: z.ZodObject<{
65670
+ complete: z.ZodBoolean;
65671
+ reason: z.ZodOptional<z.ZodEnum<["unsupported", "truncated"]>>;
65672
+ }, "strip", z.ZodTypeAny, {
65673
+ complete: boolean;
65674
+ reason?: "unsupported" | "truncated" | undefined;
65675
+ }, {
65676
+ complete: boolean;
65677
+ reason?: "unsupported" | "truncated" | undefined;
65678
+ }>;
65679
+
65680
+ /**
65681
+ * A raw value a relevance check may submit. NULL is deliberately excluded:
65682
+ * an `in` predicate cannot express "is null", so a null selection can never
65683
+ * be proven present or absent by this check and stays unknown on the client.
65684
+ */
65685
+ export declare type SemaphorOptionMatchValue = string | number | boolean;
65686
+
65453
65687
  export declare type SemaphorOptionPopulation = {
65454
65688
  kind: 'option_source';
65455
65689
  baseSource?: never;
@@ -68172,6 +68406,24 @@ declare interface TimeDrillStep {
68172
68406
 
68173
68407
  declare type TimeGranularity = SemaphorTimeGrain;
68174
68408
 
68409
+ /**
68410
+ * Semantics of a native filter value the caller already trusts structurally.
68411
+ * Throws only for programming errors (an unknown operation on a typed filter
68412
+ * value); JSON callers must use `parseNativePredicateSemantics`.
68413
+ */
68414
+ export declare function toNativePredicateSemantics(filter: {
68415
+ operation: string;
68416
+ values: unknown[];
68417
+ } & Record<string, unknown>): NativePredicateSemantics;
68418
+
68419
+ /**
68420
+ * Maps a dashboard filter operation (the `TFilterValue.operation` vocabulary)
68421
+ * to the shared input operator. Null checks have no input operator; callers
68422
+ * that carry the native predicate keep the original operation and only use
68423
+ * this mapping to describe the binding.
68424
+ */
68425
+ export declare function toSemaphorInputOperatorFromFilterOperation(operation: string | null | undefined): SemaphorInputOperator | undefined;
68426
+
68175
68427
  /**
68176
68428
  * Validates the atomic column boundary for an activated canonical producer.
68177
68429
  * Expected keys come from the producer's typed field/output mapping; this
@@ -68214,6 +68466,18 @@ export declare function validateSemaphorDerivedFieldDefinition(definition: Semap
68214
68466
 
68215
68467
  export declare function validateSemaphorOperationIntent(intent: SemaphorOperationIntent): SemaphorAnalyticsValidationResult;
68216
68468
 
68469
+ /**
68470
+ * Validates an option dependency policy object. The `protocol` profile is the
68471
+ * SDK contract: omitted mode stays independent and include/exclude lists are
68472
+ * only checked for shape. The `dashboard` profile adds the authored-policy
68473
+ * rules from the dashboard filter option dependencies plan: a mode is
68474
+ * required, independent carries no ID lists, explicit needs at least one
68475
+ * unique included ID and no exclusions, and all_applicable carries no include
68476
+ * list. Dependency ID declarations against `inputs` are validated by the
68477
+ * intent validator, not here.
68478
+ */
68479
+ export declare function validateSemaphorOptionDependencies(value: unknown, profile?: SemaphorOptionDependencyValidationProfile): SemaphorValidationResult;
68480
+
68217
68481
  export declare function validateSemaphorResultCalculation(calculation: SemaphorResultCalculation): SemaphorValidationResult;
68218
68482
 
68219
68483
  export declare function validateTemporalBucketMetadata(metadata: unknown): TemporalBucketMetadataValidationResult;
@@ -7491,6 +7491,16 @@ declare type DashboardFilterExcludedCardApplication = {
7491
7491
  cardId: string;
7492
7492
  };
7493
7493
 
7494
+ /**
7495
+ * Persisted policy for which peer selections narrow a filter's option list.
7496
+ * Omitted means All applicable for dashboards; see
7497
+ * `resolveDashboardOptionDependencies`.
7498
+ */
7499
+ declare type DashboardFilterOptionDependencies = SemaphorOptionDependencies;
7500
+
7501
+ /** Persisted population that fixes relevance for fact-bridged cascades. */
7502
+ declare type DashboardFilterOptionPopulation = SemaphorOptionPopulation;
7503
+
7494
7504
  /** Persisted label/value option definition for a mapped dashboard filter. */
7495
7505
  declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
7496
7506
 
@@ -8075,6 +8085,8 @@ declare type EmbeddedFilterDashboardInput = FilterDashboardInputBase & {
8075
8085
  filter: TFilter;
8076
8086
  filterReference?: never;
8077
8087
  optionSource?: DashboardFilterOptionSource;
8088
+ optionDependencies?: DashboardFilterOptionDependencies;
8089
+ optionPopulation?: DashboardFilterOptionPopulation;
8078
8090
  application?: DashboardFilterApplication;
8079
8091
  };
8080
8092
 
@@ -11340,6 +11352,15 @@ declare interface Field {
11340
11352
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
11341
11353
  */
11342
11354
  label: string;
11355
+ /**
11356
+ * Set only when `label` was synthesized from `name` because the source
11357
+ * provided no authored label (raw database objects). Field pickers follow
11358
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
11359
+ * label is shown as is, otherwise the physical column name. A field whose
11360
+ * `label` still equals `derivedLabel` has no authored label; any later
11361
+ * edit to `label` makes it authored without touching this marker.
11362
+ */
11363
+ derivedLabel?: string;
11343
11364
  /**
11344
11365
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
11345
11366
  * If not provided, should be auto-generated from label or name.
@@ -13909,6 +13930,8 @@ declare type ReferencedFilterDashboardInput = FilterDashboardInputBase & {
13909
13930
  filterId: string;
13910
13931
  };
13911
13932
  optionSource?: DashboardFilterOptionSource;
13933
+ optionDependencies?: DashboardFilterOptionDependencies;
13934
+ optionPopulation?: DashboardFilterOptionPopulation;
13912
13935
  application?: DashboardFilterApplication;
13913
13936
  };
13914
13937
 
@@ -14107,6 +14130,38 @@ declare type SemaphorInputOptionSource = {
14107
14130
  disambiguationFields?: SemaphorFieldRef[];
14108
14131
  };
14109
14132
 
14133
+ declare type SemaphorOptionDependencies = {
14134
+ /** Omitted mode means independent for protocol callers. Dashboard authoring
14135
+ * normalizes omission separately through `resolveDashboardOptionDependencies`. */
14136
+ mode?: SemaphorOptionDependencyMode;
14137
+ includeInputIds?: string[];
14138
+ excludeInputIds?: string[];
14139
+ /**
14140
+ * Ephemeral browse override: explicit dependencies the viewer asked to
14141
+ * browse without. Only valid in explicit mode, only for ids in
14142
+ * `includeInputIds`, and only honored by the server when that dependency
14143
+ * would otherwise fail with an overridable reason (see
14144
+ * `OVERRIDABLE_OPTION_DEPENDENCY_REASONS`). Never persisted, never applied
14145
+ * to card predicates; it lives in one browse request and its cache identity.
14146
+ */
14147
+ omitInputIds?: string[];
14148
+ };
14149
+
14150
+ declare type SemaphorOptionDependencyMode = 'independent' | 'explicit' | 'all_applicable';
14151
+
14152
+ declare type SemaphorOptionPopulation = {
14153
+ kind: 'option_source';
14154
+ baseSource?: never;
14155
+ } | {
14156
+ kind: 'related_population';
14157
+ baseSource: SemaphorSourceRef;
14158
+ relationshipHint?: SemaphorRelationshipHint;
14159
+ };
14160
+
14161
+ declare type SemaphorRelationshipHint = {
14162
+ relationshipIds?: string[];
14163
+ };
14164
+
14110
14165
  declare type SemaphorScalarValueFormat = {
14111
14166
  type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
14112
14167
  minimumFractionDigits?: number;
@@ -5597,6 +5597,15 @@ declare interface Field {
5597
5597
  * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
5598
5598
  */
5599
5599
  label: string;
5600
+ /**
5601
+ * Set only when `label` was synthesized from `name` because the source
5602
+ * provided no authored label (raw database objects). Field pickers follow
5603
+ * the naming rule in `@/lib/fields/field-display`: an authored semantic
5604
+ * label is shown as is, otherwise the physical column name. A field whose
5605
+ * `label` still equals `derivedLabel` has no authored label; any later
5606
+ * edit to `label` makes it authored without touching this marker.
5607
+ */
5608
+ derivedLabel?: string;
5600
5609
  /**
5601
5610
  * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
5602
5611
  * If not provided, should be auto-generated from label or name.
@@ -10980,6 +10989,15 @@ declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
10980
10989
  dependencies?: SemaphorOptionDependencies;
10981
10990
  search?: string;
10982
10991
  limit?: number;
10992
+ /**
10993
+ * Authoritative selected-value relevance check: return only options whose
10994
+ * value is one of these exact raw values, under the same dependency and
10995
+ * population context, with no search or paging. Bounded by
10996
+ * `MAX_OPTION_MATCH_VALUES`. The result's `match.complete` says whether
10997
+ * absence from the returned options proves no match. Scalars only; see
10998
+ * `parseOptionMatchValues`.
10999
+ */
11000
+ matchValues?: Array<string | number | boolean>;
10983
11001
  inputs?: SemaphorInputBinding[];
10984
11002
  derivedFields?: SemaphorDerivedFieldDefinition[];
10985
11003
  };
@@ -10996,6 +11014,9 @@ declare type SemaphorInputOptionSource = {
10996
11014
 
10997
11015
  declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
10998
11016
  kind: 'inputOptions';
11017
+ dependencyOutcomes?: SemaphorOptionDependencyOutcome[];
11018
+ /** Present when the intent carried `matchValues`. */
11019
+ match?: SemaphorOptionMatchResult;
10999
11020
  options: Array<{
11000
11021
  label: string;
11001
11022
  value: unknown;
@@ -11056,9 +11077,42 @@ declare type SemaphorMetricResult = SemaphorAnalyticsResultBase & {
11056
11077
  };
11057
11078
 
11058
11079
  declare type SemaphorOptionDependencies = {
11059
- mode?: 'independent' | 'explicit';
11080
+ /** Omitted mode means independent for protocol callers. Dashboard authoring
11081
+ * normalizes omission separately through `resolveDashboardOptionDependencies`. */
11082
+ mode?: SemaphorOptionDependencyMode;
11060
11083
  includeInputIds?: string[];
11061
11084
  excludeInputIds?: string[];
11085
+ /**
11086
+ * Ephemeral browse override: explicit dependencies the viewer asked to
11087
+ * browse without. Only valid in explicit mode, only for ids in
11088
+ * `includeInputIds`, and only honored by the server when that dependency
11089
+ * would otherwise fail with an overridable reason (see
11090
+ * `OVERRIDABLE_OPTION_DEPENDENCY_REASONS`). Never persisted, never applied
11091
+ * to card predicates; it lives in one browse request and its cache identity.
11092
+ */
11093
+ omitInputIds?: string[];
11094
+ };
11095
+
11096
+ declare type SemaphorOptionDependencyMode = 'independent' | 'explicit' | 'all_applicable';
11097
+
11098
+ /** Per-candidate classification of an option query's dependencies. Describes
11099
+ * which viewer selections constrained the option list; it never substitutes
11100
+ * for execution success or failure. */
11101
+ declare type SemaphorOptionDependencyOutcome = {
11102
+ inputId: string;
11103
+ status: SemaphorOptionDependencyOutcomeStatus;
11104
+ reason?: SemaphorOptionDependencyOutcomeReason;
11105
+ };
11106
+
11107
+ declare type SemaphorOptionDependencyOutcomeReason = 'unrelated' | 'population_required' | 'missing_dependency' | 'missing_relationship' | 'ambiguous_relationship' | 'invalid_metadata' | 'unsupported_dependency' | 'override_not_eligible';
11108
+
11109
+ declare type SemaphorOptionDependencyOutcomeStatus = 'applied' | 'inactive' | 'skipped' | 'overridden' | 'error';
11110
+
11111
+ declare type SemaphorOptionMatchResult = {
11112
+ /** True only when every submitted value was evaluated by a complete exact
11113
+ * check; only then may absence be read as `no_match`. */
11114
+ complete: boolean;
11115
+ reason?: 'unsupported' | 'truncated';
11062
11116
  };
11063
11117
 
11064
11118
  declare type SemaphorOptionPopulation = {