Member Junction
    Preparing search index...
    ShareTarget: { kind: "user"; userId: string } | { kind: "role"; roleId: string }

    Target of a direct share: either an MJ user or an MJ role. Discriminated union so the type system enforces exactly one of userId / roleId is provided (mirrors the ValidateTypeAndRoleOrUserIDExclusive rule on MJResourcePermission).