@singi-labs/sifa-sdk 0.19.61 → 0.19.63

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.
package/dist/index.cjs CHANGED
@@ -7197,7 +7197,7 @@ function describeSifaRecord(collection, value) {
7197
7197
  }
7198
7198
 
7199
7199
  // src/index.ts
7200
- var SIFA_SDK_VERSION = "0.19.61";
7200
+ var SIFA_SDK_VERSION = "0.19.63";
7201
7201
 
7202
7202
  exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
7203
7203
  exports.ACTIVITY_VERBS = ACTIVITY_VERBS;
package/dist/index.js CHANGED
@@ -353,7 +353,7 @@ import {
353
353
  roadmapIssueUrl
354
354
  } from "./roadmap/index.js";
355
355
  import { SIFA_REPO_GROUPS, describeSifaRecord, repoGroupForCollection } from "./repo/index.js";
356
- var SIFA_SDK_VERSION = "0.19.61";
356
+ var SIFA_SDK_VERSION = "0.19.63";
357
357
  export {
358
358
  ACTIVITY_TIERS,
359
359
  ACTIVITY_VERBS,
@@ -1,4 +1,4 @@
1
- export { A as AddFeatureAllowlistVariables, C as CreateReactionVariables, a as CreateRecordVariables, D as DeleteReactionVariables, b as DeleteRecordVariables, F as FollowVariables, P as PositionSkillLinkVariables, R as RemoveFeatureAllowlistVariables, S as SifaProvider, c as SifaProviderProps, U as UnfollowVariables, d as UpdateEducationVariables, e as UpdateExternalAccountVariables, f as UpdatePositionVariables, g as UpdateProfileLocationVariables, h as UpdateRecordVariables, i as UpdateSkillSubCategoriesVariables, j as UpdateSkillVariables, k as UseEntitySearchOptions, l as UseMyGithubPullRequestsParams, u as useAccounts, m as useActivityFeed, n as useActivityTeaser, o as useAddFeatureAllowlist, p as useAddOrgNotificationEmail, q as useAdminReviewQueues, r as useAppAccountCheck, s as useAppsRegistry, t as useAtFundLink, v as useBlueskySuggestions, w as useBulkHideProfileItems, x as useBulkHideStandardPublications, y as useBulkUnhideProfileItems, z as useBulkUnhideStandardPublications, B as useCanonicalSkillSearch, E as useCastRoadmapVote, G as useCreateConfirmation, H as useCreateEducation, I as useCreateEndorsement, J as useCreateExternalAccount, K as useCreatePosition, L as useCreateProfileLocation, M as useCreateReaction, N as useCreateRecord, O as useCreateSkill, Q as useDebouncedValue, T as useDeleteAccount, V as useDeleteAvatarOverride, W as useDeleteEducation, X as useDeleteExternalAccount, Y as useDeleteNamePronunciationAudio, Z as useDeletePosition, _ as useDeleteProfileLocation, $ as useDeleteReaction, a0 as useDeleteRecord, a1 as useDeleteRepoRecords, a2 as useDeleteSkill, a3 as useDismissConfirmation, a4 as useDismissUnlinkedPosition, a5 as useEndorsementCount, a6 as useEntitySearch, a7 as useExternalAccounts, a8 as useFeatureAllowlist, a9 as useFeaturedProfile, aa as useFollow, ab as useFollowers, ac as useFollowing, ad as useFollowingFeed, ae as useFollowingFeedVersion, af as useFollowingList, ag as useGetProfileView, ah as useGivenConfirmations, ai as useHeatmapData, aj as useHiddenActivityItems, ak as useHiddenApps, al as useHideActivityItem, am as useHideKeytraceClaim, an as useHideOrcidPublication, ao as useHideProfileItem, ap as useHideSifaPublication, aq as useHideStandardPublication, ar as useImportSearchEntities, as as useInboxCounts, at as useLinkSkillToPosition, av as useMutuals, aw as useMyGithubPullRequests, ax as useMyRoadmapVotes, ay as useNetworkStreamCount, az as useOrgClaim, aA as useOrgDomainChallenge, aB as useOrgDomainVerify, aC as useOrgProfile, aD as usePendingConfirmations, aE as useProfile, aF as useProfileCompleteness, aG as useReactionStatus, aH as useRefreshOrcidPublications, aI as useRefreshPds, aJ as useRemoveFeatureAllowlist, aK as useRemoveOrgNotificationEmail, aL as useRepoInventory, aM as useResetProfile, aO as useRetractRoadmapVote, aP as useRevealMarqueDomain, aQ as useRevokeConfirmation, aR as useRoadmapVotes, bt as useSearchCompanies, aS as useSearchFilters, aT as useSearchProfiles, aU as useSelectEntity, aV as useSetExternalAccountPrimary, aW as useSetPositionPrimary, aX as useSetSectionPrimary, aY as useSifaConfig, aZ as useSimilarProfiles, a_ as useSkillSuggestions, a$ as useStats, b0 as useSuggestionCount, b1 as useSuggestions, b2 as useUnfollow, b3 as useUnhideActivityItem, b4 as useUnhideKeytraceClaim, b5 as useUnhideOrcidPublication, b6 as useUnhideProfileItem, b7 as useUnhideSifaPublication, b8 as useUnhideStandardPublication, b9 as useUnlinkSkillFromPosition, ba as useUnlinkedPositions, bb as useUnrevealMarqueDomain, bc as useUnsetExternalAccountPrimary, bd as useUnsetPositionPrimary, be as useUnsetSectionPrimary, bf as useUpdateEducation, bg as useUpdateExternalAccount, bh as useUpdateOrgProfile, bi as useUpdatePosition, bj as useUpdateProfileLocation, bk as useUpdateProfileOverride, bl as useUpdateProfileSelf, bm as useUpdateRecord, bn as useUpdateSkill, bo as useUpdateSkillSubCategories, bp as useUploadAvatar, bq as useUploadNamePronunciationAudio, br as useVerifyExternalAccount, bs as useWipePreview } from '../../use-org-notification-emails-B8e4vgs-.cjs';
1
+ export { A as AddFeatureAllowlistVariables, C as CreateReactionVariables, a as CreateRecordVariables, D as DeleteReactionVariables, b as DeleteRecordVariables, F as FollowVariables, P as PositionSkillLinkVariables, R as RemoveFeatureAllowlistVariables, S as SifaProvider, c as SifaProviderProps, U as UnfollowVariables, d as UpdateEducationVariables, e as UpdateExternalAccountVariables, f as UpdatePositionVariables, g as UpdateProfileLocationVariables, h as UpdateRecordVariables, i as UpdateSkillSubCategoriesVariables, j as UpdateSkillVariables, k as UseEntitySearchOptions, l as UseMyGithubPullRequestsParams, u as useAccounts, m as useActivityFeed, n as useActivityTeaser, o as useAddFeatureAllowlist, p as useAddOrgNotificationEmail, q as useAdminReviewQueues, r as useAppAccountCheck, s as useAppsRegistry, t as useAtFundLink, v as useBlueskySuggestions, w as useBulkHideProfileItems, x as useBulkHideStandardPublications, y as useBulkUnhideProfileItems, z as useBulkUnhideStandardPublications, B as useCanonicalSkillSearch, E as useCastRoadmapVote, G as useCreateConfirmation, H as useCreateEducation, I as useCreateEndorsement, J as useCreateExternalAccount, K as useCreatePosition, L as useCreateProfileLocation, M as useCreateReaction, N as useCreateRecord, O as useCreateSkill, Q as useDebouncedValue, T as useDeleteAccount, V as useDeleteAvatarOverride, W as useDeleteEducation, X as useDeleteExternalAccount, Y as useDeleteNamePronunciationAudio, Z as useDeletePosition, _ as useDeleteProfileLocation, $ as useDeleteReaction, a0 as useDeleteRecord, a1 as useDeleteRepoRecords, a2 as useDeleteSkill, a3 as useDismissConfirmation, a4 as useDismissUnlinkedPosition, a5 as useEndorsementCount, a6 as useEntitySearch, a7 as useExternalAccounts, a8 as useFeatureAllowlist, a9 as useFeaturedProfile, aa as useFollow, ab as useFollowers, ac as useFollowing, ad as useFollowingFeed, ae as useFollowingFeedVersion, af as useFollowingList, ag as useGetProfileView, ah as useGivenConfirmations, ai as useHeatmapData, aj as useHiddenActivityItems, ak as useHiddenApps, al as useHideActivityItem, am as useHideKeytraceClaim, an as useHideOrcidPublication, ao as useHideProfileItem, ap as useHideSifaPublication, aq as useHideStandardPublication, ar as useImportSearchEntities, as as useInboxCounts, at as useLinkSkillToPosition, av as useMutuals, aw as useMyGithubPullRequests, ax as useMyRoadmapVotes, ay as useNetworkStreamCount, az as useOrgClaim, aA as useOrgDomainChallenge, aB as useOrgDomainVerify, aC as useOrgProfile, aD as usePendingConfirmations, aE as useProfile, aF as useProfileCompleteness, aG as useReactionStatus, aH as useRefreshOrcidPublications, aI as useRefreshPds, aJ as useRemoveFeatureAllowlist, aK as useRemoveOrgNotificationEmail, aL as useRepoInventory, aM as useResetProfile, aO as useRetractRoadmapVote, aP as useRevealMarqueDomain, aQ as useRevokeConfirmation, aR as useRoadmapVotes, bt as useSearchCompanies, aS as useSearchFilters, aT as useSearchProfiles, aU as useSelectEntity, aV as useSetExternalAccountPrimary, aW as useSetPositionPrimary, aX as useSetSectionPrimary, aY as useSifaConfig, aZ as useSimilarProfiles, a_ as useSkillSuggestions, a$ as useStats, b0 as useSuggestionCount, b1 as useSuggestions, b2 as useUnfollow, b3 as useUnhideActivityItem, b4 as useUnhideKeytraceClaim, b5 as useUnhideOrcidPublication, b6 as useUnhideProfileItem, b7 as useUnhideSifaPublication, b8 as useUnhideStandardPublication, b9 as useUnlinkSkillFromPosition, ba as useUnlinkedPositions, bb as useUnrevealMarqueDomain, bc as useUnsetExternalAccountPrimary, bd as useUnsetPositionPrimary, be as useUnsetSectionPrimary, bf as useUpdateEducation, bg as useUpdateExternalAccount, bh as useUpdateOrgProfile, bi as useUpdatePosition, bj as useUpdateProfileLocation, bk as useUpdateProfileOverride, bl as useUpdateProfileSelf, bm as useUpdateRecord, bn as useUpdateSkill, bo as useUpdateSkillSubCategories, bp as useUploadAvatar, bq as useUploadNamePronunciationAudio, br as useVerifyExternalAccount, bs as useWipePreview } from '../../use-org-notification-emails-B4INNGOe.cjs';
2
2
  export { aL as SifaQueryKey, s as sifaQueryKeys } from '../../org-B_0EMNuF.cjs';
3
3
  import * as _tanstack_react_query from '@tanstack/react-query';
4
4
  import { UseMutationOptions } from '@tanstack/react-query';
@@ -1,4 +1,4 @@
1
- export { A as AddFeatureAllowlistVariables, C as CreateReactionVariables, a as CreateRecordVariables, D as DeleteReactionVariables, b as DeleteRecordVariables, F as FollowVariables, P as PositionSkillLinkVariables, R as RemoveFeatureAllowlistVariables, S as SifaProvider, c as SifaProviderProps, U as UnfollowVariables, d as UpdateEducationVariables, e as UpdateExternalAccountVariables, f as UpdatePositionVariables, g as UpdateProfileLocationVariables, h as UpdateRecordVariables, i as UpdateSkillSubCategoriesVariables, j as UpdateSkillVariables, k as UseEntitySearchOptions, l as UseMyGithubPullRequestsParams, u as useAccounts, m as useActivityFeed, n as useActivityTeaser, o as useAddFeatureAllowlist, p as useAddOrgNotificationEmail, q as useAdminReviewQueues, r as useAppAccountCheck, s as useAppsRegistry, t as useAtFundLink, v as useBlueskySuggestions, w as useBulkHideProfileItems, x as useBulkHideStandardPublications, y as useBulkUnhideProfileItems, z as useBulkUnhideStandardPublications, B as useCanonicalSkillSearch, E as useCastRoadmapVote, G as useCreateConfirmation, H as useCreateEducation, I as useCreateEndorsement, J as useCreateExternalAccount, K as useCreatePosition, L as useCreateProfileLocation, M as useCreateReaction, N as useCreateRecord, O as useCreateSkill, Q as useDebouncedValue, T as useDeleteAccount, V as useDeleteAvatarOverride, W as useDeleteEducation, X as useDeleteExternalAccount, Y as useDeleteNamePronunciationAudio, Z as useDeletePosition, _ as useDeleteProfileLocation, $ as useDeleteReaction, a0 as useDeleteRecord, a1 as useDeleteRepoRecords, a2 as useDeleteSkill, a3 as useDismissConfirmation, a4 as useDismissUnlinkedPosition, a5 as useEndorsementCount, a6 as useEntitySearch, a7 as useExternalAccounts, a8 as useFeatureAllowlist, a9 as useFeaturedProfile, aa as useFollow, ab as useFollowers, ac as useFollowing, ad as useFollowingFeed, ae as useFollowingFeedVersion, af as useFollowingList, ag as useGetProfileView, ah as useGivenConfirmations, ai as useHeatmapData, aj as useHiddenActivityItems, ak as useHiddenApps, al as useHideActivityItem, am as useHideKeytraceClaim, an as useHideOrcidPublication, ao as useHideProfileItem, ap as useHideSifaPublication, aq as useHideStandardPublication, ar as useImportSearchEntities, as as useInboxCounts, at as useLinkSkillToPosition, av as useMutuals, aw as useMyGithubPullRequests, ax as useMyRoadmapVotes, ay as useNetworkStreamCount, az as useOrgClaim, aA as useOrgDomainChallenge, aB as useOrgDomainVerify, aC as useOrgProfile, aD as usePendingConfirmations, aE as useProfile, aF as useProfileCompleteness, aG as useReactionStatus, aH as useRefreshOrcidPublications, aI as useRefreshPds, aJ as useRemoveFeatureAllowlist, aK as useRemoveOrgNotificationEmail, aL as useRepoInventory, aM as useResetProfile, aO as useRetractRoadmapVote, aP as useRevealMarqueDomain, aQ as useRevokeConfirmation, aR as useRoadmapVotes, bt as useSearchCompanies, aS as useSearchFilters, aT as useSearchProfiles, aU as useSelectEntity, aV as useSetExternalAccountPrimary, aW as useSetPositionPrimary, aX as useSetSectionPrimary, aY as useSifaConfig, aZ as useSimilarProfiles, a_ as useSkillSuggestions, a$ as useStats, b0 as useSuggestionCount, b1 as useSuggestions, b2 as useUnfollow, b3 as useUnhideActivityItem, b4 as useUnhideKeytraceClaim, b5 as useUnhideOrcidPublication, b6 as useUnhideProfileItem, b7 as useUnhideSifaPublication, b8 as useUnhideStandardPublication, b9 as useUnlinkSkillFromPosition, ba as useUnlinkedPositions, bb as useUnrevealMarqueDomain, bc as useUnsetExternalAccountPrimary, bd as useUnsetPositionPrimary, be as useUnsetSectionPrimary, bf as useUpdateEducation, bg as useUpdateExternalAccount, bh as useUpdateOrgProfile, bi as useUpdatePosition, bj as useUpdateProfileLocation, bk as useUpdateProfileOverride, bl as useUpdateProfileSelf, bm as useUpdateRecord, bn as useUpdateSkill, bo as useUpdateSkillSubCategories, bp as useUploadAvatar, bq as useUploadNamePronunciationAudio, br as useVerifyExternalAccount, bs as useWipePreview } from '../../use-org-notification-emails-CbQ3Kz96.js';
1
+ export { A as AddFeatureAllowlistVariables, C as CreateReactionVariables, a as CreateRecordVariables, D as DeleteReactionVariables, b as DeleteRecordVariables, F as FollowVariables, P as PositionSkillLinkVariables, R as RemoveFeatureAllowlistVariables, S as SifaProvider, c as SifaProviderProps, U as UnfollowVariables, d as UpdateEducationVariables, e as UpdateExternalAccountVariables, f as UpdatePositionVariables, g as UpdateProfileLocationVariables, h as UpdateRecordVariables, i as UpdateSkillSubCategoriesVariables, j as UpdateSkillVariables, k as UseEntitySearchOptions, l as UseMyGithubPullRequestsParams, u as useAccounts, m as useActivityFeed, n as useActivityTeaser, o as useAddFeatureAllowlist, p as useAddOrgNotificationEmail, q as useAdminReviewQueues, r as useAppAccountCheck, s as useAppsRegistry, t as useAtFundLink, v as useBlueskySuggestions, w as useBulkHideProfileItems, x as useBulkHideStandardPublications, y as useBulkUnhideProfileItems, z as useBulkUnhideStandardPublications, B as useCanonicalSkillSearch, E as useCastRoadmapVote, G as useCreateConfirmation, H as useCreateEducation, I as useCreateEndorsement, J as useCreateExternalAccount, K as useCreatePosition, L as useCreateProfileLocation, M as useCreateReaction, N as useCreateRecord, O as useCreateSkill, Q as useDebouncedValue, T as useDeleteAccount, V as useDeleteAvatarOverride, W as useDeleteEducation, X as useDeleteExternalAccount, Y as useDeleteNamePronunciationAudio, Z as useDeletePosition, _ as useDeleteProfileLocation, $ as useDeleteReaction, a0 as useDeleteRecord, a1 as useDeleteRepoRecords, a2 as useDeleteSkill, a3 as useDismissConfirmation, a4 as useDismissUnlinkedPosition, a5 as useEndorsementCount, a6 as useEntitySearch, a7 as useExternalAccounts, a8 as useFeatureAllowlist, a9 as useFeaturedProfile, aa as useFollow, ab as useFollowers, ac as useFollowing, ad as useFollowingFeed, ae as useFollowingFeedVersion, af as useFollowingList, ag as useGetProfileView, ah as useGivenConfirmations, ai as useHeatmapData, aj as useHiddenActivityItems, ak as useHiddenApps, al as useHideActivityItem, am as useHideKeytraceClaim, an as useHideOrcidPublication, ao as useHideProfileItem, ap as useHideSifaPublication, aq as useHideStandardPublication, ar as useImportSearchEntities, as as useInboxCounts, at as useLinkSkillToPosition, av as useMutuals, aw as useMyGithubPullRequests, ax as useMyRoadmapVotes, ay as useNetworkStreamCount, az as useOrgClaim, aA as useOrgDomainChallenge, aB as useOrgDomainVerify, aC as useOrgProfile, aD as usePendingConfirmations, aE as useProfile, aF as useProfileCompleteness, aG as useReactionStatus, aH as useRefreshOrcidPublications, aI as useRefreshPds, aJ as useRemoveFeatureAllowlist, aK as useRemoveOrgNotificationEmail, aL as useRepoInventory, aM as useResetProfile, aO as useRetractRoadmapVote, aP as useRevealMarqueDomain, aQ as useRevokeConfirmation, aR as useRoadmapVotes, bt as useSearchCompanies, aS as useSearchFilters, aT as useSearchProfiles, aU as useSelectEntity, aV as useSetExternalAccountPrimary, aW as useSetPositionPrimary, aX as useSetSectionPrimary, aY as useSifaConfig, aZ as useSimilarProfiles, a_ as useSkillSuggestions, a$ as useStats, b0 as useSuggestionCount, b1 as useSuggestions, b2 as useUnfollow, b3 as useUnhideActivityItem, b4 as useUnhideKeytraceClaim, b5 as useUnhideOrcidPublication, b6 as useUnhideProfileItem, b7 as useUnhideSifaPublication, b8 as useUnhideStandardPublication, b9 as useUnlinkSkillFromPosition, ba as useUnlinkedPositions, bb as useUnrevealMarqueDomain, bc as useUnsetExternalAccountPrimary, bd as useUnsetPositionPrimary, be as useUnsetSectionPrimary, bf as useUpdateEducation, bg as useUpdateExternalAccount, bh as useUpdateOrgProfile, bi as useUpdatePosition, bj as useUpdateProfileLocation, bk as useUpdateProfileOverride, bl as useUpdateProfileSelf, bm as useUpdateRecord, bn as useUpdateSkill, bo as useUpdateSkillSubCategories, bp as useUploadAvatar, bq as useUploadNamePronunciationAudio, br as useVerifyExternalAccount, bs as useWipePreview } from '../../use-org-notification-emails-DZ0oVtiX.js';
2
2
  export { aL as SifaQueryKey, s as sifaQueryKeys } from '../../org--5MN6Ev4.js';
3
3
  import * as _tanstack_react_query from '@tanstack/react-query';
4
4
  import { UseMutationOptions } from '@tanstack/react-query';
@@ -1,6 +1,6 @@
1
1
  import { K as SifaApiConfig, M as ApiFetchOptions, N as CreateResult, W as WriteResult, c as AdultContentLabel } from '../types-BV-qBo9i.cjs';
2
2
  export { O as ApiError, Q as FilterOptions, T as ProfileSearchResult, U as ProfileSearchSuggestion, S as SearchFilters, X as SearchResponse, Y as SkillSearchResult, Z as apiFetch, _ as apiFetchOrNull, $ as apiWrite, a0 as apiWriteCreate, a1 as fetchSearchFilters, a2 as fetchSearchProfiles, a3 as fetchSkillSuggestions, a4 as searchSkills } from '../types-BV-qBo9i.cjs';
3
- export { A as AddFeatureAllowlistVariables, C as CreateReactionVariables, a as CreateRecordVariables, D as DeleteReactionVariables, b as DeleteRecordVariables, F as FollowVariables, P as PositionSkillLinkVariables, R as RemoveFeatureAllowlistVariables, S as SifaProvider, c as SifaProviderProps, U as UnfollowVariables, d as UpdateEducationVariables, e as UpdateExternalAccountVariables, f as UpdatePositionVariables, g as UpdateProfileLocationVariables, h as UpdateRecordVariables, i as UpdateSkillSubCategoriesVariables, j as UpdateSkillVariables, k as UseEntitySearchOptions, l as UseMyGithubPullRequestsParams, u as useAccounts, m as useActivityFeed, n as useActivityTeaser, o as useAddFeatureAllowlist, p as useAddOrgNotificationEmail, q as useAdminReviewQueues, r as useAppAccountCheck, s as useAppsRegistry, t as useAtFundLink, v as useBlueskySuggestions, w as useBulkHideProfileItems, x as useBulkHideStandardPublications, y as useBulkUnhideProfileItems, z as useBulkUnhideStandardPublications, B as useCanonicalSkillSearch, E as useCastRoadmapVote, G as useCreateConfirmation, H as useCreateEducation, I as useCreateEndorsement, J as useCreateExternalAccount, K as useCreatePosition, L as useCreateProfileLocation, M as useCreateReaction, N as useCreateRecord, O as useCreateSkill, Q as useDebouncedValue, T as useDeleteAccount, V as useDeleteAvatarOverride, W as useDeleteEducation, X as useDeleteExternalAccount, Y as useDeleteNamePronunciationAudio, Z as useDeletePosition, _ as useDeleteProfileLocation, $ as useDeleteReaction, a0 as useDeleteRecord, a1 as useDeleteRepoRecords, a2 as useDeleteSkill, a3 as useDismissConfirmation, a4 as useDismissUnlinkedPosition, a5 as useEndorsementCount, a6 as useEntitySearch, a7 as useExternalAccounts, a8 as useFeatureAllowlist, a9 as useFeaturedProfile, aa as useFollow, ab as useFollowers, ac as useFollowing, ad as useFollowingFeed, ae as useFollowingFeedVersion, af as useFollowingList, ag as useGetProfileView, ah as useGivenConfirmations, ai as useHeatmapData, aj as useHiddenActivityItems, ak as useHiddenApps, al as useHideActivityItem, am as useHideKeytraceClaim, an as useHideOrcidPublication, ao as useHideProfileItem, ap as useHideSifaPublication, aq as useHideStandardPublication, ar as useImportSearchEntities, as as useInboxCounts, at as useLinkSkillToPosition, au as useMintEntityDomain, av as useMutuals, aw as useMyGithubPullRequests, ax as useMyRoadmapVotes, ay as useNetworkStreamCount, az as useOrgClaim, aA as useOrgDomainChallenge, aB as useOrgDomainVerify, aC as useOrgProfile, aD as usePendingConfirmations, aE as useProfile, aF as useProfileCompleteness, aG as useReactionStatus, aH as useRefreshOrcidPublications, aI as useRefreshPds, aJ as useRemoveFeatureAllowlist, aK as useRemoveOrgNotificationEmail, aL as useRepoInventory, aM as useResetProfile, aN as useResolveEntityDomain, aO as useRetractRoadmapVote, aP as useRevealMarqueDomain, aQ as useRevokeConfirmation, aR as useRoadmapVotes, aS as useSearchFilters, aT as useSearchProfiles, aU as useSelectEntity, aV as useSetExternalAccountPrimary, aW as useSetPositionPrimary, aX as useSetSectionPrimary, aY as useSifaConfig, aZ as useSimilarProfiles, a_ as useSkillSuggestions, a$ as useStats, b0 as useSuggestionCount, b1 as useSuggestions, b2 as useUnfollow, b3 as useUnhideActivityItem, b4 as useUnhideKeytraceClaim, b5 as useUnhideOrcidPublication, b6 as useUnhideProfileItem, b7 as useUnhideSifaPublication, b8 as useUnhideStandardPublication, b9 as useUnlinkSkillFromPosition, ba as useUnlinkedPositions, bb as useUnrevealMarqueDomain, bc as useUnsetExternalAccountPrimary, bd as useUnsetPositionPrimary, be as useUnsetSectionPrimary, bf as useUpdateEducation, bg as useUpdateExternalAccount, bh as useUpdateOrgProfile, bi as useUpdatePosition, bj as useUpdateProfileLocation, bk as useUpdateProfileOverride, bl as useUpdateProfileSelf, bm as useUpdateRecord, bn as useUpdateSkill, bo as useUpdateSkillSubCategories, bp as useUploadAvatar, bq as useUploadNamePronunciationAudio, br as useVerifyExternalAccount, bs as useWipePreview } from '../use-org-notification-emails-B8e4vgs-.cjs';
3
+ export { A as AddFeatureAllowlistVariables, C as CreateReactionVariables, a as CreateRecordVariables, D as DeleteReactionVariables, b as DeleteRecordVariables, F as FollowVariables, P as PositionSkillLinkVariables, R as RemoveFeatureAllowlistVariables, S as SifaProvider, c as SifaProviderProps, U as UnfollowVariables, d as UpdateEducationVariables, e as UpdateExternalAccountVariables, f as UpdatePositionVariables, g as UpdateProfileLocationVariables, h as UpdateRecordVariables, i as UpdateSkillSubCategoriesVariables, j as UpdateSkillVariables, k as UseEntitySearchOptions, l as UseMyGithubPullRequestsParams, u as useAccounts, m as useActivityFeed, n as useActivityTeaser, o as useAddFeatureAllowlist, p as useAddOrgNotificationEmail, q as useAdminReviewQueues, r as useAppAccountCheck, s as useAppsRegistry, t as useAtFundLink, v as useBlueskySuggestions, w as useBulkHideProfileItems, x as useBulkHideStandardPublications, y as useBulkUnhideProfileItems, z as useBulkUnhideStandardPublications, B as useCanonicalSkillSearch, E as useCastRoadmapVote, G as useCreateConfirmation, H as useCreateEducation, I as useCreateEndorsement, J as useCreateExternalAccount, K as useCreatePosition, L as useCreateProfileLocation, M as useCreateReaction, N as useCreateRecord, O as useCreateSkill, Q as useDebouncedValue, T as useDeleteAccount, V as useDeleteAvatarOverride, W as useDeleteEducation, X as useDeleteExternalAccount, Y as useDeleteNamePronunciationAudio, Z as useDeletePosition, _ as useDeleteProfileLocation, $ as useDeleteReaction, a0 as useDeleteRecord, a1 as useDeleteRepoRecords, a2 as useDeleteSkill, a3 as useDismissConfirmation, a4 as useDismissUnlinkedPosition, a5 as useEndorsementCount, a6 as useEntitySearch, a7 as useExternalAccounts, a8 as useFeatureAllowlist, a9 as useFeaturedProfile, aa as useFollow, ab as useFollowers, ac as useFollowing, ad as useFollowingFeed, ae as useFollowingFeedVersion, af as useFollowingList, ag as useGetProfileView, ah as useGivenConfirmations, ai as useHeatmapData, aj as useHiddenActivityItems, ak as useHiddenApps, al as useHideActivityItem, am as useHideKeytraceClaim, an as useHideOrcidPublication, ao as useHideProfileItem, ap as useHideSifaPublication, aq as useHideStandardPublication, ar as useImportSearchEntities, as as useInboxCounts, at as useLinkSkillToPosition, au as useMintEntityDomain, av as useMutuals, aw as useMyGithubPullRequests, ax as useMyRoadmapVotes, ay as useNetworkStreamCount, az as useOrgClaim, aA as useOrgDomainChallenge, aB as useOrgDomainVerify, aC as useOrgProfile, aD as usePendingConfirmations, aE as useProfile, aF as useProfileCompleteness, aG as useReactionStatus, aH as useRefreshOrcidPublications, aI as useRefreshPds, aJ as useRemoveFeatureAllowlist, aK as useRemoveOrgNotificationEmail, aL as useRepoInventory, aM as useResetProfile, aN as useResolveEntityDomain, aO as useRetractRoadmapVote, aP as useRevealMarqueDomain, aQ as useRevokeConfirmation, aR as useRoadmapVotes, aS as useSearchFilters, aT as useSearchProfiles, aU as useSelectEntity, aV as useSetExternalAccountPrimary, aW as useSetPositionPrimary, aX as useSetSectionPrimary, aY as useSifaConfig, aZ as useSimilarProfiles, a_ as useSkillSuggestions, a$ as useStats, b0 as useSuggestionCount, b1 as useSuggestions, b2 as useUnfollow, b3 as useUnhideActivityItem, b4 as useUnhideKeytraceClaim, b5 as useUnhideOrcidPublication, b6 as useUnhideProfileItem, b7 as useUnhideSifaPublication, b8 as useUnhideStandardPublication, b9 as useUnlinkSkillFromPosition, ba as useUnlinkedPositions, bb as useUnrevealMarqueDomain, bc as useUnsetExternalAccountPrimary, bd as useUnsetPositionPrimary, be as useUnsetSectionPrimary, bf as useUpdateEducation, bg as useUpdateExternalAccount, bh as useUpdateOrgProfile, bi as useUpdatePosition, bj as useUpdateProfileLocation, bk as useUpdateProfileOverride, bl as useUpdateProfileSelf, bm as useUpdateRecord, bn as useUpdateSkill, bo as useUpdateSkillSubCategories, bp as useUploadAvatar, bq as useUploadNamePronunciationAudio, br as useVerifyExternalAccount, bs as useWipePreview } from '../use-org-notification-emails-B4INNGOe.cjs';
4
4
  import { R as ReceivedEndorsementsPage, a as ReciprocityCandidate, D as DismissEndorsementInput, P as PendingEndorsementsPage } from '../network-map-Bw_rIDtH.cjs';
5
5
  export { F as FetchNetworkStreamCountOptions, b as FetchPendingEndorsementsOptions, c as FetchRpgStatusOptions, N as NetworkMapEdge, d as NetworkMapGenerationJob, e as NetworkMapGraphData, f as NetworkMapNode, g as NetworkMapPendingJob, h as NetworkMapResponse, i as PendingEndorsement, j as ReceivedEndorsement, k as ReciprocitySkill, l as RpgItemStatus, m as RpgItemStatusSchema, n as RpgStatusResponse, o as RpgStatusResponseSchema, S as SpeakerCard, p as SpeakerDirectoryFilters, q as SpeakerGroup, r as SpeakersResponse, T as TalkEvent, s as TalkRow, t as TalkSpeaker, u as TalksResponse, v as checkNetworkMapJobStatus, w as createEducation, x as createPosition, y as createRecord, z as deleteEducation, A as deletePosition, B as deleteRecord, C as dismissEndorsement, E as fetchAtFundLink, G as fetchEndorsementCount, H as fetchEntitySearch, I as fetchGetProfileView, J as fetchNetworkMap, K as fetchNetworkStreamCount, L as fetchPendingEndorsements, M as fetchProfile, O as fetchProfileSummary, Q as fetchReceivedEndorsements, U as fetchReciprocityCandidate, V as fetchRpgStatus, W as fetchSpeakers, X as fetchTalks, Y as hideKeytraceClaim, Z as importSearchEntities, _ as initiateNetworkMapGeneration, $ as isNetworkMapResponse, a0 as linkSkillToPosition, a1 as mintEntityDomain, a2 as resolveEntityDomain, a3 as revealMarqueDomain, a4 as selectEntity, a5 as setPositionPrimary, a6 as unhideKeytraceClaim, a7 as unlinkSkillFromPosition, a8 as unrevealMarqueDomain, a9 as unsetPositionPrimary, aa as updateEducation, ab as updatePosition, ac as updateRecord } from '../network-map-Bw_rIDtH.cjs';
6
6
  import { s as sifaQueryKeys, C as ConfirmEndorsementInput, a as ConfirmEndorsementResult } from '../org-B_0EMNuF.cjs';
@@ -36,7 +36,7 @@ declare function fetchTypeaheadActors(config: SifaApiConfig, query: string, limi
36
36
  /** Confirmed endorsements a DID has received, newest first. */
37
37
  declare function useReceivedEndorsements(did: string | undefined | null, options?: {
38
38
  limit?: number;
39
- } & Omit<UseQueryOptions<ReceivedEndorsementsPage, Error, ReceivedEndorsementsPage, ReturnType<typeof sifaQueryKeys.endorsement.received>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<NoInfer<ReceivedEndorsementsPage>, Error>;
39
+ } & Omit<UseQueryOptions<ReceivedEndorsementsPage, Error, ReceivedEndorsementsPage, ReturnType<typeof sifaQueryKeys.endorsement.received>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<ReceivedEndorsementsPage, Error>;
40
40
 
41
41
  /**
42
42
  * Someone the signed-in user could endorse. `null` when there is nobody left.
@@ -45,14 +45,14 @@ declare function useReceivedEndorsements(did: string | undefined | null, options
45
45
  * session, so the key takes no DID. Invalidate it after dismissing to pull the
46
46
  * next person in without a reload.
47
47
  */
48
- declare function useReciprocityCandidate(options?: Omit<UseQueryOptions<ReciprocityCandidate | null, Error, ReciprocityCandidate | null, ReturnType<typeof sifaQueryKeys.endorsement.reciprocity>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<NoInfer<ReciprocityCandidate | null>, Error>;
48
+ declare function useReciprocityCandidate(options?: Omit<UseQueryOptions<ReciprocityCandidate | null, Error, ReciprocityCandidate | null, ReturnType<typeof sifaQueryKeys.endorsement.reciprocity>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<ReciprocityCandidate | null, Error>;
49
49
 
50
50
  /**
51
51
  * Endorsements awaiting the signed-in user's decision. Returns an empty page
52
52
  * when signed out or on error, so callers can render "nothing pending" without
53
53
  * special-casing either.
54
54
  */
55
- declare function usePendingEndorsements(options?: Omit<UseQueryOptions<PendingEndorsementsPage, Error, PendingEndorsementsPage, ReturnType<typeof sifaQueryKeys.endorsement.pending>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<NoInfer<PendingEndorsementsPage>, Error>;
55
+ declare function usePendingEndorsements(options?: Omit<UseQueryOptions<PendingEndorsementsPage, Error, PendingEndorsementsPage, ReturnType<typeof sifaQueryKeys.endorsement.pending>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<PendingEndorsementsPage, Error>;
56
56
  /**
57
57
  * Confirm a received endorsement. On success the endorsement leaves the inbox
58
58
  * and starts displaying, so both the inbox and the subject's own profile and
@@ -151,7 +151,7 @@ declare function shouldGateAdultMedia(labels: ReadonlyArray<{
151
151
  * Pass `enabled: false` for anonymous viewers — TanStack will skip the
152
152
  * fetch entirely and the gate will fall through to its default-hide path.
153
153
  */
154
- declare function useBskyContentLabelPrefs(options?: Omit<UseQueryOptions<BskyContentLabelPrefs | null, Error, BskyContentLabelPrefs | null, ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<NoInfer<BskyContentLabelPrefs | null>, Error>;
154
+ declare function useBskyContentLabelPrefs(options?: Omit<UseQueryOptions<BskyContentLabelPrefs | null, Error, BskyContentLabelPrefs | null, ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<BskyContentLabelPrefs | null, Error>;
155
155
  /**
156
156
  * Mutation that updates one or more adult-content prefs on the viewer's
157
157
  * PDS via sifa-api, then writes the merged result back into the prefs
@@ -1,6 +1,6 @@
1
1
  import { K as SifaApiConfig, M as ApiFetchOptions, N as CreateResult, W as WriteResult, c as AdultContentLabel } from '../types-Jb4KKbn9.js';
2
2
  export { O as ApiError, Q as FilterOptions, T as ProfileSearchResult, U as ProfileSearchSuggestion, S as SearchFilters, X as SearchResponse, Y as SkillSearchResult, Z as apiFetch, _ as apiFetchOrNull, $ as apiWrite, a0 as apiWriteCreate, a1 as fetchSearchFilters, a2 as fetchSearchProfiles, a3 as fetchSkillSuggestions, a4 as searchSkills } from '../types-Jb4KKbn9.js';
3
- export { A as AddFeatureAllowlistVariables, C as CreateReactionVariables, a as CreateRecordVariables, D as DeleteReactionVariables, b as DeleteRecordVariables, F as FollowVariables, P as PositionSkillLinkVariables, R as RemoveFeatureAllowlistVariables, S as SifaProvider, c as SifaProviderProps, U as UnfollowVariables, d as UpdateEducationVariables, e as UpdateExternalAccountVariables, f as UpdatePositionVariables, g as UpdateProfileLocationVariables, h as UpdateRecordVariables, i as UpdateSkillSubCategoriesVariables, j as UpdateSkillVariables, k as UseEntitySearchOptions, l as UseMyGithubPullRequestsParams, u as useAccounts, m as useActivityFeed, n as useActivityTeaser, o as useAddFeatureAllowlist, p as useAddOrgNotificationEmail, q as useAdminReviewQueues, r as useAppAccountCheck, s as useAppsRegistry, t as useAtFundLink, v as useBlueskySuggestions, w as useBulkHideProfileItems, x as useBulkHideStandardPublications, y as useBulkUnhideProfileItems, z as useBulkUnhideStandardPublications, B as useCanonicalSkillSearch, E as useCastRoadmapVote, G as useCreateConfirmation, H as useCreateEducation, I as useCreateEndorsement, J as useCreateExternalAccount, K as useCreatePosition, L as useCreateProfileLocation, M as useCreateReaction, N as useCreateRecord, O as useCreateSkill, Q as useDebouncedValue, T as useDeleteAccount, V as useDeleteAvatarOverride, W as useDeleteEducation, X as useDeleteExternalAccount, Y as useDeleteNamePronunciationAudio, Z as useDeletePosition, _ as useDeleteProfileLocation, $ as useDeleteReaction, a0 as useDeleteRecord, a1 as useDeleteRepoRecords, a2 as useDeleteSkill, a3 as useDismissConfirmation, a4 as useDismissUnlinkedPosition, a5 as useEndorsementCount, a6 as useEntitySearch, a7 as useExternalAccounts, a8 as useFeatureAllowlist, a9 as useFeaturedProfile, aa as useFollow, ab as useFollowers, ac as useFollowing, ad as useFollowingFeed, ae as useFollowingFeedVersion, af as useFollowingList, ag as useGetProfileView, ah as useGivenConfirmations, ai as useHeatmapData, aj as useHiddenActivityItems, ak as useHiddenApps, al as useHideActivityItem, am as useHideKeytraceClaim, an as useHideOrcidPublication, ao as useHideProfileItem, ap as useHideSifaPublication, aq as useHideStandardPublication, ar as useImportSearchEntities, as as useInboxCounts, at as useLinkSkillToPosition, au as useMintEntityDomain, av as useMutuals, aw as useMyGithubPullRequests, ax as useMyRoadmapVotes, ay as useNetworkStreamCount, az as useOrgClaim, aA as useOrgDomainChallenge, aB as useOrgDomainVerify, aC as useOrgProfile, aD as usePendingConfirmations, aE as useProfile, aF as useProfileCompleteness, aG as useReactionStatus, aH as useRefreshOrcidPublications, aI as useRefreshPds, aJ as useRemoveFeatureAllowlist, aK as useRemoveOrgNotificationEmail, aL as useRepoInventory, aM as useResetProfile, aN as useResolveEntityDomain, aO as useRetractRoadmapVote, aP as useRevealMarqueDomain, aQ as useRevokeConfirmation, aR as useRoadmapVotes, aS as useSearchFilters, aT as useSearchProfiles, aU as useSelectEntity, aV as useSetExternalAccountPrimary, aW as useSetPositionPrimary, aX as useSetSectionPrimary, aY as useSifaConfig, aZ as useSimilarProfiles, a_ as useSkillSuggestions, a$ as useStats, b0 as useSuggestionCount, b1 as useSuggestions, b2 as useUnfollow, b3 as useUnhideActivityItem, b4 as useUnhideKeytraceClaim, b5 as useUnhideOrcidPublication, b6 as useUnhideProfileItem, b7 as useUnhideSifaPublication, b8 as useUnhideStandardPublication, b9 as useUnlinkSkillFromPosition, ba as useUnlinkedPositions, bb as useUnrevealMarqueDomain, bc as useUnsetExternalAccountPrimary, bd as useUnsetPositionPrimary, be as useUnsetSectionPrimary, bf as useUpdateEducation, bg as useUpdateExternalAccount, bh as useUpdateOrgProfile, bi as useUpdatePosition, bj as useUpdateProfileLocation, bk as useUpdateProfileOverride, bl as useUpdateProfileSelf, bm as useUpdateRecord, bn as useUpdateSkill, bo as useUpdateSkillSubCategories, bp as useUploadAvatar, bq as useUploadNamePronunciationAudio, br as useVerifyExternalAccount, bs as useWipePreview } from '../use-org-notification-emails-CbQ3Kz96.js';
3
+ export { A as AddFeatureAllowlistVariables, C as CreateReactionVariables, a as CreateRecordVariables, D as DeleteReactionVariables, b as DeleteRecordVariables, F as FollowVariables, P as PositionSkillLinkVariables, R as RemoveFeatureAllowlistVariables, S as SifaProvider, c as SifaProviderProps, U as UnfollowVariables, d as UpdateEducationVariables, e as UpdateExternalAccountVariables, f as UpdatePositionVariables, g as UpdateProfileLocationVariables, h as UpdateRecordVariables, i as UpdateSkillSubCategoriesVariables, j as UpdateSkillVariables, k as UseEntitySearchOptions, l as UseMyGithubPullRequestsParams, u as useAccounts, m as useActivityFeed, n as useActivityTeaser, o as useAddFeatureAllowlist, p as useAddOrgNotificationEmail, q as useAdminReviewQueues, r as useAppAccountCheck, s as useAppsRegistry, t as useAtFundLink, v as useBlueskySuggestions, w as useBulkHideProfileItems, x as useBulkHideStandardPublications, y as useBulkUnhideProfileItems, z as useBulkUnhideStandardPublications, B as useCanonicalSkillSearch, E as useCastRoadmapVote, G as useCreateConfirmation, H as useCreateEducation, I as useCreateEndorsement, J as useCreateExternalAccount, K as useCreatePosition, L as useCreateProfileLocation, M as useCreateReaction, N as useCreateRecord, O as useCreateSkill, Q as useDebouncedValue, T as useDeleteAccount, V as useDeleteAvatarOverride, W as useDeleteEducation, X as useDeleteExternalAccount, Y as useDeleteNamePronunciationAudio, Z as useDeletePosition, _ as useDeleteProfileLocation, $ as useDeleteReaction, a0 as useDeleteRecord, a1 as useDeleteRepoRecords, a2 as useDeleteSkill, a3 as useDismissConfirmation, a4 as useDismissUnlinkedPosition, a5 as useEndorsementCount, a6 as useEntitySearch, a7 as useExternalAccounts, a8 as useFeatureAllowlist, a9 as useFeaturedProfile, aa as useFollow, ab as useFollowers, ac as useFollowing, ad as useFollowingFeed, ae as useFollowingFeedVersion, af as useFollowingList, ag as useGetProfileView, ah as useGivenConfirmations, ai as useHeatmapData, aj as useHiddenActivityItems, ak as useHiddenApps, al as useHideActivityItem, am as useHideKeytraceClaim, an as useHideOrcidPublication, ao as useHideProfileItem, ap as useHideSifaPublication, aq as useHideStandardPublication, ar as useImportSearchEntities, as as useInboxCounts, at as useLinkSkillToPosition, au as useMintEntityDomain, av as useMutuals, aw as useMyGithubPullRequests, ax as useMyRoadmapVotes, ay as useNetworkStreamCount, az as useOrgClaim, aA as useOrgDomainChallenge, aB as useOrgDomainVerify, aC as useOrgProfile, aD as usePendingConfirmations, aE as useProfile, aF as useProfileCompleteness, aG as useReactionStatus, aH as useRefreshOrcidPublications, aI as useRefreshPds, aJ as useRemoveFeatureAllowlist, aK as useRemoveOrgNotificationEmail, aL as useRepoInventory, aM as useResetProfile, aN as useResolveEntityDomain, aO as useRetractRoadmapVote, aP as useRevealMarqueDomain, aQ as useRevokeConfirmation, aR as useRoadmapVotes, aS as useSearchFilters, aT as useSearchProfiles, aU as useSelectEntity, aV as useSetExternalAccountPrimary, aW as useSetPositionPrimary, aX as useSetSectionPrimary, aY as useSifaConfig, aZ as useSimilarProfiles, a_ as useSkillSuggestions, a$ as useStats, b0 as useSuggestionCount, b1 as useSuggestions, b2 as useUnfollow, b3 as useUnhideActivityItem, b4 as useUnhideKeytraceClaim, b5 as useUnhideOrcidPublication, b6 as useUnhideProfileItem, b7 as useUnhideSifaPublication, b8 as useUnhideStandardPublication, b9 as useUnlinkSkillFromPosition, ba as useUnlinkedPositions, bb as useUnrevealMarqueDomain, bc as useUnsetExternalAccountPrimary, bd as useUnsetPositionPrimary, be as useUnsetSectionPrimary, bf as useUpdateEducation, bg as useUpdateExternalAccount, bh as useUpdateOrgProfile, bi as useUpdatePosition, bj as useUpdateProfileLocation, bk as useUpdateProfileOverride, bl as useUpdateProfileSelf, bm as useUpdateRecord, bn as useUpdateSkill, bo as useUpdateSkillSubCategories, bp as useUploadAvatar, bq as useUploadNamePronunciationAudio, br as useVerifyExternalAccount, bs as useWipePreview } from '../use-org-notification-emails-DZ0oVtiX.js';
4
4
  import { R as ReceivedEndorsementsPage, a as ReciprocityCandidate, D as DismissEndorsementInput, P as PendingEndorsementsPage } from '../network-map-DUam4K3f.js';
5
5
  export { F as FetchNetworkStreamCountOptions, b as FetchPendingEndorsementsOptions, c as FetchRpgStatusOptions, N as NetworkMapEdge, d as NetworkMapGenerationJob, e as NetworkMapGraphData, f as NetworkMapNode, g as NetworkMapPendingJob, h as NetworkMapResponse, i as PendingEndorsement, j as ReceivedEndorsement, k as ReciprocitySkill, l as RpgItemStatus, m as RpgItemStatusSchema, n as RpgStatusResponse, o as RpgStatusResponseSchema, S as SpeakerCard, p as SpeakerDirectoryFilters, q as SpeakerGroup, r as SpeakersResponse, T as TalkEvent, s as TalkRow, t as TalkSpeaker, u as TalksResponse, v as checkNetworkMapJobStatus, w as createEducation, x as createPosition, y as createRecord, z as deleteEducation, A as deletePosition, B as deleteRecord, C as dismissEndorsement, E as fetchAtFundLink, G as fetchEndorsementCount, H as fetchEntitySearch, I as fetchGetProfileView, J as fetchNetworkMap, K as fetchNetworkStreamCount, L as fetchPendingEndorsements, M as fetchProfile, O as fetchProfileSummary, Q as fetchReceivedEndorsements, U as fetchReciprocityCandidate, V as fetchRpgStatus, W as fetchSpeakers, X as fetchTalks, Y as hideKeytraceClaim, Z as importSearchEntities, _ as initiateNetworkMapGeneration, $ as isNetworkMapResponse, a0 as linkSkillToPosition, a1 as mintEntityDomain, a2 as resolveEntityDomain, a3 as revealMarqueDomain, a4 as selectEntity, a5 as setPositionPrimary, a6 as unhideKeytraceClaim, a7 as unlinkSkillFromPosition, a8 as unrevealMarqueDomain, a9 as unsetPositionPrimary, aa as updateEducation, ab as updatePosition, ac as updateRecord } from '../network-map-DUam4K3f.js';
6
6
  import { s as sifaQueryKeys, C as ConfirmEndorsementInput, a as ConfirmEndorsementResult } from '../org--5MN6Ev4.js';
@@ -36,7 +36,7 @@ declare function fetchTypeaheadActors(config: SifaApiConfig, query: string, limi
36
36
  /** Confirmed endorsements a DID has received, newest first. */
37
37
  declare function useReceivedEndorsements(did: string | undefined | null, options?: {
38
38
  limit?: number;
39
- } & Omit<UseQueryOptions<ReceivedEndorsementsPage, Error, ReceivedEndorsementsPage, ReturnType<typeof sifaQueryKeys.endorsement.received>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<NoInfer<ReceivedEndorsementsPage>, Error>;
39
+ } & Omit<UseQueryOptions<ReceivedEndorsementsPage, Error, ReceivedEndorsementsPage, ReturnType<typeof sifaQueryKeys.endorsement.received>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<ReceivedEndorsementsPage, Error>;
40
40
 
41
41
  /**
42
42
  * Someone the signed-in user could endorse. `null` when there is nobody left.
@@ -45,14 +45,14 @@ declare function useReceivedEndorsements(did: string | undefined | null, options
45
45
  * session, so the key takes no DID. Invalidate it after dismissing to pull the
46
46
  * next person in without a reload.
47
47
  */
48
- declare function useReciprocityCandidate(options?: Omit<UseQueryOptions<ReciprocityCandidate | null, Error, ReciprocityCandidate | null, ReturnType<typeof sifaQueryKeys.endorsement.reciprocity>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<NoInfer<ReciprocityCandidate | null>, Error>;
48
+ declare function useReciprocityCandidate(options?: Omit<UseQueryOptions<ReciprocityCandidate | null, Error, ReciprocityCandidate | null, ReturnType<typeof sifaQueryKeys.endorsement.reciprocity>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<ReciprocityCandidate | null, Error>;
49
49
 
50
50
  /**
51
51
  * Endorsements awaiting the signed-in user's decision. Returns an empty page
52
52
  * when signed out or on error, so callers can render "nothing pending" without
53
53
  * special-casing either.
54
54
  */
55
- declare function usePendingEndorsements(options?: Omit<UseQueryOptions<PendingEndorsementsPage, Error, PendingEndorsementsPage, ReturnType<typeof sifaQueryKeys.endorsement.pending>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<NoInfer<PendingEndorsementsPage>, Error>;
55
+ declare function usePendingEndorsements(options?: Omit<UseQueryOptions<PendingEndorsementsPage, Error, PendingEndorsementsPage, ReturnType<typeof sifaQueryKeys.endorsement.pending>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<PendingEndorsementsPage, Error>;
56
56
  /**
57
57
  * Confirm a received endorsement. On success the endorsement leaves the inbox
58
58
  * and starts displaying, so both the inbox and the subject's own profile and
@@ -151,7 +151,7 @@ declare function shouldGateAdultMedia(labels: ReadonlyArray<{
151
151
  * Pass `enabled: false` for anonymous viewers — TanStack will skip the
152
152
  * fetch entirely and the gate will fall through to its default-hide path.
153
153
  */
154
- declare function useBskyContentLabelPrefs(options?: Omit<UseQueryOptions<BskyContentLabelPrefs | null, Error, BskyContentLabelPrefs | null, ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<NoInfer<BskyContentLabelPrefs | null>, Error>;
154
+ declare function useBskyContentLabelPrefs(options?: Omit<UseQueryOptions<BskyContentLabelPrefs | null, Error, BskyContentLabelPrefs | null, ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<BskyContentLabelPrefs | null, Error>;
155
155
  /**
156
156
  * Mutation that updates one or more adult-content prefs on the viewer's
157
157
  * PDS via sifa-api, then writes the merged result back into the prefs
@@ -14,86 +14,115 @@ var RpgUnlockSchema = z.discriminatedUnion("kind", [
14
14
  z.object({ kind: z.literal("usesApp"), appId: z.string().min(1) }),
15
15
  z.object({ kind: z.literal("hasDoctorate") })
16
16
  ]);
17
+ var RPG_CID_REGEX = /^bafkrei[a-z2-7]{52}$/;
17
18
  var RpgItemSchema = z.object({
18
19
  /** Lowercase `[a-z0-9_]` only: the id is embedded in an AT Protocol record key. */
19
20
  id: z.string().min(1).max(50).regex(/^[a-z0-9_]+$/),
20
21
  title: z.string().max(100),
21
22
  description: z.string().max(500),
22
- kind: z.enum(["layer", "held"]),
23
+ kind: z.enum(["layer", "held", "overlay"]),
23
24
  category: z.string().max(30),
25
+ /** rpg.actor channels the item is offered in (optional). */
26
+ channels: z.array(z.string().min(1)).optional(),
27
+ /** Full-size sprite asset (CIDv1, raw codec, base32). */
28
+ assetCid: z.string().regex(RPG_CID_REGEX),
29
+ /** Inventory icon (CIDv1, raw codec, base32). */
30
+ iconCid: z.string().regex(RPG_CID_REGEX),
24
31
  unlock: z.array(RpgUnlockSchema).min(1),
25
32
  // ANY of these unlocks the item
26
33
  enabled: z.boolean()
27
34
  });
28
35
  var RPG_ITEMS = [
29
36
  {
30
- id: "sifa_power_suit",
31
- title: "Power Suit",
32
- description: "",
33
- kind: "layer",
34
- category: "tops",
37
+ id: "sifa_suit",
38
+ title: "Sifa Suit",
39
+ description: "Sharp power suit for anyone with a job on their profile",
40
+ kind: "overlay",
41
+ category: "costume",
42
+ channels: ["main"],
43
+ assetCid: "bafkreibortlffvfzkdcuqdpoubczuno7ohnvfwqhefe4h4s36eooe4njgu",
44
+ iconCid: "bafkreifo7vojbr4i6uvsthj2hbczoqwmrn3ovysrskvxlxw6fvkbswm2ae",
35
45
  enabled: true,
36
46
  unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.position" }]
37
47
  },
38
48
  {
39
- id: "sifa_weekend_shirt",
40
- title: "Weekend Shirt",
41
- description: "",
42
- kind: "layer",
43
- category: "tops",
44
- enabled: true,
45
- unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.volunteering" }]
46
- },
47
- {
48
- id: "sifa_speaker_mic",
49
+ id: "speaker_mic",
49
50
  title: "Speaker Mic",
50
- description: "",
51
+ description: "A presentation mic, so you can drop it on 'em",
51
52
  kind: "held",
52
53
  category: "righthand",
54
+ channels: ["main"],
55
+ assetCid: "bafkreibr4kgeijc5naecf7l4awfv3omph4ngjmjb36qkfnk2sdo6l45ck4",
56
+ iconCid: "bafkreidnkirbw4nwiro3ocrn5nk66uxf3dhcoy5pojunisvs7so55u3j3q",
53
57
  enabled: true,
54
58
  unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.presentation" }]
55
59
  },
56
60
  {
57
- id: "sifa_school_books",
58
- title: "School Books",
59
- description: "",
61
+ id: "strapped_books",
62
+ title: "Strapped Books",
63
+ description: "Knowledge is power, better come strapped",
60
64
  kind: "held",
61
- category: "lefthand",
65
+ category: "righthand",
66
+ channels: ["main"],
67
+ assetCid: "bafkreieofltl6427jy3n6dfv63phublalv6nq2hcs36qnyxz33ta6u6yqi",
68
+ iconCid: "bafkreiavywpv4sgw7gnkzq5gw3nq6yihaucdexpsvgko26q6jq6u6grjpi",
62
69
  enabled: true,
63
70
  unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.education" }]
64
71
  },
65
72
  {
66
- id: "sifa_doctoral_cap",
73
+ id: "dev_hoodie",
74
+ title: "Dev Hoodie",
75
+ description: "Snug hoodie for when you enter total code mode",
76
+ kind: "layer",
77
+ category: "tops",
78
+ channels: ["main", "sub1"],
79
+ assetCid: "bafkreigmrqp5kd6lytqcen2mypuv6dqonrdfbi2ngxhq3uqozk63yi7hoy",
80
+ iconCid: "bafkreigjwti3w43ta6gy2c75qtdnuvovfohjtv2febbd6hdhpri4tupbem",
81
+ enabled: true,
82
+ unlock: [
83
+ { kind: "hasExternalAccount", platforms: ["github"] },
84
+ { kind: "usesApp", appId: "tangled" }
85
+ ]
86
+ },
87
+ {
88
+ id: "doctoral_cap",
67
89
  title: "Doctoral Cap",
68
- description: "",
90
+ description: "Took so many long years to earn this hat",
69
91
  kind: "layer",
70
92
  category: "headwear",
93
+ channels: ["main"],
94
+ assetCid: "bafkreic7pvfpb7fjgooiaianrc27mh7fwj5vkicre63l6x5hrzb4w36tcq",
95
+ iconCid: "bafkreigqt6lmx5crj3w7vc3bvuewarzdreg2doxyeerbxmhljhpeshjewm",
71
96
  enabled: true,
72
97
  unlock: [{ kind: "hasDoctorate" }]
73
98
  },
74
99
  {
75
- id: "sifa_lab_coat",
76
- title: "Lab Coat",
77
- description: "",
100
+ id: "weekend_shirt",
101
+ title: "Weekend Shirt",
102
+ description: "Fun shirt to wear when work is all finished",
78
103
  kind: "layer",
79
104
  category: "tops",
105
+ channels: ["main", "sub1", "sub2"],
106
+ assetCid: "bafkreigifgpwkxvftiuzbjc6c2xz4xf2iv4bznbhu364e7rhvfmhosbak4",
107
+ iconCid: "bafkreieguco74wkabuyhs4sz6ec35nyywr7ikaw6et4coeezphnsnqqjui",
80
108
  enabled: true,
81
- unlock: [{ kind: "hasExternalAccount", platforms: ["orcid"] }]
109
+ unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.volunteering" }]
82
110
  },
83
111
  {
84
- id: "sifa_dev_hoodie",
85
- title: "Dev Hoodie",
86
- description: "",
112
+ id: "lab_coat",
113
+ title: "Lab Coat",
114
+ description: "Scientifically proven attire",
87
115
  kind: "layer",
88
116
  category: "tops",
117
+ channels: ["main"],
118
+ assetCid: "bafkreiby4g6fgkmi65myv7tdblgb4jvqa3kgnrxvtkxlrtme55unuie4he",
119
+ iconCid: "bafkreifoddxk5tobgwadib5rxwjn67iind6me3swpvw4t5rbcauc5r4syy",
89
120
  enabled: true,
90
- unlock: [
91
- { kind: "hasExternalAccount", platforms: ["github"] },
92
- { kind: "usesApp", appId: "tangled" }
93
- ]
121
+ unlock: [{ kind: "hasExternalAccount", platforms: ["orcid"] }]
94
122
  }
95
123
  ];
96
124
  export {
125
+ RPG_CID_REGEX,
97
126
  RPG_ITEMS,
98
127
  RpgItemSchema,
99
128
  RpgUnlockSchema
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rpg/catalog.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const RpgUnlockSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('hasRecord'),\n collection: z.enum([\n 'id.sifa.profile.position',\n 'id.sifa.profile.volunteering',\n 'id.sifa.profile.presentation',\n 'id.sifa.profile.education',\n ]),\n }),\n z.object({ kind: z.literal('hasExternalAccount'), platforms: z.array(z.string()).min(1) }),\n z.object({ kind: z.literal('usesApp'), appId: z.string().min(1) }),\n z.object({ kind: z.literal('hasDoctorate') }),\n]);\n\nexport const RpgItemSchema = z.object({\n /** Lowercase `[a-z0-9_]` only: the id is embedded in an AT Protocol record key. */\n id: z\n .string()\n .min(1)\n .max(50)\n .regex(/^[a-z0-9_]+$/),\n title: z.string().max(100),\n description: z.string().max(500),\n kind: z.enum(['layer', 'held']),\n category: z.string().max(30),\n unlock: z.array(RpgUnlockSchema).min(1), // ANY of these unlocks the item\n enabled: z.boolean(),\n});\nexport type RpgItem = z.infer<typeof RpgItemSchema>;\nexport type RpgUnlock = z.infer<typeof RpgUnlockSchema>;\n\n/**\n * The Sifa item catalog for rpg.actor. PLACEHOLDER titles/categories until\n * rpg.actor transfers the real item cores.\n */\nexport const RPG_ITEMS: readonly RpgItem[] = [\n {\n id: 'sifa_power_suit',\n title: 'Power Suit',\n description: '',\n kind: 'layer',\n category: 'tops',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.position' }],\n },\n {\n id: 'sifa_weekend_shirt',\n title: 'Weekend Shirt',\n description: '',\n kind: 'layer',\n category: 'tops',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.volunteering' }],\n },\n {\n id: 'sifa_speaker_mic',\n title: 'Speaker Mic',\n description: '',\n kind: 'held',\n category: 'righthand',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.presentation' }],\n },\n {\n id: 'sifa_school_books',\n title: 'School Books',\n description: '',\n kind: 'held',\n category: 'lefthand',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.education' }],\n },\n {\n id: 'sifa_doctoral_cap',\n title: 'Doctoral Cap',\n description: '',\n kind: 'layer',\n category: 'headwear',\n enabled: true,\n unlock: [{ kind: 'hasDoctorate' }],\n },\n {\n id: 'sifa_lab_coat',\n title: 'Lab Coat',\n description: '',\n kind: 'layer',\n category: 'tops',\n enabled: true,\n unlock: [{ kind: 'hasExternalAccount', platforms: ['orcid'] }],\n },\n {\n id: 'sifa_dev_hoodie',\n title: 'Dev Hoodie',\n description: '',\n kind: 'layer',\n category: 'tops',\n enabled: true,\n unlock: [\n { kind: 'hasExternalAccount', platforms: ['github'] },\n { kind: 'usesApp', appId: 'tangled' },\n ],\n },\n];\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/rpg/catalog.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const RpgUnlockSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('hasRecord'),\n collection: z.enum([\n 'id.sifa.profile.position',\n 'id.sifa.profile.volunteering',\n 'id.sifa.profile.presentation',\n 'id.sifa.profile.education',\n ]),\n }),\n z.object({ kind: z.literal('hasExternalAccount'), platforms: z.array(z.string()).min(1) }),\n z.object({ kind: z.literal('usesApp'), appId: z.string().min(1) }),\n z.object({ kind: z.literal('hasDoctorate') }),\n]);\n\n/** CIDv1 (raw codec, sha2-256, base32) as used for rpg.actor image blobs. */\nexport const RPG_CID_REGEX = /^bafkrei[a-z2-7]{52}$/;\n\nexport const RpgItemSchema = z.object({\n /** Lowercase `[a-z0-9_]` only: the id is embedded in an AT Protocol record key. */\n id: z\n .string()\n .min(1)\n .max(50)\n .regex(/^[a-z0-9_]+$/),\n title: z.string().max(100),\n description: z.string().max(500),\n kind: z.enum(['layer', 'held', 'overlay']),\n category: z.string().max(30),\n /** rpg.actor channels the item is offered in (optional). */\n channels: z.array(z.string().min(1)).optional(),\n /** Full-size sprite asset (CIDv1, raw codec, base32). */\n assetCid: z.string().regex(RPG_CID_REGEX),\n /** Inventory icon (CIDv1, raw codec, base32). */\n iconCid: z.string().regex(RPG_CID_REGEX),\n unlock: z.array(RpgUnlockSchema).min(1), // ANY of these unlocks the item\n enabled: z.boolean(),\n});\nexport type RpgItem = z.infer<typeof RpgItemSchema>;\nexport type RpgUnlock = z.infer<typeof RpgUnlockSchema>;\n\n/**\n * The Sifa item catalog for rpg.actor. Ids, titles, descriptions, kinds,\n * categories, channels and image CIDs come from rpg.actor's item cores.\n */\nexport const RPG_ITEMS: readonly RpgItem[] = [\n {\n id: 'sifa_suit',\n title: 'Sifa Suit',\n description: 'Sharp power suit for anyone with a job on their profile',\n kind: 'overlay',\n category: 'costume',\n channels: ['main'],\n assetCid: 'bafkreibortlffvfzkdcuqdpoubczuno7ohnvfwqhefe4h4s36eooe4njgu',\n iconCid: 'bafkreifo7vojbr4i6uvsthj2hbczoqwmrn3ovysrskvxlxw6fvkbswm2ae',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.position' }],\n },\n {\n id: 'speaker_mic',\n title: 'Speaker Mic',\n description: \"A presentation mic, so you can drop it on 'em\",\n kind: 'held',\n category: 'righthand',\n channels: ['main'],\n assetCid: 'bafkreibr4kgeijc5naecf7l4awfv3omph4ngjmjb36qkfnk2sdo6l45ck4',\n iconCid: 'bafkreidnkirbw4nwiro3ocrn5nk66uxf3dhcoy5pojunisvs7so55u3j3q',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.presentation' }],\n },\n {\n id: 'strapped_books',\n title: 'Strapped Books',\n description: 'Knowledge is power, better come strapped',\n kind: 'held',\n category: 'righthand',\n channels: ['main'],\n assetCid: 'bafkreieofltl6427jy3n6dfv63phublalv6nq2hcs36qnyxz33ta6u6yqi',\n iconCid: 'bafkreiavywpv4sgw7gnkzq5gw3nq6yihaucdexpsvgko26q6jq6u6grjpi',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.education' }],\n },\n {\n id: 'dev_hoodie',\n title: 'Dev Hoodie',\n description: 'Snug hoodie for when you enter total code mode',\n kind: 'layer',\n category: 'tops',\n channels: ['main', 'sub1'],\n assetCid: 'bafkreigmrqp5kd6lytqcen2mypuv6dqonrdfbi2ngxhq3uqozk63yi7hoy',\n iconCid: 'bafkreigjwti3w43ta6gy2c75qtdnuvovfohjtv2febbd6hdhpri4tupbem',\n enabled: true,\n unlock: [\n { kind: 'hasExternalAccount', platforms: ['github'] },\n { kind: 'usesApp', appId: 'tangled' },\n ],\n },\n {\n id: 'doctoral_cap',\n title: 'Doctoral Cap',\n description: 'Took so many long years to earn this hat',\n kind: 'layer',\n category: 'headwear',\n channels: ['main'],\n assetCid: 'bafkreic7pvfpb7fjgooiaianrc27mh7fwj5vkicre63l6x5hrzb4w36tcq',\n iconCid: 'bafkreigqt6lmx5crj3w7vc3bvuewarzdreg2doxyeerbxmhljhpeshjewm',\n enabled: true,\n unlock: [{ kind: 'hasDoctorate' }],\n },\n {\n id: 'weekend_shirt',\n title: 'Weekend Shirt',\n description: 'Fun shirt to wear when work is all finished',\n kind: 'layer',\n category: 'tops',\n channels: ['main', 'sub1', 'sub2'],\n assetCid: 'bafkreigifgpwkxvftiuzbjc6c2xz4xf2iv4bznbhu364e7rhvfmhosbak4',\n iconCid: 'bafkreieguco74wkabuyhs4sz6ec35nyywr7ikaw6et4coeezphnsnqqjui',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.volunteering' }],\n },\n {\n id: 'lab_coat',\n title: 'Lab Coat',\n description: 'Scientifically proven attire',\n kind: 'layer',\n category: 'tops',\n channels: ['main'],\n assetCid: 'bafkreiby4g6fgkmi65myv7tdblgb4jvqa3kgnrxvtkxlrtme55unuie4he',\n iconCid: 'bafkreifoddxk5tobgwadib5rxwjn67iind6me3swpvw4t5rbcauc5r4syy',\n enabled: true,\n unlock: [{ kind: 'hasExternalAccount', platforms: ['orcid'] }],\n },\n];\n"],"mappings":"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","names":[]}
@@ -17,83 +17,111 @@ var RpgUnlockSchema = zod.z.discriminatedUnion("kind", [
17
17
  zod.z.object({ kind: zod.z.literal("usesApp"), appId: zod.z.string().min(1) }),
18
18
  zod.z.object({ kind: zod.z.literal("hasDoctorate") })
19
19
  ]);
20
+ var RPG_CID_REGEX = /^bafkrei[a-z2-7]{52}$/;
20
21
  var RpgItemSchema = zod.z.object({
21
22
  /** Lowercase `[a-z0-9_]` only: the id is embedded in an AT Protocol record key. */
22
23
  id: zod.z.string().min(1).max(50).regex(/^[a-z0-9_]+$/),
23
24
  title: zod.z.string().max(100),
24
25
  description: zod.z.string().max(500),
25
- kind: zod.z.enum(["layer", "held"]),
26
+ kind: zod.z.enum(["layer", "held", "overlay"]),
26
27
  category: zod.z.string().max(30),
28
+ /** rpg.actor channels the item is offered in (optional). */
29
+ channels: zod.z.array(zod.z.string().min(1)).optional(),
30
+ /** Full-size sprite asset (CIDv1, raw codec, base32). */
31
+ assetCid: zod.z.string().regex(RPG_CID_REGEX),
32
+ /** Inventory icon (CIDv1, raw codec, base32). */
33
+ iconCid: zod.z.string().regex(RPG_CID_REGEX),
27
34
  unlock: zod.z.array(RpgUnlockSchema).min(1),
28
35
  // ANY of these unlocks the item
29
36
  enabled: zod.z.boolean()
30
37
  });
31
38
  var RPG_ITEMS = [
32
39
  {
33
- id: "sifa_power_suit",
34
- title: "Power Suit",
35
- description: "",
36
- kind: "layer",
37
- category: "tops",
40
+ id: "sifa_suit",
41
+ title: "Sifa Suit",
42
+ description: "Sharp power suit for anyone with a job on their profile",
43
+ kind: "overlay",
44
+ category: "costume",
45
+ channels: ["main"],
46
+ assetCid: "bafkreibortlffvfzkdcuqdpoubczuno7ohnvfwqhefe4h4s36eooe4njgu",
47
+ iconCid: "bafkreifo7vojbr4i6uvsthj2hbczoqwmrn3ovysrskvxlxw6fvkbswm2ae",
38
48
  enabled: true,
39
49
  unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.position" }]
40
50
  },
41
51
  {
42
- id: "sifa_weekend_shirt",
43
- title: "Weekend Shirt",
44
- description: "",
45
- kind: "layer",
46
- category: "tops",
47
- enabled: true,
48
- unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.volunteering" }]
49
- },
50
- {
51
- id: "sifa_speaker_mic",
52
+ id: "speaker_mic",
52
53
  title: "Speaker Mic",
53
- description: "",
54
+ description: "A presentation mic, so you can drop it on 'em",
54
55
  kind: "held",
55
56
  category: "righthand",
57
+ channels: ["main"],
58
+ assetCid: "bafkreibr4kgeijc5naecf7l4awfv3omph4ngjmjb36qkfnk2sdo6l45ck4",
59
+ iconCid: "bafkreidnkirbw4nwiro3ocrn5nk66uxf3dhcoy5pojunisvs7so55u3j3q",
56
60
  enabled: true,
57
61
  unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.presentation" }]
58
62
  },
59
63
  {
60
- id: "sifa_school_books",
61
- title: "School Books",
62
- description: "",
64
+ id: "strapped_books",
65
+ title: "Strapped Books",
66
+ description: "Knowledge is power, better come strapped",
63
67
  kind: "held",
64
- category: "lefthand",
68
+ category: "righthand",
69
+ channels: ["main"],
70
+ assetCid: "bafkreieofltl6427jy3n6dfv63phublalv6nq2hcs36qnyxz33ta6u6yqi",
71
+ iconCid: "bafkreiavywpv4sgw7gnkzq5gw3nq6yihaucdexpsvgko26q6jq6u6grjpi",
65
72
  enabled: true,
66
73
  unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.education" }]
67
74
  },
68
75
  {
69
- id: "sifa_doctoral_cap",
76
+ id: "dev_hoodie",
77
+ title: "Dev Hoodie",
78
+ description: "Snug hoodie for when you enter total code mode",
79
+ kind: "layer",
80
+ category: "tops",
81
+ channels: ["main", "sub1"],
82
+ assetCid: "bafkreigmrqp5kd6lytqcen2mypuv6dqonrdfbi2ngxhq3uqozk63yi7hoy",
83
+ iconCid: "bafkreigjwti3w43ta6gy2c75qtdnuvovfohjtv2febbd6hdhpri4tupbem",
84
+ enabled: true,
85
+ unlock: [
86
+ { kind: "hasExternalAccount", platforms: ["github"] },
87
+ { kind: "usesApp", appId: "tangled" }
88
+ ]
89
+ },
90
+ {
91
+ id: "doctoral_cap",
70
92
  title: "Doctoral Cap",
71
- description: "",
93
+ description: "Took so many long years to earn this hat",
72
94
  kind: "layer",
73
95
  category: "headwear",
96
+ channels: ["main"],
97
+ assetCid: "bafkreic7pvfpb7fjgooiaianrc27mh7fwj5vkicre63l6x5hrzb4w36tcq",
98
+ iconCid: "bafkreigqt6lmx5crj3w7vc3bvuewarzdreg2doxyeerbxmhljhpeshjewm",
74
99
  enabled: true,
75
100
  unlock: [{ kind: "hasDoctorate" }]
76
101
  },
77
102
  {
78
- id: "sifa_lab_coat",
79
- title: "Lab Coat",
80
- description: "",
103
+ id: "weekend_shirt",
104
+ title: "Weekend Shirt",
105
+ description: "Fun shirt to wear when work is all finished",
81
106
  kind: "layer",
82
107
  category: "tops",
108
+ channels: ["main", "sub1", "sub2"],
109
+ assetCid: "bafkreigifgpwkxvftiuzbjc6c2xz4xf2iv4bznbhu364e7rhvfmhosbak4",
110
+ iconCid: "bafkreieguco74wkabuyhs4sz6ec35nyywr7ikaw6et4coeezphnsnqqjui",
83
111
  enabled: true,
84
- unlock: [{ kind: "hasExternalAccount", platforms: ["orcid"] }]
112
+ unlock: [{ kind: "hasRecord", collection: "id.sifa.profile.volunteering" }]
85
113
  },
86
114
  {
87
- id: "sifa_dev_hoodie",
88
- title: "Dev Hoodie",
89
- description: "",
115
+ id: "lab_coat",
116
+ title: "Lab Coat",
117
+ description: "Scientifically proven attire",
90
118
  kind: "layer",
91
119
  category: "tops",
120
+ channels: ["main"],
121
+ assetCid: "bafkreiby4g6fgkmi65myv7tdblgb4jvqa3kgnrxvtkxlrtme55unuie4he",
122
+ iconCid: "bafkreifoddxk5tobgwadib5rxwjn67iind6me3swpvw4t5rbcauc5r4syy",
92
123
  enabled: true,
93
- unlock: [
94
- { kind: "hasExternalAccount", platforms: ["github"] },
95
- { kind: "usesApp", appId: "tangled" }
96
- ]
124
+ unlock: [{ kind: "hasExternalAccount", platforms: ["orcid"] }]
97
125
  }
98
126
  ];
99
127
 
@@ -114,9 +142,25 @@ function evaluateRpgUnlocks(signals, items = RPG_ITEMS) {
114
142
  return items.filter((item) => item.enabled).map((item) => ({ item, earned: item.unlock.some((u) => matches(u, signals)) }));
115
143
  }
116
144
 
145
+ // src/rpg/links.ts
146
+ var RPG_ACTOR_URL = "https://rpg.actor";
147
+ function rpgGiveRkey(itemId, recipientDid) {
148
+ return `sifa-${itemId}-${recipientDid}`;
149
+ }
150
+ function rpgActorCharacterUrl(handleOrDid) {
151
+ return `${RPG_ACTOR_URL}/${encodeURIComponent(handleOrDid.replace(/^@+/, ""))}`;
152
+ }
153
+ function rpgActorWearUrl(handleOrDid, itemId, recipientDid) {
154
+ return `${rpgActorCharacterUrl(handleOrDid)}?wear=${encodeURIComponent(rpgGiveRkey(itemId, recipientDid))}`;
155
+ }
156
+
157
+ exports.RPG_ACTOR_URL = RPG_ACTOR_URL;
117
158
  exports.RPG_ITEMS = RPG_ITEMS;
118
159
  exports.RpgItemSchema = RpgItemSchema;
119
160
  exports.RpgUnlockSchema = RpgUnlockSchema;
120
161
  exports.evaluateRpgUnlocks = evaluateRpgUnlocks;
162
+ exports.rpgActorCharacterUrl = rpgActorCharacterUrl;
163
+ exports.rpgActorWearUrl = rpgActorWearUrl;
164
+ exports.rpgGiveRkey = rpgGiveRkey;
121
165
  //# sourceMappingURL=index.cjs.map
122
166
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rpg/catalog.ts","../../src/rpg/unlocks.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\nexport const RpgUnlockSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('hasRecord'),\n collection: z.enum([\n 'id.sifa.profile.position',\n 'id.sifa.profile.volunteering',\n 'id.sifa.profile.presentation',\n 'id.sifa.profile.education',\n ]),\n }),\n z.object({ kind: z.literal('hasExternalAccount'), platforms: z.array(z.string()).min(1) }),\n z.object({ kind: z.literal('usesApp'), appId: z.string().min(1) }),\n z.object({ kind: z.literal('hasDoctorate') }),\n]);\n\nexport const RpgItemSchema = z.object({\n /** Lowercase `[a-z0-9_]` only: the id is embedded in an AT Protocol record key. */\n id: z\n .string()\n .min(1)\n .max(50)\n .regex(/^[a-z0-9_]+$/),\n title: z.string().max(100),\n description: z.string().max(500),\n kind: z.enum(['layer', 'held']),\n category: z.string().max(30),\n unlock: z.array(RpgUnlockSchema).min(1), // ANY of these unlocks the item\n enabled: z.boolean(),\n});\nexport type RpgItem = z.infer<typeof RpgItemSchema>;\nexport type RpgUnlock = z.infer<typeof RpgUnlockSchema>;\n\n/**\n * The Sifa item catalog for rpg.actor. PLACEHOLDER titles/categories until\n * rpg.actor transfers the real item cores.\n */\nexport const RPG_ITEMS: readonly RpgItem[] = [\n {\n id: 'sifa_power_suit',\n title: 'Power Suit',\n description: '',\n kind: 'layer',\n category: 'tops',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.position' }],\n },\n {\n id: 'sifa_weekend_shirt',\n title: 'Weekend Shirt',\n description: '',\n kind: 'layer',\n category: 'tops',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.volunteering' }],\n },\n {\n id: 'sifa_speaker_mic',\n title: 'Speaker Mic',\n description: '',\n kind: 'held',\n category: 'righthand',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.presentation' }],\n },\n {\n id: 'sifa_school_books',\n title: 'School Books',\n description: '',\n kind: 'held',\n category: 'lefthand',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.education' }],\n },\n {\n id: 'sifa_doctoral_cap',\n title: 'Doctoral Cap',\n description: '',\n kind: 'layer',\n category: 'headwear',\n enabled: true,\n unlock: [{ kind: 'hasDoctorate' }],\n },\n {\n id: 'sifa_lab_coat',\n title: 'Lab Coat',\n description: '',\n kind: 'layer',\n category: 'tops',\n enabled: true,\n unlock: [{ kind: 'hasExternalAccount', platforms: ['orcid'] }],\n },\n {\n id: 'sifa_dev_hoodie',\n title: 'Dev Hoodie',\n description: '',\n kind: 'layer',\n category: 'tops',\n enabled: true,\n unlock: [\n { kind: 'hasExternalAccount', platforms: ['github'] },\n { kind: 'usesApp', appId: 'tangled' },\n ],\n },\n];\n","import { RPG_ITEMS, type RpgItem, type RpgUnlock } from './catalog.js';\n\n/**\n * Profile signals the unlock rules are checked against. Callers must pass\n * lowercase platform codes (e.g. 'github', 'orcid') and registry app ids (e.g. 'tangled').\n */\nexport interface RpgUnlockSignals {\n collections: readonly string[];\n externalPlatforms: readonly string[];\n activeAppIds: readonly string[];\n hasDoctorate: boolean;\n}\n\n/** One enabled catalog item and whether the signals earn it. */\nexport interface RpgUnlockResult {\n item: RpgItem;\n earned: boolean;\n}\n\nfunction matches(u: RpgUnlock, s: RpgUnlockSignals): boolean {\n switch (u.kind) {\n case 'hasRecord':\n return s.collections.includes(u.collection);\n case 'hasExternalAccount':\n return u.platforms.some((p) => s.externalPlatforms.includes(p));\n case 'usesApp':\n return s.activeAppIds.includes(u.appId);\n case 'hasDoctorate':\n return s.hasDoctorate;\n }\n}\n\n/** Evaluate every enabled item (ANY matching unlock earns it); disabled items are omitted. */\nexport function evaluateRpgUnlocks(\n signals: RpgUnlockSignals,\n items: readonly RpgItem[] = RPG_ITEMS,\n): RpgUnlockResult[] {\n return items\n .filter((item) => item.enabled)\n .map((item) => ({ item, earned: item.unlock.some((u) => matches(u, signals)) }));\n}\n"]}
1
+ {"version":3,"sources":["../../src/rpg/catalog.ts","../../src/rpg/unlocks.ts","../../src/rpg/links.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\nexport const RpgUnlockSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('hasRecord'),\n collection: z.enum([\n 'id.sifa.profile.position',\n 'id.sifa.profile.volunteering',\n 'id.sifa.profile.presentation',\n 'id.sifa.profile.education',\n ]),\n }),\n z.object({ kind: z.literal('hasExternalAccount'), platforms: z.array(z.string()).min(1) }),\n z.object({ kind: z.literal('usesApp'), appId: z.string().min(1) }),\n z.object({ kind: z.literal('hasDoctorate') }),\n]);\n\n/** CIDv1 (raw codec, sha2-256, base32) as used for rpg.actor image blobs. */\nexport const RPG_CID_REGEX = /^bafkrei[a-z2-7]{52}$/;\n\nexport const RpgItemSchema = z.object({\n /** Lowercase `[a-z0-9_]` only: the id is embedded in an AT Protocol record key. */\n id: z\n .string()\n .min(1)\n .max(50)\n .regex(/^[a-z0-9_]+$/),\n title: z.string().max(100),\n description: z.string().max(500),\n kind: z.enum(['layer', 'held', 'overlay']),\n category: z.string().max(30),\n /** rpg.actor channels the item is offered in (optional). */\n channels: z.array(z.string().min(1)).optional(),\n /** Full-size sprite asset (CIDv1, raw codec, base32). */\n assetCid: z.string().regex(RPG_CID_REGEX),\n /** Inventory icon (CIDv1, raw codec, base32). */\n iconCid: z.string().regex(RPG_CID_REGEX),\n unlock: z.array(RpgUnlockSchema).min(1), // ANY of these unlocks the item\n enabled: z.boolean(),\n});\nexport type RpgItem = z.infer<typeof RpgItemSchema>;\nexport type RpgUnlock = z.infer<typeof RpgUnlockSchema>;\n\n/**\n * The Sifa item catalog for rpg.actor. Ids, titles, descriptions, kinds,\n * categories, channels and image CIDs come from rpg.actor's item cores.\n */\nexport const RPG_ITEMS: readonly RpgItem[] = [\n {\n id: 'sifa_suit',\n title: 'Sifa Suit',\n description: 'Sharp power suit for anyone with a job on their profile',\n kind: 'overlay',\n category: 'costume',\n channels: ['main'],\n assetCid: 'bafkreibortlffvfzkdcuqdpoubczuno7ohnvfwqhefe4h4s36eooe4njgu',\n iconCid: 'bafkreifo7vojbr4i6uvsthj2hbczoqwmrn3ovysrskvxlxw6fvkbswm2ae',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.position' }],\n },\n {\n id: 'speaker_mic',\n title: 'Speaker Mic',\n description: \"A presentation mic, so you can drop it on 'em\",\n kind: 'held',\n category: 'righthand',\n channels: ['main'],\n assetCid: 'bafkreibr4kgeijc5naecf7l4awfv3omph4ngjmjb36qkfnk2sdo6l45ck4',\n iconCid: 'bafkreidnkirbw4nwiro3ocrn5nk66uxf3dhcoy5pojunisvs7so55u3j3q',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.presentation' }],\n },\n {\n id: 'strapped_books',\n title: 'Strapped Books',\n description: 'Knowledge is power, better come strapped',\n kind: 'held',\n category: 'righthand',\n channels: ['main'],\n assetCid: 'bafkreieofltl6427jy3n6dfv63phublalv6nq2hcs36qnyxz33ta6u6yqi',\n iconCid: 'bafkreiavywpv4sgw7gnkzq5gw3nq6yihaucdexpsvgko26q6jq6u6grjpi',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.education' }],\n },\n {\n id: 'dev_hoodie',\n title: 'Dev Hoodie',\n description: 'Snug hoodie for when you enter total code mode',\n kind: 'layer',\n category: 'tops',\n channels: ['main', 'sub1'],\n assetCid: 'bafkreigmrqp5kd6lytqcen2mypuv6dqonrdfbi2ngxhq3uqozk63yi7hoy',\n iconCid: 'bafkreigjwti3w43ta6gy2c75qtdnuvovfohjtv2febbd6hdhpri4tupbem',\n enabled: true,\n unlock: [\n { kind: 'hasExternalAccount', platforms: ['github'] },\n { kind: 'usesApp', appId: 'tangled' },\n ],\n },\n {\n id: 'doctoral_cap',\n title: 'Doctoral Cap',\n description: 'Took so many long years to earn this hat',\n kind: 'layer',\n category: 'headwear',\n channels: ['main'],\n assetCid: 'bafkreic7pvfpb7fjgooiaianrc27mh7fwj5vkicre63l6x5hrzb4w36tcq',\n iconCid: 'bafkreigqt6lmx5crj3w7vc3bvuewarzdreg2doxyeerbxmhljhpeshjewm',\n enabled: true,\n unlock: [{ kind: 'hasDoctorate' }],\n },\n {\n id: 'weekend_shirt',\n title: 'Weekend Shirt',\n description: 'Fun shirt to wear when work is all finished',\n kind: 'layer',\n category: 'tops',\n channels: ['main', 'sub1', 'sub2'],\n assetCid: 'bafkreigifgpwkxvftiuzbjc6c2xz4xf2iv4bznbhu364e7rhvfmhosbak4',\n iconCid: 'bafkreieguco74wkabuyhs4sz6ec35nyywr7ikaw6et4coeezphnsnqqjui',\n enabled: true,\n unlock: [{ kind: 'hasRecord', collection: 'id.sifa.profile.volunteering' }],\n },\n {\n id: 'lab_coat',\n title: 'Lab Coat',\n description: 'Scientifically proven attire',\n kind: 'layer',\n category: 'tops',\n channels: ['main'],\n assetCid: 'bafkreiby4g6fgkmi65myv7tdblgb4jvqa3kgnrxvtkxlrtme55unuie4he',\n iconCid: 'bafkreifoddxk5tobgwadib5rxwjn67iind6me3swpvw4t5rbcauc5r4syy',\n enabled: true,\n unlock: [{ kind: 'hasExternalAccount', platforms: ['orcid'] }],\n },\n];\n","import { RPG_ITEMS, type RpgItem, type RpgUnlock } from './catalog.js';\n\n/**\n * Profile signals the unlock rules are checked against. Callers must pass\n * lowercase platform codes (e.g. 'github', 'orcid') and registry app ids (e.g. 'tangled').\n */\nexport interface RpgUnlockSignals {\n collections: readonly string[];\n externalPlatforms: readonly string[];\n activeAppIds: readonly string[];\n hasDoctorate: boolean;\n}\n\n/** One enabled catalog item and whether the signals earn it. */\nexport interface RpgUnlockResult {\n item: RpgItem;\n earned: boolean;\n}\n\nfunction matches(u: RpgUnlock, s: RpgUnlockSignals): boolean {\n switch (u.kind) {\n case 'hasRecord':\n return s.collections.includes(u.collection);\n case 'hasExternalAccount':\n return u.platforms.some((p) => s.externalPlatforms.includes(p));\n case 'usesApp':\n return s.activeAppIds.includes(u.appId);\n case 'hasDoctorate':\n return s.hasDoctorate;\n }\n}\n\n/** Evaluate every enabled item (ANY matching unlock earns it); disabled items are omitted. */\nexport function evaluateRpgUnlocks(\n signals: RpgUnlockSignals,\n items: readonly RpgItem[] = RPG_ITEMS,\n): RpgUnlockResult[] {\n return items\n .filter((item) => item.enabled)\n .map((item) => ({ item, earned: item.unlock.some((u) => matches(u, signals)) }));\n}\n","/** Base URL of rpg.actor. */\nexport const RPG_ACTOR_URL = 'https://rpg.actor';\n\n/**\n * Record key of the `equipment.rpg.give` Sifa writes for an item. rpg.actor\n * stores the accepted `equipment.rpg.item` under the same key, so this also\n * identifies the item in the player's own account.\n *\n * The DID is used as-is: AT Protocol record keys allow `A-Za-z0-9 . - _ : ~`\n * (https://atproto.com/specs/record-key), so the colons in `did:plc:` are\n * valid. The format is already live in written gift records; do not change it.\n */\nexport function rpgGiveRkey(itemId: string, recipientDid: string): string {\n return `sifa-${itemId}-${recipientDid}`;\n}\n\n/** The player's character page on rpg.actor, where pending gifts can be accepted. */\nexport function rpgActorCharacterUrl(handleOrDid: string): string {\n return `${RPG_ACTOR_URL}/${encodeURIComponent(handleOrDid.replace(/^@+/, ''))}`;\n}\n\n/** Deep link that opens the Wear action for an accepted Sifa item on the character page. */\nexport function rpgActorWearUrl(handleOrDid: string, itemId: string, recipientDid: string): string {\n return `${rpgActorCharacterUrl(handleOrDid)}?wear=${encodeURIComponent(rpgGiveRkey(itemId, recipientDid))}`;\n}\n"]}