Narrow to the string variant, validating its payload.
Narrow to the number variant, validating its payload.
Narrow to the integer variant, validating its payload.
Narrow to the boolean variant, validating its payload.
Narrow to the array variant, validating its payload.
Narrow to a custom or future variant: the type tag matches no known variant.
TypeScript keeps the known variants in the narrowed union (they are
structural subtypes of the catch-all), so read vendor payload keys
via a widening cast: (value as Record<string, unknown>).someKey.
Validated type guards for
ElicitationPropertySchema's known variants.Each guard validates the variant's payload, not just its discriminant tag: a malformed known variant (right tag, wrong payload) matches no guard — mirroring wire validation, which rejects such values instead of classifying them as custom.
Guards check the value as given: fields that wire deserialization salvages to a default (e.g. a malformed
_meta) are only normalized by parsing, and for ambiguous raw shapes (a known tag combined with another variant's payload) guards are conservative where wire parsing may still accept the value — narrow wire-parsed values when exact parity matters.