@singi-labs/sifa-sdk 0.12.3 → 0.12.4

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 (47) hide show
  1. package/dist/{adult-content-DDGP8W1e.d.cts → adult-content-n2uy3rT3.d.cts} +31 -1
  2. package/dist/{adult-content-DDGP8W1e.d.ts → adult-content-n2uy3rT3.d.ts} +31 -1
  3. package/dist/{index-IMvNS08M.d.ts → index-BLv2bK_K.d.ts} +2 -2
  4. package/dist/{index-BS7zO7KI.d.cts → index-COjgkXRe.d.cts} +86 -3
  5. package/dist/{index-CNh-GI9A.d.cts → index-HTTNUcN4.d.cts} +2 -2
  6. package/dist/{index-iAzeLOcz.d.ts → index-tkWmoZAu.d.ts} +86 -3
  7. package/dist/index.cjs +73 -1
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +96 -5
  10. package/dist/index.d.ts +96 -5
  11. package/dist/index.js +68 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/{keys-5oyp950_.d.ts → org-BZcAnLab.d.ts} +88 -2
  14. package/dist/{keys-Bn36IA8Q.d.cts → org-lIB6pSYc.d.cts} +88 -2
  15. package/dist/org-settings-CmaSX5ZI.d.cts +74 -0
  16. package/dist/org-settings-CmaSX5ZI.d.ts +74 -0
  17. package/dist/query/fetchers/index.cjs +45 -0
  18. package/dist/query/fetchers/index.cjs.map +1 -1
  19. package/dist/query/fetchers/index.d.cts +4 -3
  20. package/dist/query/fetchers/index.d.ts +4 -3
  21. package/dist/query/fetchers/index.js +40 -1
  22. package/dist/query/fetchers/index.js.map +1 -1
  23. package/dist/query/hooks/index.cjs +118 -0
  24. package/dist/query/hooks/index.cjs.map +1 -1
  25. package/dist/query/hooks/index.d.cts +4 -3
  26. package/dist/query/hooks/index.d.ts +4 -3
  27. package/dist/query/hooks/index.js +112 -1
  28. package/dist/query/hooks/index.js.map +1 -1
  29. package/dist/query/index.cjs +122 -0
  30. package/dist/query/index.cjs.map +1 -1
  31. package/dist/query/index.d.cts +6 -5
  32. package/dist/query/index.d.ts +6 -5
  33. package/dist/query/index.js +110 -1
  34. package/dist/query/index.js.map +1 -1
  35. package/dist/schemas/index.cjs +27 -0
  36. package/dist/schemas/index.cjs.map +1 -1
  37. package/dist/schemas/index.d.cts +67 -1
  38. package/dist/schemas/index.d.ts +67 -1
  39. package/dist/schemas/index.js +26 -1
  40. package/dist/schemas/index.js.map +1 -1
  41. package/dist/schemas/write/index.cjs +36 -0
  42. package/dist/schemas/write/index.cjs.map +1 -1
  43. package/dist/schemas/write/index.d.cts +1 -0
  44. package/dist/schemas/write/index.d.ts +1 -0
  45. package/dist/schemas/write/index.js +32 -1
  46. package/dist/schemas/write/index.js.map +1 -1
  47. package/package.json +1 -1
@@ -450,9 +450,39 @@ interface ProfileOverrideSource {
450
450
  displayName?: string;
451
451
  avatarUrl?: string;
452
452
  }
453
+ /**
454
+ * The org-profile fields exposed on the profile resolve when the org rendering
455
+ * floor is met. Narrow on purpose: `contact` is never included (not rendered
456
+ * publicly); record URI/CID are internal. Mirrors sifa-api's `OrgProfileView`.
457
+ */
458
+ interface OrgProfileView {
459
+ name: string;
460
+ description: string | null;
461
+ website: string | null;
462
+ /** Blob CID (or resolved URL) of the org logo, when present. */
463
+ logoBlob: string | null;
464
+ entityRefs: string[] | null;
465
+ }
466
+ /**
467
+ * Server-computed org rendering-floor verdict (#160), carried on the profile
468
+ * resolve so clients need no extra round-trip. `isOrg` is true when the account
469
+ * has an `id.sifa.org.profile` record AND its handle is a custom registrable
470
+ * domain (the authoritative, PSL-backed check lives server-side). Read it via
471
+ * the `useOrgProfile` hook.
472
+ */
473
+ interface OrgFloorVerdict {
474
+ isOrg: boolean;
475
+ orgProfile?: OrgProfileView;
476
+ }
453
477
  interface Profile {
454
478
  did: string;
455
479
  handle: string;
480
+ /**
481
+ * Org rendering-floor verdict (#160). Present on the profile resolve; absent
482
+ * on payloads that predate the field. When `org.isOrg` is true the account
483
+ * renders as an organization (`/c/`).
484
+ */
485
+ org?: OrgFloorVerdict;
456
486
  displayName?: string;
457
487
  /**
458
488
  * Given (first) name from `id.sifa.profile.self.givenName`. Schema.org
@@ -583,4 +613,4 @@ declare function hasAdultContent(item: {
583
613
  labels?: ActivityLabel[];
584
614
  }): boolean;
585
615
 
586
- export { type AdultContentLabel as A, type PublicationContributor as B, type CoSpeaker as C, type SkillRef as D, type ExternalAccount as E, type FeedItem as F, hasAdultContent as G, type LocationValue as L, type ProfileSkill as P, type SkillSuggestion as S, type TrustStat as T, type VerifiedAccount as V, type ActivityLabel as a, type ProfilePresentationDelivery as b, type PdsProviderInfo as c, type Profile as d, type ProfilePosition as e, type ProfileCertification as f, type ProfileEducation as g, type ProfileHonor as h, type ProfileLanguage as i, type ProfileProject as j, type ProfilePublication as k, type ProfileInvolvement as l, ADULT_CONTENT_LABELS as m, type ActiveApp as n, type Endorsement as o, type EndorsementData as p, type ExternalAccountKeytraceClaim as q, type LanguageProficiency as r, type PresentationLinkView as s, type ProfileCourse as t, type ProfileIndustry as u, type ProfileInvolvementLink as v, type ProfileLocation as w, type ProfileOverrideSource as x, type ProfilePresentation as y, type ProfileVolunteering as z };
616
+ export { type AdultContentLabel as A, type ProfileVolunteering as B, type CoSpeaker as C, type PublicationContributor as D, type ExternalAccount as E, type FeedItem as F, type SkillRef as G, hasAdultContent as H, type LocationValue as L, type OrgFloorVerdict as O, type ProfileSkill as P, type SkillSuggestion as S, type TrustStat as T, type VerifiedAccount as V, type ActivityLabel as a, type ProfilePresentationDelivery as b, type PdsProviderInfo as c, type Profile as d, type ProfilePosition as e, type ProfileCertification as f, type ProfileEducation as g, type ProfileHonor as h, type ProfileLanguage as i, type ProfileProject as j, type ProfilePublication as k, type ProfileInvolvement as l, ADULT_CONTENT_LABELS as m, type ActiveApp as n, type Endorsement as o, type EndorsementData as p, type ExternalAccountKeytraceClaim as q, type LanguageProficiency as r, type OrgProfileView as s, type PresentationLinkView as t, type ProfileCourse as u, type ProfileIndustry as v, type ProfileInvolvementLink as w, type ProfileLocation as x, type ProfileOverrideSource as y, type ProfilePresentation as z };
@@ -450,9 +450,39 @@ interface ProfileOverrideSource {
450
450
  displayName?: string;
451
451
  avatarUrl?: string;
452
452
  }
453
+ /**
454
+ * The org-profile fields exposed on the profile resolve when the org rendering
455
+ * floor is met. Narrow on purpose: `contact` is never included (not rendered
456
+ * publicly); record URI/CID are internal. Mirrors sifa-api's `OrgProfileView`.
457
+ */
458
+ interface OrgProfileView {
459
+ name: string;
460
+ description: string | null;
461
+ website: string | null;
462
+ /** Blob CID (or resolved URL) of the org logo, when present. */
463
+ logoBlob: string | null;
464
+ entityRefs: string[] | null;
465
+ }
466
+ /**
467
+ * Server-computed org rendering-floor verdict (#160), carried on the profile
468
+ * resolve so clients need no extra round-trip. `isOrg` is true when the account
469
+ * has an `id.sifa.org.profile` record AND its handle is a custom registrable
470
+ * domain (the authoritative, PSL-backed check lives server-side). Read it via
471
+ * the `useOrgProfile` hook.
472
+ */
473
+ interface OrgFloorVerdict {
474
+ isOrg: boolean;
475
+ orgProfile?: OrgProfileView;
476
+ }
453
477
  interface Profile {
454
478
  did: string;
455
479
  handle: string;
480
+ /**
481
+ * Org rendering-floor verdict (#160). Present on the profile resolve; absent
482
+ * on payloads that predate the field. When `org.isOrg` is true the account
483
+ * renders as an organization (`/c/`).
484
+ */
485
+ org?: OrgFloorVerdict;
456
486
  displayName?: string;
457
487
  /**
458
488
  * Given (first) name from `id.sifa.profile.self.givenName`. Schema.org
@@ -583,4 +613,4 @@ declare function hasAdultContent(item: {
583
613
  labels?: ActivityLabel[];
584
614
  }): boolean;
585
615
 
586
- export { type AdultContentLabel as A, type PublicationContributor as B, type CoSpeaker as C, type SkillRef as D, type ExternalAccount as E, type FeedItem as F, hasAdultContent as G, type LocationValue as L, type ProfileSkill as P, type SkillSuggestion as S, type TrustStat as T, type VerifiedAccount as V, type ActivityLabel as a, type ProfilePresentationDelivery as b, type PdsProviderInfo as c, type Profile as d, type ProfilePosition as e, type ProfileCertification as f, type ProfileEducation as g, type ProfileHonor as h, type ProfileLanguage as i, type ProfileProject as j, type ProfilePublication as k, type ProfileInvolvement as l, ADULT_CONTENT_LABELS as m, type ActiveApp as n, type Endorsement as o, type EndorsementData as p, type ExternalAccountKeytraceClaim as q, type LanguageProficiency as r, type PresentationLinkView as s, type ProfileCourse as t, type ProfileIndustry as u, type ProfileInvolvementLink as v, type ProfileLocation as w, type ProfileOverrideSource as x, type ProfilePresentation as y, type ProfileVolunteering as z };
616
+ export { type AdultContentLabel as A, type ProfileVolunteering as B, type CoSpeaker as C, type PublicationContributor as D, type ExternalAccount as E, type FeedItem as F, type SkillRef as G, hasAdultContent as H, type LocationValue as L, type OrgFloorVerdict as O, type ProfileSkill as P, type SkillSuggestion as S, type TrustStat as T, type VerifiedAccount as V, type ActivityLabel as a, type ProfilePresentationDelivery as b, type PdsProviderInfo as c, type Profile as d, type ProfilePosition as e, type ProfileCertification as f, type ProfileEducation as g, type ProfileHonor as h, type ProfileLanguage as i, type ProfileProject as j, type ProfilePublication as k, type ProfileInvolvement as l, ADULT_CONTENT_LABELS as m, type ActiveApp as n, type Endorsement as o, type EndorsementData as p, type ExternalAccountKeytraceClaim as q, type LanguageProficiency as r, type OrgProfileView as s, type PresentationLinkView as t, type ProfileCourse as u, type ProfileIndustry as v, type ProfileInvolvementLink as w, type ProfileLocation as x, type ProfileOverrideSource as y, type ProfilePresentation as z };
@@ -1,5 +1,5 @@
1
- import { S as SifaApiConfig, A as ApiFetchOptions, j as CreateResult, W as WriteResult } from './keys-5oyp950_.js';
2
- import { d as Profile, e as ProfilePosition, D as SkillRef } from './adult-content-DDGP8W1e.js';
1
+ import { S as SifaApiConfig, A as ApiFetchOptions, j as CreateResult, W as WriteResult } from './org-BZcAnLab.js';
2
+ import { d as Profile, e as ProfilePosition, G as SkillRef } from './adult-content-n2uy3rT3.js';
3
3
  import { m as EntitySearchResponse, E as EntitySearchResult, g as EntityMintDomainResponse, k as EntityResolveDomainResponse, p as EntitySelectRequest, r as EntitySelectResponse } from './feed-D2ZV8Eaj.js';
4
4
 
5
5
  /**
@@ -1,10 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { S as SifaApiConfig, s as sifaQueryKeys, W as WriteResult, a5 as RefreshPdsResult, aj as UpdateProfileOverrideInput, ak as UpdateProfileSelfInput, al as UploadAvatarResult, j as CreateResult, U as ProfileLocationInput, k as ExternalAccountInput, i as CreateExternalAccountResult, am as VerifyExternalAccountResult, E as EndorsementInput, a4 as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, P as HideProfileItemInput, ag as StatsResponse, g as AppRegistryEntry, M as HiddenApp, w as FilterOptions, ab as SearchFilters, ac as SearchResponse, af as SkillSearchResult, l as FeaturedProfile, ae as SimilarProfile, v as FetchSuggestionsOptions, ai as SuggestionsResponse, G as FollowUserResult, o as FetchFollowListOptions, x as FollowListPage, H as FollowingResponse, q as FetchFollowingFeedOptions, p as FetchFollowProfilePageOptions, z as FollowProfilePageResponse, F as FeatureAllowlistResponse, m as FetchActivityFeedOptions, b as ActivityFeedResponse, e as ActivityTeaserResponse, L as HeatmapResponse, a as AccountCheckResult, a3 as ReactionStatus, a2 as ReactionResult, a1 as ReactionError, aa as RoadmapVotesResponse, C as CastRoadmapVoteResult, D as DeleteAccountResult } from './keys-Bn36IA8Q.cjs';
3
+ import { S as SifaApiConfig, s as sifaQueryKeys, W as WriteResult, ad as RefreshPdsResult, ar as UpdateProfileOverrideInput, as as UpdateProfileSelfInput, at as UploadAvatarResult, j as CreateResult, a1 as ProfileLocationInput, k as ExternalAccountInput, i as CreateExternalAccountResult, au as VerifyExternalAccountResult, E as EndorsementInput, ac as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, P as HideProfileItemInput, ao as StatsResponse, g as AppRegistryEntry, M as HiddenApp, w as FilterOptions, aj as SearchFilters, ak as SearchResponse, an as SkillSearchResult, l as FeaturedProfile, am as SimilarProfile, v as FetchSuggestionsOptions, aq as SuggestionsResponse, G as FollowUserResult, o as FetchFollowListOptions, x as FollowListPage, H as FollowingResponse, q as FetchFollowingFeedOptions, p as FetchFollowProfilePageOptions, z as FollowProfilePageResponse, F as FeatureAllowlistResponse, m as FetchActivityFeedOptions, b as ActivityFeedResponse, e as ActivityTeaserResponse, L as HeatmapResponse, a as AccountCheckResult, ab as ReactionStatus, aa as ReactionResult, a9 as ReactionError, ai as RoadmapVotesResponse, C as CastRoadmapVoteResult, D as DeleteAccountResult, T as OrgClaimResult, _ as OrgProfileUpdateResult, U as OrgDomainChallengeResult, V as OrgDomainVerifyResult, X as OrgNotificationEmailAddResult, Y as OrgNotificationEmailRemoveResult } from './org-lIB6pSYc.cjs';
4
4
  import * as _tanstack_react_query from '@tanstack/react-query';
5
5
  import { UseQueryOptions, UseMutationOptions, UseInfiniteQueryOptions, InfiniteData } from '@tanstack/react-query';
6
- import { d as Profile, e as ProfilePosition, D as SkillRef, E as ExternalAccount, S as SkillSuggestion } from './adult-content-DDGP8W1e.cjs';
6
+ import { d as Profile, e as ProfilePosition, G as SkillRef, E as ExternalAccount, S as SkillSuggestion, O as OrgFloorVerdict } from './adult-content-n2uy3rT3.cjs';
7
7
  import { m as EntitySearchResponse, E as EntitySearchResult, g as EntityMintDomainResponse, k as EntityResolveDomainResponse, r as EntitySelectResponse, p as EntitySelectRequest, F as FollowFeedPage, c as FeatureFlag } from './feed-D2ZV8Eaj.cjs';
8
+ import { O as OrgClaimRequestInput, h as OrgProfileUpdateRequestInput, b as OrgDomainChallengeRequestInput, d as OrgDomainVerifyRequestInput, f as OrgNotificationEmailRequestInput } from './org-settings-CmaSX5ZI.cjs';
8
9
 
9
10
  interface SifaProviderProps {
10
11
  config: SifaApiConfig;
@@ -608,4 +609,86 @@ declare function useResetProfile(options?: Omit<UseMutationOptions<WriteResult,
608
609
  */
609
610
  declare function useDeleteAccount(options?: Omit<UseMutationOptions<DeleteAccountResult, Error, boolean>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<DeleteAccountResult, Error, boolean, unknown>;
610
611
 
611
- export { useFeaturedProfile as $, type AddFeatureAllowlistVariables as A, useCreatePosition as B, type CreateReactionVariables as C, type DeleteReactionVariables as D, useCreateProfileLocation as E, type FollowVariables as F, useCreateReaction as G, useCreateRecord as H, useCreateSkill as I, useDebouncedValue as J, useDeleteAccount as K, useDeleteAvatarOverride as L, useDeleteEducation as M, useDeleteExternalAccount as N, useDeletePosition as O, type PositionSkillLinkVariables as P, useDeleteProfileLocation as Q, type RemoveFeatureAllowlistVariables as R, SifaProvider as S, useDeleteReaction as T, type UnfollowVariables as U, useDeleteRecord as V, useDeleteSkill as W, useEndorsementCount as X, useEntitySearch as Y, useExternalAccounts as Z, useFeatureAllowlist as _, type CreateRecordVariables as a, useFollow as a0, useFollowers as a1, useFollowing as a2, useFollowingFeed as a3, useFollowingList as a4, useHeatmapData as a5, useHiddenApps as a6, useHideKeytraceClaim as a7, useHideOrcidPublication as a8, useHideProfileItem as a9, useStats as aA, useSuggestionCount as aB, useSuggestions as aC, useUnfollow as aD, useUnhideKeytraceClaim as aE, useUnhideOrcidPublication as aF, useUnhideProfileItem as aG, useUnhideSifaPublication as aH, useUnhideStandardPublication as aI, useUnlinkSkillFromPosition as aJ, useUnrevealMarqueDomain as aK, useUnsetExternalAccountPrimary as aL, useUnsetPositionPrimary as aM, useUpdateEducation as aN, useUpdateExternalAccount as aO, useUpdatePosition as aP, useUpdateProfileLocation as aQ, useUpdateProfileOverride as aR, useUpdateProfileSelf as aS, useUpdateRecord as aT, useUpdateSkill as aU, useUploadAvatar as aV, useVerifyExternalAccount as aW, useHideSifaPublication as aa, useHideStandardPublication as ab, useImportSearchEntities as ac, useLinkSkillToPosition as ad, useMintEntityDomain as ae, useMutuals as af, useMyRoadmapVotes as ag, useNetworkStreamCount as ah, useProfile as ai, useReactionStatus as aj, useRefreshOrcidPublications as ak, useRefreshPds as al, useRemoveFeatureAllowlist as am, useResetProfile as an, useResolveEntityDomain as ao, useRetractRoadmapVote as ap, useRevealMarqueDomain as aq, useRoadmapVotes as ar, useSearchFilters as as, useSearchProfiles as at, useSelectEntity as au, useSetExternalAccountPrimary as av, useSetPositionPrimary as aw, useSifaConfig as ax, useSimilarProfiles as ay, useSkillSuggestions as az, type DeleteRecordVariables as b, type SifaProviderProps as c, type UpdateEducationVariables as d, type UpdateExternalAccountVariables as e, type UpdatePositionVariables as f, type UpdateProfileLocationVariables as g, type UpdateRecordVariables as h, type UpdateSkillVariables as i, type UseEntitySearchOptions as j, useActivityTeaser as k, useAddFeatureAllowlist as l, useAppAccountCheck as m, useAppsRegistry as n, useAtFundLink as o, useBlueskySuggestions as p, useBulkHideProfileItems as q, useBulkHideStandardPublications as r, useBulkUnhideProfileItems as s, useBulkUnhideStandardPublications as t, useActivityFeed as u, useCanonicalSkillSearch as v, useCastRoadmapVote as w, useCreateEducation as x, useCreateEndorsement as y, useCreateExternalAccount as z };
612
+ /**
613
+ * Read the server-computed org rendering-floor verdict for a handle or DID.
614
+ *
615
+ * The verdict rides the profile resolve (`GET /api/profile/:handleOrDid`), so
616
+ * this hook reuses the `profile.byHandle` query key -- it shares the cache with
617
+ * {@link useProfile} and never triggers a second round-trip. Returns
618
+ * `OrgFloorVerdict | null` (`null` when the profile is missing or predates the
619
+ * `org` field).
620
+ */
621
+ declare function useOrgProfile(handleOrDid: string | undefined | null, options?: Omit<UseQueryOptions<Profile | null, Error, OrgFloorVerdict | null, ReturnType<typeof sifaQueryKeys.profile.byHandle>>, 'queryKey' | 'queryFn' | 'select'>): _tanstack_react_query.UseQueryResult<NoInfer<OrgFloorVerdict | null>, Error>;
622
+
623
+ type OrgClaimMutationResult = WriteResult & Partial<OrgClaimResult>;
624
+ /**
625
+ * Finalize an org profile claim (`POST /api/org/claim`). Pass the org's
626
+ * handle/DID so the profile cache (which carries the org floor verdict) is
627
+ * invalidated on success; pass `null` to skip invalidation.
628
+ */
629
+ declare function useOrgClaim(handleOrDid: string | null, options?: Omit<UseMutationOptions<OrgClaimMutationResult, Error, OrgClaimRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgClaimResult>, Error, {
630
+ name: string;
631
+ entityRefs: string[];
632
+ authorityAck: true;
633
+ description?: string | undefined;
634
+ website?: string | undefined;
635
+ contact?: string | undefined;
636
+ }, unknown>;
637
+
638
+ type OrgProfileUpdateMutationResult = WriteResult & Partial<OrgProfileUpdateResult>;
639
+ /**
640
+ * Edit the org record (`PUT /api/org/profile`). Pass the org's handle/DID to
641
+ * invalidate the profile cache (org floor verdict + fields) on success.
642
+ */
643
+ declare function useUpdateOrgProfile(handleOrDid: string | null, options?: Omit<UseMutationOptions<OrgProfileUpdateMutationResult, Error, OrgProfileUpdateRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgProfileUpdateResult>, Error, {
644
+ name: string;
645
+ entityRefs: string[];
646
+ description?: string | undefined;
647
+ website?: string | undefined;
648
+ contact?: string | undefined;
649
+ logo?: {
650
+ $type: "blob";
651
+ ref: {
652
+ $link: string;
653
+ };
654
+ mimeType: string;
655
+ size: number;
656
+ } | undefined;
657
+ }, unknown>;
658
+
659
+ type OrgDomainChallengeMutationResult = WriteResult & Partial<OrgDomainChallengeResult>;
660
+ type OrgDomainVerifyMutationResult = WriteResult & Partial<OrgDomainVerifyResult>;
661
+ /**
662
+ * Issue a one-time DNS TXT domain challenge (`POST /api/org/domains/challenge`).
663
+ * The result carries the TXT record name + value for the org to publish.
664
+ */
665
+ declare function useOrgDomainChallenge(options?: Omit<UseMutationOptions<OrgDomainChallengeMutationResult, Error, OrgDomainChallengeRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgDomainChallengeResult>, Error, {
666
+ domain: string;
667
+ }, unknown>;
668
+ /**
669
+ * Verify a DNS TXT domain challenge (`POST /api/org/domains/verify`). On success
670
+ * `status` is `verified` or `pending`; other outcomes surface as
671
+ * `{ success: false }`.
672
+ */
673
+ declare function useOrgDomainVerify(options?: Omit<UseMutationOptions<OrgDomainVerifyMutationResult, Error, OrgDomainVerifyRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgDomainVerifyResult>, Error, {
674
+ token: string;
675
+ }, unknown>;
676
+
677
+ type OrgNotificationEmailAddMutationResult = WriteResult & Partial<OrgNotificationEmailAddResult>;
678
+ type OrgNotificationEmailRemoveMutationResult = WriteResult & Partial<OrgNotificationEmailRemoveResult>;
679
+ /**
680
+ * Add an org notification email (`POST /api/org/notification-emails`). The
681
+ * address must use a domain the org controls (checked server-side). Sending is
682
+ * gated behind the dormant email pipeline until activated.
683
+ */
684
+ declare function useAddOrgNotificationEmail(options?: Omit<UseMutationOptions<OrgNotificationEmailAddMutationResult, Error, OrgNotificationEmailRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgNotificationEmailAddResult>, Error, {
685
+ email: string;
686
+ }, unknown>;
687
+ /**
688
+ * Remove an org notification email (`DELETE /api/org/notification-emails`).
689
+ */
690
+ declare function useRemoveOrgNotificationEmail(options?: Omit<UseMutationOptions<OrgNotificationEmailRemoveMutationResult, Error, OrgNotificationEmailRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgNotificationEmailRemoveResult>, Error, {
691
+ email: string;
692
+ }, unknown>;
693
+
694
+ export { useFeatureAllowlist as $, type AddFeatureAllowlistVariables as A, useCreateExternalAccount as B, type CreateReactionVariables as C, type DeleteReactionVariables as D, useCreatePosition as E, type FollowVariables as F, useCreateProfileLocation as G, useCreateReaction as H, useCreateRecord as I, useCreateSkill as J, useDebouncedValue as K, useDeleteAccount as L, useDeleteAvatarOverride as M, useDeleteEducation as N, useDeleteExternalAccount as O, type PositionSkillLinkVariables as P, useDeletePosition as Q, type RemoveFeatureAllowlistVariables as R, SifaProvider as S, useDeleteProfileLocation as T, type UnfollowVariables as U, useDeleteReaction as V, useDeleteRecord as W, useDeleteSkill as X, useEndorsementCount as Y, useEntitySearch as Z, useExternalAccounts as _, type CreateRecordVariables as a, useUpdateSkill as a$, useFeaturedProfile as a0, useFollow as a1, useFollowers as a2, useFollowing as a3, useFollowingFeed as a4, useFollowingList as a5, useHeatmapData as a6, useHiddenApps as a7, useHideKeytraceClaim as a8, useHideOrcidPublication as a9, useSelectEntity as aA, useSetExternalAccountPrimary as aB, useSetPositionPrimary as aC, useSifaConfig as aD, useSimilarProfiles as aE, useSkillSuggestions as aF, useStats as aG, useSuggestionCount as aH, useSuggestions as aI, useUnfollow as aJ, useUnhideKeytraceClaim as aK, useUnhideOrcidPublication as aL, useUnhideProfileItem as aM, useUnhideSifaPublication as aN, useUnhideStandardPublication as aO, useUnlinkSkillFromPosition as aP, useUnrevealMarqueDomain as aQ, useUnsetExternalAccountPrimary as aR, useUnsetPositionPrimary as aS, useUpdateEducation as aT, useUpdateExternalAccount as aU, useUpdateOrgProfile as aV, useUpdatePosition as aW, useUpdateProfileLocation as aX, useUpdateProfileOverride as aY, useUpdateProfileSelf as aZ, useUpdateRecord as a_, useHideProfileItem as aa, useHideSifaPublication as ab, useHideStandardPublication as ac, useImportSearchEntities as ad, useLinkSkillToPosition as ae, useMintEntityDomain as af, useMutuals as ag, useMyRoadmapVotes as ah, useNetworkStreamCount as ai, useOrgClaim as aj, useOrgDomainChallenge as ak, useOrgDomainVerify as al, useOrgProfile as am, useProfile as an, useReactionStatus as ao, useRefreshOrcidPublications as ap, useRefreshPds as aq, useRemoveFeatureAllowlist as ar, useRemoveOrgNotificationEmail as as, useResetProfile as at, useResolveEntityDomain as au, useRetractRoadmapVote as av, useRevealMarqueDomain as aw, useRoadmapVotes as ax, useSearchFilters as ay, useSearchProfiles as az, type DeleteRecordVariables as b, useUploadAvatar as b0, useVerifyExternalAccount as b1, type SifaProviderProps as c, type UpdateEducationVariables as d, type UpdateExternalAccountVariables as e, type UpdatePositionVariables as f, type UpdateProfileLocationVariables as g, type UpdateRecordVariables as h, type UpdateSkillVariables as i, type UseEntitySearchOptions as j, useActivityTeaser as k, useAddFeatureAllowlist as l, useAddOrgNotificationEmail as m, useAppAccountCheck as n, useAppsRegistry as o, useAtFundLink as p, useBlueskySuggestions as q, useBulkHideProfileItems as r, useBulkHideStandardPublications as s, useBulkUnhideProfileItems as t, useActivityFeed as u, useBulkUnhideStandardPublications as v, useCanonicalSkillSearch as w, useCastRoadmapVote as x, useCreateEducation as y, useCreateEndorsement as z };
@@ -1,5 +1,5 @@
1
- import { S as SifaApiConfig, A as ApiFetchOptions, j as CreateResult, W as WriteResult } from './keys-Bn36IA8Q.cjs';
2
- import { d as Profile, e as ProfilePosition, D as SkillRef } from './adult-content-DDGP8W1e.cjs';
1
+ import { S as SifaApiConfig, A as ApiFetchOptions, j as CreateResult, W as WriteResult } from './org-lIB6pSYc.cjs';
2
+ import { d as Profile, e as ProfilePosition, G as SkillRef } from './adult-content-n2uy3rT3.cjs';
3
3
  import { m as EntitySearchResponse, E as EntitySearchResult, g as EntityMintDomainResponse, k as EntityResolveDomainResponse, p as EntitySelectRequest, r as EntitySelectResponse } from './feed-D2ZV8Eaj.cjs';
4
4
 
5
5
  /**
@@ -1,10 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { S as SifaApiConfig, s as sifaQueryKeys, W as WriteResult, a5 as RefreshPdsResult, aj as UpdateProfileOverrideInput, ak as UpdateProfileSelfInput, al as UploadAvatarResult, j as CreateResult, U as ProfileLocationInput, k as ExternalAccountInput, i as CreateExternalAccountResult, am as VerifyExternalAccountResult, E as EndorsementInput, a4 as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, P as HideProfileItemInput, ag as StatsResponse, g as AppRegistryEntry, M as HiddenApp, w as FilterOptions, ab as SearchFilters, ac as SearchResponse, af as SkillSearchResult, l as FeaturedProfile, ae as SimilarProfile, v as FetchSuggestionsOptions, ai as SuggestionsResponse, G as FollowUserResult, o as FetchFollowListOptions, x as FollowListPage, H as FollowingResponse, q as FetchFollowingFeedOptions, p as FetchFollowProfilePageOptions, z as FollowProfilePageResponse, F as FeatureAllowlistResponse, m as FetchActivityFeedOptions, b as ActivityFeedResponse, e as ActivityTeaserResponse, L as HeatmapResponse, a as AccountCheckResult, a3 as ReactionStatus, a2 as ReactionResult, a1 as ReactionError, aa as RoadmapVotesResponse, C as CastRoadmapVoteResult, D as DeleteAccountResult } from './keys-5oyp950_.js';
3
+ import { S as SifaApiConfig, s as sifaQueryKeys, W as WriteResult, ad as RefreshPdsResult, ar as UpdateProfileOverrideInput, as as UpdateProfileSelfInput, at as UploadAvatarResult, j as CreateResult, a1 as ProfileLocationInput, k as ExternalAccountInput, i as CreateExternalAccountResult, au as VerifyExternalAccountResult, E as EndorsementInput, ac as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, P as HideProfileItemInput, ao as StatsResponse, g as AppRegistryEntry, M as HiddenApp, w as FilterOptions, aj as SearchFilters, ak as SearchResponse, an as SkillSearchResult, l as FeaturedProfile, am as SimilarProfile, v as FetchSuggestionsOptions, aq as SuggestionsResponse, G as FollowUserResult, o as FetchFollowListOptions, x as FollowListPage, H as FollowingResponse, q as FetchFollowingFeedOptions, p as FetchFollowProfilePageOptions, z as FollowProfilePageResponse, F as FeatureAllowlistResponse, m as FetchActivityFeedOptions, b as ActivityFeedResponse, e as ActivityTeaserResponse, L as HeatmapResponse, a as AccountCheckResult, ab as ReactionStatus, aa as ReactionResult, a9 as ReactionError, ai as RoadmapVotesResponse, C as CastRoadmapVoteResult, D as DeleteAccountResult, T as OrgClaimResult, _ as OrgProfileUpdateResult, U as OrgDomainChallengeResult, V as OrgDomainVerifyResult, X as OrgNotificationEmailAddResult, Y as OrgNotificationEmailRemoveResult } from './org-BZcAnLab.js';
4
4
  import * as _tanstack_react_query from '@tanstack/react-query';
5
5
  import { UseQueryOptions, UseMutationOptions, UseInfiniteQueryOptions, InfiniteData } from '@tanstack/react-query';
6
- import { d as Profile, e as ProfilePosition, D as SkillRef, E as ExternalAccount, S as SkillSuggestion } from './adult-content-DDGP8W1e.js';
6
+ import { d as Profile, e as ProfilePosition, G as SkillRef, E as ExternalAccount, S as SkillSuggestion, O as OrgFloorVerdict } from './adult-content-n2uy3rT3.js';
7
7
  import { m as EntitySearchResponse, E as EntitySearchResult, g as EntityMintDomainResponse, k as EntityResolveDomainResponse, r as EntitySelectResponse, p as EntitySelectRequest, F as FollowFeedPage, c as FeatureFlag } from './feed-D2ZV8Eaj.js';
8
+ import { O as OrgClaimRequestInput, h as OrgProfileUpdateRequestInput, b as OrgDomainChallengeRequestInput, d as OrgDomainVerifyRequestInput, f as OrgNotificationEmailRequestInput } from './org-settings-CmaSX5ZI.js';
8
9
 
9
10
  interface SifaProviderProps {
10
11
  config: SifaApiConfig;
@@ -608,4 +609,86 @@ declare function useResetProfile(options?: Omit<UseMutationOptions<WriteResult,
608
609
  */
609
610
  declare function useDeleteAccount(options?: Omit<UseMutationOptions<DeleteAccountResult, Error, boolean>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<DeleteAccountResult, Error, boolean, unknown>;
610
611
 
611
- export { useFeaturedProfile as $, type AddFeatureAllowlistVariables as A, useCreatePosition as B, type CreateReactionVariables as C, type DeleteReactionVariables as D, useCreateProfileLocation as E, type FollowVariables as F, useCreateReaction as G, useCreateRecord as H, useCreateSkill as I, useDebouncedValue as J, useDeleteAccount as K, useDeleteAvatarOverride as L, useDeleteEducation as M, useDeleteExternalAccount as N, useDeletePosition as O, type PositionSkillLinkVariables as P, useDeleteProfileLocation as Q, type RemoveFeatureAllowlistVariables as R, SifaProvider as S, useDeleteReaction as T, type UnfollowVariables as U, useDeleteRecord as V, useDeleteSkill as W, useEndorsementCount as X, useEntitySearch as Y, useExternalAccounts as Z, useFeatureAllowlist as _, type CreateRecordVariables as a, useFollow as a0, useFollowers as a1, useFollowing as a2, useFollowingFeed as a3, useFollowingList as a4, useHeatmapData as a5, useHiddenApps as a6, useHideKeytraceClaim as a7, useHideOrcidPublication as a8, useHideProfileItem as a9, useStats as aA, useSuggestionCount as aB, useSuggestions as aC, useUnfollow as aD, useUnhideKeytraceClaim as aE, useUnhideOrcidPublication as aF, useUnhideProfileItem as aG, useUnhideSifaPublication as aH, useUnhideStandardPublication as aI, useUnlinkSkillFromPosition as aJ, useUnrevealMarqueDomain as aK, useUnsetExternalAccountPrimary as aL, useUnsetPositionPrimary as aM, useUpdateEducation as aN, useUpdateExternalAccount as aO, useUpdatePosition as aP, useUpdateProfileLocation as aQ, useUpdateProfileOverride as aR, useUpdateProfileSelf as aS, useUpdateRecord as aT, useUpdateSkill as aU, useUploadAvatar as aV, useVerifyExternalAccount as aW, useHideSifaPublication as aa, useHideStandardPublication as ab, useImportSearchEntities as ac, useLinkSkillToPosition as ad, useMintEntityDomain as ae, useMutuals as af, useMyRoadmapVotes as ag, useNetworkStreamCount as ah, useProfile as ai, useReactionStatus as aj, useRefreshOrcidPublications as ak, useRefreshPds as al, useRemoveFeatureAllowlist as am, useResetProfile as an, useResolveEntityDomain as ao, useRetractRoadmapVote as ap, useRevealMarqueDomain as aq, useRoadmapVotes as ar, useSearchFilters as as, useSearchProfiles as at, useSelectEntity as au, useSetExternalAccountPrimary as av, useSetPositionPrimary as aw, useSifaConfig as ax, useSimilarProfiles as ay, useSkillSuggestions as az, type DeleteRecordVariables as b, type SifaProviderProps as c, type UpdateEducationVariables as d, type UpdateExternalAccountVariables as e, type UpdatePositionVariables as f, type UpdateProfileLocationVariables as g, type UpdateRecordVariables as h, type UpdateSkillVariables as i, type UseEntitySearchOptions as j, useActivityTeaser as k, useAddFeatureAllowlist as l, useAppAccountCheck as m, useAppsRegistry as n, useAtFundLink as o, useBlueskySuggestions as p, useBulkHideProfileItems as q, useBulkHideStandardPublications as r, useBulkUnhideProfileItems as s, useBulkUnhideStandardPublications as t, useActivityFeed as u, useCanonicalSkillSearch as v, useCastRoadmapVote as w, useCreateEducation as x, useCreateEndorsement as y, useCreateExternalAccount as z };
612
+ /**
613
+ * Read the server-computed org rendering-floor verdict for a handle or DID.
614
+ *
615
+ * The verdict rides the profile resolve (`GET /api/profile/:handleOrDid`), so
616
+ * this hook reuses the `profile.byHandle` query key -- it shares the cache with
617
+ * {@link useProfile} and never triggers a second round-trip. Returns
618
+ * `OrgFloorVerdict | null` (`null` when the profile is missing or predates the
619
+ * `org` field).
620
+ */
621
+ declare function useOrgProfile(handleOrDid: string | undefined | null, options?: Omit<UseQueryOptions<Profile | null, Error, OrgFloorVerdict | null, ReturnType<typeof sifaQueryKeys.profile.byHandle>>, 'queryKey' | 'queryFn' | 'select'>): _tanstack_react_query.UseQueryResult<NoInfer<OrgFloorVerdict | null>, Error>;
622
+
623
+ type OrgClaimMutationResult = WriteResult & Partial<OrgClaimResult>;
624
+ /**
625
+ * Finalize an org profile claim (`POST /api/org/claim`). Pass the org's
626
+ * handle/DID so the profile cache (which carries the org floor verdict) is
627
+ * invalidated on success; pass `null` to skip invalidation.
628
+ */
629
+ declare function useOrgClaim(handleOrDid: string | null, options?: Omit<UseMutationOptions<OrgClaimMutationResult, Error, OrgClaimRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgClaimResult>, Error, {
630
+ name: string;
631
+ entityRefs: string[];
632
+ authorityAck: true;
633
+ description?: string | undefined;
634
+ website?: string | undefined;
635
+ contact?: string | undefined;
636
+ }, unknown>;
637
+
638
+ type OrgProfileUpdateMutationResult = WriteResult & Partial<OrgProfileUpdateResult>;
639
+ /**
640
+ * Edit the org record (`PUT /api/org/profile`). Pass the org's handle/DID to
641
+ * invalidate the profile cache (org floor verdict + fields) on success.
642
+ */
643
+ declare function useUpdateOrgProfile(handleOrDid: string | null, options?: Omit<UseMutationOptions<OrgProfileUpdateMutationResult, Error, OrgProfileUpdateRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgProfileUpdateResult>, Error, {
644
+ name: string;
645
+ entityRefs: string[];
646
+ description?: string | undefined;
647
+ website?: string | undefined;
648
+ contact?: string | undefined;
649
+ logo?: {
650
+ $type: "blob";
651
+ ref: {
652
+ $link: string;
653
+ };
654
+ mimeType: string;
655
+ size: number;
656
+ } | undefined;
657
+ }, unknown>;
658
+
659
+ type OrgDomainChallengeMutationResult = WriteResult & Partial<OrgDomainChallengeResult>;
660
+ type OrgDomainVerifyMutationResult = WriteResult & Partial<OrgDomainVerifyResult>;
661
+ /**
662
+ * Issue a one-time DNS TXT domain challenge (`POST /api/org/domains/challenge`).
663
+ * The result carries the TXT record name + value for the org to publish.
664
+ */
665
+ declare function useOrgDomainChallenge(options?: Omit<UseMutationOptions<OrgDomainChallengeMutationResult, Error, OrgDomainChallengeRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgDomainChallengeResult>, Error, {
666
+ domain: string;
667
+ }, unknown>;
668
+ /**
669
+ * Verify a DNS TXT domain challenge (`POST /api/org/domains/verify`). On success
670
+ * `status` is `verified` or `pending`; other outcomes surface as
671
+ * `{ success: false }`.
672
+ */
673
+ declare function useOrgDomainVerify(options?: Omit<UseMutationOptions<OrgDomainVerifyMutationResult, Error, OrgDomainVerifyRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgDomainVerifyResult>, Error, {
674
+ token: string;
675
+ }, unknown>;
676
+
677
+ type OrgNotificationEmailAddMutationResult = WriteResult & Partial<OrgNotificationEmailAddResult>;
678
+ type OrgNotificationEmailRemoveMutationResult = WriteResult & Partial<OrgNotificationEmailRemoveResult>;
679
+ /**
680
+ * Add an org notification email (`POST /api/org/notification-emails`). The
681
+ * address must use a domain the org controls (checked server-side). Sending is
682
+ * gated behind the dormant email pipeline until activated.
683
+ */
684
+ declare function useAddOrgNotificationEmail(options?: Omit<UseMutationOptions<OrgNotificationEmailAddMutationResult, Error, OrgNotificationEmailRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgNotificationEmailAddResult>, Error, {
685
+ email: string;
686
+ }, unknown>;
687
+ /**
688
+ * Remove an org notification email (`DELETE /api/org/notification-emails`).
689
+ */
690
+ declare function useRemoveOrgNotificationEmail(options?: Omit<UseMutationOptions<OrgNotificationEmailRemoveMutationResult, Error, OrgNotificationEmailRequestInput>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<WriteResult & Partial<OrgNotificationEmailRemoveResult>, Error, {
691
+ email: string;
692
+ }, unknown>;
693
+
694
+ export { useFeatureAllowlist as $, type AddFeatureAllowlistVariables as A, useCreateExternalAccount as B, type CreateReactionVariables as C, type DeleteReactionVariables as D, useCreatePosition as E, type FollowVariables as F, useCreateProfileLocation as G, useCreateReaction as H, useCreateRecord as I, useCreateSkill as J, useDebouncedValue as K, useDeleteAccount as L, useDeleteAvatarOverride as M, useDeleteEducation as N, useDeleteExternalAccount as O, type PositionSkillLinkVariables as P, useDeletePosition as Q, type RemoveFeatureAllowlistVariables as R, SifaProvider as S, useDeleteProfileLocation as T, type UnfollowVariables as U, useDeleteReaction as V, useDeleteRecord as W, useDeleteSkill as X, useEndorsementCount as Y, useEntitySearch as Z, useExternalAccounts as _, type CreateRecordVariables as a, useUpdateSkill as a$, useFeaturedProfile as a0, useFollow as a1, useFollowers as a2, useFollowing as a3, useFollowingFeed as a4, useFollowingList as a5, useHeatmapData as a6, useHiddenApps as a7, useHideKeytraceClaim as a8, useHideOrcidPublication as a9, useSelectEntity as aA, useSetExternalAccountPrimary as aB, useSetPositionPrimary as aC, useSifaConfig as aD, useSimilarProfiles as aE, useSkillSuggestions as aF, useStats as aG, useSuggestionCount as aH, useSuggestions as aI, useUnfollow as aJ, useUnhideKeytraceClaim as aK, useUnhideOrcidPublication as aL, useUnhideProfileItem as aM, useUnhideSifaPublication as aN, useUnhideStandardPublication as aO, useUnlinkSkillFromPosition as aP, useUnrevealMarqueDomain as aQ, useUnsetExternalAccountPrimary as aR, useUnsetPositionPrimary as aS, useUpdateEducation as aT, useUpdateExternalAccount as aU, useUpdateOrgProfile as aV, useUpdatePosition as aW, useUpdateProfileLocation as aX, useUpdateProfileOverride as aY, useUpdateProfileSelf as aZ, useUpdateRecord as a_, useHideProfileItem as aa, useHideSifaPublication as ab, useHideStandardPublication as ac, useImportSearchEntities as ad, useLinkSkillToPosition as ae, useMintEntityDomain as af, useMutuals as ag, useMyRoadmapVotes as ah, useNetworkStreamCount as ai, useOrgClaim as aj, useOrgDomainChallenge as ak, useOrgDomainVerify as al, useOrgProfile as am, useProfile as an, useReactionStatus as ao, useRefreshOrcidPublications as ap, useRefreshPds as aq, useRemoveFeatureAllowlist as ar, useRemoveOrgNotificationEmail as as, useResetProfile as at, useResolveEntityDomain as au, useRetractRoadmapVote as av, useRevealMarqueDomain as aw, useRoadmapVotes as ax, useSearchFilters as ay, useSearchProfiles as az, type DeleteRecordVariables as b, useUploadAvatar as b0, useVerifyExternalAccount as b1, type SifaProviderProps as c, type UpdateEducationVariables as d, type UpdateExternalAccountVariables as e, type UpdatePositionVariables as f, type UpdateProfileLocationVariables as g, type UpdateRecordVariables as h, type UpdateSkillVariables as i, type UseEntitySearchOptions as j, useActivityTeaser as k, useAddFeatureAllowlist as l, useAddOrgNotificationEmail as m, useAppAccountCheck as n, useAppsRegistry as o, useAtFundLink as p, useBlueskySuggestions as q, useBulkHideProfileItems as r, useBulkHideStandardPublications as s, useBulkUnhideProfileItems as t, useActivityFeed as u, useBulkUnhideStandardPublications as v, useCanonicalSkillSearch as w, useCastRoadmapVote as x, useCreateEducation as y, useCreateEndorsement as z };
package/dist/index.cjs CHANGED
@@ -2788,6 +2788,47 @@ function isLinked(entityRef) {
2788
2788
  return classifyEntityRef(entityRef) !== "unlinked";
2789
2789
  }
2790
2790
 
2791
+ // src/logic/org-floor.ts
2792
+ var KNOWN_HANDLE_HOST_SUFFIXES = [
2793
+ ".bsky.social",
2794
+ ".blacksky.app",
2795
+ ".eurosky.social",
2796
+ ".northsky.social"
2797
+ ];
2798
+ function isRegistrableDomainHandle(handle) {
2799
+ const h = handle.trim().toLowerCase();
2800
+ if (!h) return false;
2801
+ if (h.startsWith("did:")) return false;
2802
+ if (!looksLikeDomain(h)) return false;
2803
+ for (const suffix of KNOWN_HANDLE_HOST_SUFFIXES) {
2804
+ if (h.endsWith(suffix)) return false;
2805
+ }
2806
+ return true;
2807
+ }
2808
+ function qualifiesAsOrg(record, handle) {
2809
+ if (record === null || record === void 0) return false;
2810
+ return isRegistrableDomainHandle(handle);
2811
+ }
2812
+
2813
+ // src/logic/company-page-indexable.ts
2814
+ var COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS = 2;
2815
+ function isNonEmptyString2(value) {
2816
+ return typeof value === "string" && value.trim().length > 0;
2817
+ }
2818
+ function isPresentNumber(value) {
2819
+ return typeof value === "number" && Number.isFinite(value);
2820
+ }
2821
+ function isCompanyPageIndexable(company) {
2822
+ if (!isNonEmptyString2(company.canonicalName)) return false;
2823
+ let present = 0;
2824
+ if (isNonEmptyString2(company.description)) present += 1;
2825
+ if (isNonEmptyString2(company.industry)) present += 1;
2826
+ if (isNonEmptyString2(company.logoUrl)) present += 1;
2827
+ if (isPresentNumber(company.employeeCount)) present += 1;
2828
+ if (isPresentNumber(company.founded) || isNonEmptyString2(company.founded)) present += 1;
2829
+ return present >= COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS;
2830
+ }
2831
+
2791
2832
  // src/profile/section-model.ts
2792
2833
  var SECTION_GROUPS = [
2793
2834
  { id: "overview", labelKey: "groupOverview" },
@@ -3061,6 +3102,31 @@ var EndorsementRecordSchema = zod.z.object({
3061
3102
  comment: zod.z.string().refine(maxGraphemes(300)).max(3e3).optional(),
3062
3103
  createdAt: datetimeSchema
3063
3104
  });
3105
+ var OrgProfileRecordSchema = zod.z.object({
3106
+ name: zod.z.string().min(1).refine(maxGraphemes(200)).max(2e3),
3107
+ description: zod.z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
3108
+ /** Blob ref for the org logo (`image/png` | `image/jpeg`). Not deeply validated client-side. */
3109
+ logo: zod.z.unknown().optional(),
3110
+ website: uriSchema.optional(),
3111
+ entityRefs: zod.z.array(uriSchema).max(20).optional(),
3112
+ /** Contact email. NOT rendered publicly; validated as email at the app layer. */
3113
+ contact: zod.z.string().optional(),
3114
+ labels: selfLabelsSchema.optional(),
3115
+ createdAt: datetimeSchema
3116
+ });
3117
+ var OrgEmploymentAttestationRecordSchema = zod.z.object({
3118
+ subject: didSchema,
3119
+ position: strongRefSchema,
3120
+ status: zod.z.enum(["current", "past"]),
3121
+ title: zod.z.string().min(1).refine(maxGraphemes(256)).max(2560),
3122
+ startedAt: partialDateSchema,
3123
+ entityRef: uriSchema.optional(),
3124
+ companyDid: didSchema.optional(),
3125
+ endedAt: partialDateSchema.optional(),
3126
+ comment: zod.z.string().refine(maxGraphemes(300)).max(3e3).optional(),
3127
+ labels: selfLabelsSchema.optional(),
3128
+ createdAt: datetimeSchema
3129
+ });
3064
3130
  var GraphFollowRecordSchema = zod.z.object({
3065
3131
  subject: didSchema,
3066
3132
  createdAt: datetimeSchema,
@@ -3366,7 +3432,7 @@ var ProfileVolunteeringRecordSchema = zod.z.object({
3366
3432
  });
3367
3433
 
3368
3434
  // src/index.ts
3369
- var SIFA_SDK_VERSION = "0.12.3";
3435
+ var SIFA_SDK_VERSION = "0.12.4";
3370
3436
 
3371
3437
  exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
3372
3438
  exports.ACTIVITY_VISIBILITY_RULES = ACTIVITY_VISIBILITY_RULES;
@@ -3386,6 +3452,7 @@ exports.CATEGORY_LABELS = CATEGORY_LABELS;
3386
3452
  exports.CATEGORY_ORDER = CATEGORY_ORDER;
3387
3453
  exports.COLLECTION_TO_APP = COLLECTION_TO_APP;
3388
3454
  exports.COMPANY_OPTIONAL_EMPLOYMENT_TYPES = COMPANY_OPTIONAL_EMPLOYMENT_TYPES;
3455
+ exports.COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS = COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS;
3389
3456
  exports.COMPLETENESS_MAX_SCORE = COMPLETENESS_MAX_SCORE;
3390
3457
  exports.CONTINENTS = CONTINENTS;
3391
3458
  exports.COUNTRIES = COUNTRIES;
@@ -3421,6 +3488,8 @@ exports.OPEN_TO_OPTIONS = OPEN_TO_OPTIONS;
3421
3488
  exports.OPEN_TO_TOKENS = OPEN_TO_TOKENS;
3422
3489
  exports.OPEN_TO_TOKEN_TO_VALUE = OPEN_TO_TOKEN_TO_VALUE;
3423
3490
  exports.OPEN_TO_VALUE_TO_TOKEN = OPEN_TO_VALUE_TO_TOKEN;
3491
+ exports.OrgEmploymentAttestationRecordSchema = OrgEmploymentAttestationRecordSchema;
3492
+ exports.OrgProfileRecordSchema = OrgProfileRecordSchema;
3424
3493
  exports.PLATFORM_LABELS = PLATFORM_LABELS;
3425
3494
  exports.PLATFORM_OPTIONS = PLATFORM_OPTIONS;
3426
3495
  exports.PRESENTATION_LINK_TYPE_LABELS = PRESENTATION_LINK_TYPE_LABELS;
@@ -3521,12 +3590,14 @@ exports.groupSkillsByCategory = groupSkillsByCategory;
3521
3590
  exports.hasAdultContent = hasAdultContent;
3522
3591
  exports.hoistPrimary = hoistPrimary;
3523
3592
  exports.isAppCategory = isAppCategory;
3593
+ exports.isCompanyPageIndexable = isCompanyPageIndexable;
3524
3594
  exports.isCompanyRequired = isCompanyRequired;
3525
3595
  exports.isKnownAppId = isKnownAppId;
3526
3596
  exports.isKnownPlatform = isKnownPlatform;
3527
3597
  exports.isKnownVerificationProvider = isKnownVerificationProvider;
3528
3598
  exports.isLinked = isLinked;
3529
3599
  exports.isPseudoEmployer = isPseudoEmployer;
3600
+ exports.isRegistrableDomainHandle = isRegistrableDomainHandle;
3530
3601
  exports.isSectionPopulated = isSectionPopulated;
3531
3602
  exports.isValidRgbColor = isValidRgbColor;
3532
3603
  exports.isVisibleActivityItem = isVisibleActivityItem;
@@ -3556,6 +3627,7 @@ exports.presentationCsvRowToRecord = presentationCsvRowToRecord;
3556
3627
  exports.presentationDeliveryCsvRowToRecord = presentationDeliveryCsvRowToRecord;
3557
3628
  exports.primaryVerification = primaryVerification;
3558
3629
  exports.profileToDimensionInputs = profileToDimensionInputs;
3630
+ exports.qualifiesAsOrg = qualifiesAsOrg;
3559
3631
  exports.relativeLuminance = relativeLuminance;
3560
3632
  exports.resolveCardHealth = resolveCardHealth;
3561
3633
  exports.resolveCardUrl = resolveCardUrl;