@singi-labs/sifa-sdk 0.12.29 → 0.12.31

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 (35) hide show
  1. package/dist/{adult-content-DdY7S5nN.d.cts → adult-content-BHIB4rxu.d.cts} +8 -0
  2. package/dist/{adult-content-DdY7S5nN.d.ts → adult-content-BHIB4rxu.d.ts} +8 -0
  3. package/dist/{index-ipyzSVry.d.cts → index-C95t5Gg5.d.cts} +2 -2
  4. package/dist/{index-wMuFhu7d.d.ts → index-CZAG8uku.d.ts} +3 -3
  5. package/dist/{index-ZXWW6RsR.d.cts → index-O2oJHRq0.d.cts} +3 -3
  6. package/dist/{index-B6GHpvcg.d.ts → index-ZoAKneCP.d.ts} +2 -2
  7. package/dist/index.cjs +132 -1
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +36 -4
  10. package/dist/index.d.ts +36 -4
  11. package/dist/index.js +129 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/{org-Dme1VvNa.d.cts → org-DWAqK-TV.d.cts} +1 -1
  14. package/dist/{org-CLRdUB1W.d.ts → org-Octhy3vS.d.ts} +1 -1
  15. package/dist/{profile-summary-DjRf3Snf.d.cts → profile-summary-DsaEk_GD.d.cts} +1 -1
  16. package/dist/{profile-summary-B9SuY-EU.d.ts → profile-summary-sWTKu58A.d.ts} +1 -1
  17. package/dist/query/fetchers/index.d.cts +4 -4
  18. package/dist/query/fetchers/index.d.ts +4 -4
  19. package/dist/query/hooks/index.d.cts +3 -3
  20. package/dist/query/hooks/index.d.ts +3 -3
  21. package/dist/query/index.d.cts +6 -6
  22. package/dist/query/index.d.ts +6 -6
  23. package/dist/schemas/index.cjs +1 -0
  24. package/dist/schemas/index.cjs.map +1 -1
  25. package/dist/schemas/index.d.cts +4 -1
  26. package/dist/schemas/index.d.ts +4 -1
  27. package/dist/schemas/index.js +1 -0
  28. package/dist/schemas/index.js.map +1 -1
  29. package/dist/schemas/write/index.cjs +40 -1
  30. package/dist/schemas/write/index.cjs.map +1 -1
  31. package/dist/schemas/write/index.d.cts +1 -0
  32. package/dist/schemas/write/index.d.ts +1 -0
  33. package/dist/schemas/write/index.js +40 -1
  34. package/dist/schemas/write/index.js.map +1 -1
  35. package/package.json +1 -1
package/dist/index.d.cts CHANGED
@@ -1,9 +1,9 @@
1
- import { b as ProfileSkill, c as ProfilePresentationDelivery, L as LocationValue, d as PdsProviderInfo, e as Profile, f as ProfilePosition, g as ProfileCertification, h as ProfileEducation, i as ProfileHonor, j as ProfileLanguage, k as ProfileProject, l as ProfilePublication, m as ProfileInvolvement } from './adult-content-DdY7S5nN.cjs';
2
- export { n as ADULT_CONTENT_LABELS, o as ActiveApp, p as ActiveAppView, a as ActivityLabel, A as AdultContentLabel, q as AtfundLinkView, r as CertificationView, C as CoSpeaker, s as CoSpeakerView, t as ContributorView, u as CourseView, D as DurationView, v as EducationView, w as Endorsement, x as EndorsementData, E as ExternalAccount, y as ExternalAccountKeytraceClaim, z as ExternalAccountView, F as FeedItem, H as HonorView, I as IndustryDomain, B as InvolvementLinkView, G as InvolvementView, J as LanguageProficiency, K as LanguageView, O as OrgAddressView, M as OrgFloorVerdict, N as OrgLinkView, Q as OrgProfileView, R as PositionView, T as PresentationDeliveryView, U as PresentationLinkView, V as PresentationView, W as ProfileCourse, X as ProfileIndustry, Y as ProfileInvolvementLink, Z as ProfileLocation, _ as ProfileLocationView, $ as ProfileOverrideSource, a0 as ProfilePresentation, P as ProfileView, a1 as ProfileVolunteering, a2 as ProjectView, a3 as PublicationContributor, a4 as PublicationView, a5 as RecognizedEntity, a6 as SkillRef, S as SkillSuggestion, a7 as SkillView, a8 as TrustStat, a9 as VerifiedAccount, aa as VolunteeringView, ab as hasAdultContent } from './adult-content-DdY7S5nN.cjs';
1
+ import { b as ProfileSkill, c as ProfilePresentationDelivery, L as LocationValue, d as PdsProviderInfo, e as Profile, f as ProfilePosition, g as ProfileCertification, h as ProfileEducation, i as ProfileHonor, j as ProfileLanguage, k as ProfileProject, l as ProfilePublication, m as ProfileInvolvement } from './adult-content-BHIB4rxu.cjs';
2
+ export { n as ADULT_CONTENT_LABELS, o as ActiveApp, p as ActiveAppView, a as ActivityLabel, A as AdultContentLabel, q as AtfundLinkView, r as CertificationView, C as CoSpeaker, s as CoSpeakerView, t as ContributorView, u as CourseView, D as DurationView, v as EducationView, w as Endorsement, x as EndorsementData, E as ExternalAccount, y as ExternalAccountKeytraceClaim, z as ExternalAccountView, F as FeedItem, H as HonorView, I as IndustryDomain, B as InvolvementLinkView, G as InvolvementView, J as LanguageProficiency, K as LanguageView, O as OrgAddressView, M as OrgFloorVerdict, N as OrgLinkView, Q as OrgProfileView, R as PositionView, T as PresentationDeliveryView, U as PresentationLinkView, V as PresentationView, W as ProfileCourse, X as ProfileIndustry, Y as ProfileInvolvementLink, Z as ProfileLocation, _ as ProfileLocationView, $ as ProfileOverrideSource, a0 as ProfilePresentation, P as ProfileView, a1 as ProfileVolunteering, a2 as ProjectView, a3 as PublicationContributor, a4 as PublicationView, a5 as RecognizedEntity, a6 as SkillRef, S as SkillSuggestion, a7 as SkillView, a8 as TrustStat, a9 as VerifiedAccount, aa as VolunteeringView, ab as hasAdultContent } from './adult-content-BHIB4rxu.cjs';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, OrgProfileRecord } from './schemas/index.cjs';
4
4
  export { ArtifactLink, ArtifactLinkSchema, BlobRef, BlobRefSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, OrgEmploymentAttestationRecord, OrgEmploymentAttestationRecordSchema, OrgProfileRecordSchema, PROFILE_INVOLVEMENT_NSID, PresentationDurationSchema, PresentationLink, PresentationLinkSchema, ProfileCertificationRecord, ProfileCertificationRecordSchema, ProfileCourseRecord, ProfileCourseRecordSchema, ProfileEducationRecord, ProfileEducationRecordSchema, ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, ProfileHonorRecord, ProfileHonorRecordSchema, ProfileInvolvementRecord, ProfileInvolvementRecordSchema, ProfileLanguageRecord, ProfileLanguageRecordSchema, ProfilePositionRecord, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecord, ProfileProjectRecordSchema, ProfilePublicationRecord, ProfilePublicationRecordSchema, ProfileSelfRecord, ProfileSelfRecordSchema, ProfileSkillRecord, ProfileSkillRecordSchema, ProfileVolunteeringRecord, ProfileVolunteeringRecordSchema, PublicationAuthor, PublicationAuthorSchema, atUriSchema, cidSchema, datetimeSchema, didSchema, externalRecordRefSchema, languageTagSchema, makeGraphFollowRecordSchema, maxGraphemes, partialDateSchema, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.cjs';
5
5
  import { z } from 'zod';
6
- export { P as ProfileSummary, S as SummarizeProfileViewOptions, s as summarizeProfileView } from './profile-summary-DjRf3Snf.cjs';
6
+ export { P as ProfileSummary, S as SummarizeProfileViewOptions, s as summarizeProfileView } from './profile-summary-DsaEk_GD.cjs';
7
7
  import { E as EntitySearchResult } from './feed-D2ZV8Eaj.cjs';
8
8
  export { A as AtmosphereFeedItem, d as AtmosphereFeedItemSchema, e as EntityImportSearchResponse, f as EntityImportSearchResponseSchema, g as EntityMintDomainResponse, h as EntityMintDomainResponseSchema, i as EntityResolveDomainRequest, j as EntityResolveDomainRequestSchema, k as EntityResolveDomainResponse, l as EntityResolveDomainResponseSchema, m as EntitySearchResponse, n as EntitySearchResponseSchema, o as EntitySearchResultSchema, p as EntitySelectRequest, q as EntitySelectRequestSchema, r as EntitySelectResponse, s as EntitySelectResponseSchema, t as FEATURE_FLAGS, b as FeatureAllowlistEntry, u as FeatureAllowlistEntrySchema, c as FeatureFlag, v as FeedActor, w as FeedActorSchema, x as FeedCursor, y as FollowFeedItem, z as FollowFeedItemSchema, F as FollowFeedPage, B as FollowFeedPageSchema, a as FollowProfileItem, C as FollowProfilePage, D as FollowProfilePageSchema, G as FollowProfileSchema, S as SifaFeedItem, H as SifaFeedItemSchema, I as decodeFeedCursor, J as encodeFeedCursor } from './feed-D2ZV8Eaj.cjs';
9
9
 
@@ -217,6 +217,16 @@ declare function dedupeSkills(skills: ProfileSkill[]): MergedProfileSkill[];
217
217
  * then alphabetical by name. Empty groups are omitted.
218
218
  */
219
219
  declare function groupSkillsByCategory<T extends ProfileSkill>(skills: T[]): [string, T[]][];
220
+ /**
221
+ * Groups skills by their freeform `subCategory` label (#305), for renderers
222
+ * that present skills in the user's own groups (Frontend, Backend, etc.).
223
+ *
224
+ * Labels are matched case-insensitively and surfaced under the first-seen
225
+ * casing. Groups are ordered alphabetically by label; skills with no
226
+ * `subCategory` collect under a trailing `null` bucket (omitted when empty).
227
+ * Within each group: endorsementCount desc, then alphabetical by name.
228
+ */
229
+ declare function groupSkillsBySubCategory<T extends ProfileSkill>(skills: T[]): [string | null, T[]][];
220
230
 
221
231
  /**
222
232
  * App-category taxonomy for AT Protocol apps tracked by Sifa.
@@ -2041,6 +2051,28 @@ interface InvolvementGroup {
2041
2051
  */
2042
2052
  declare function groupInvolvementByHeading(items: ProfileInvolvement[]): InvolvementGroup[];
2043
2053
 
2054
+ /**
2055
+ * Canonical metadata for the votable Sifa roadmap items: a one-line description
2056
+ * and the sifa-workspace issue(s) tracking each item. Single source of truth
2057
+ * shared by the sifa-web /roadmap page (labels come from i18n; description and
2058
+ * issue links come from here) and the sifa-api operator script that writes the
2059
+ * matching userinput.app discussion bodies, so the two surfaces cannot drift.
2060
+ *
2061
+ * Keys match VOTABLE_KEYS in sifa-api and the roadmap item keys in sifa-web.
2062
+ * Descriptions are product voice.
2063
+ */
2064
+ /** Repository whose issues track roadmap items. */
2065
+ declare const ROADMAP_ISSUES_REPO = "singi-labs/sifa-workspace";
2066
+ interface RoadmapItemMeta {
2067
+ /** One-line description of the item, in product voice. */
2068
+ description: string;
2069
+ /** sifa-workspace issue numbers tracking this item (may be empty). */
2070
+ issues: number[];
2071
+ }
2072
+ declare const ROADMAP_ITEM_META: Record<string, RoadmapItemMeta>;
2073
+ /** The GitHub issue URL for a sifa-workspace issue number. */
2074
+ declare function roadmapIssueUrl(issue: number): string;
2075
+
2044
2076
  /**
2045
2077
  * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.
2046
2078
  *
@@ -2050,4 +2082,4 @@ declare function groupInvolvementByHeading(items: ProfileInvolvement[]): Involve
2050
2082
  */
2051
2083
  declare const SIFA_SDK_VERSION: string;
2052
2084
 
2053
- export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type CompanyFirmographics, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmbedResult, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type Publisher, type RgbColor, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, type SectionGroupId, type SectionId, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardSubject, type StreamCardVM, type StreamExternalLink, type StreamGeo, type StreamMedia, type StreamMediaBase, type StreamMediaBlob, type StreamMediaResolved, type StreamRichSegment, type StreamSource, type StreamTheme, type StreamVerb, type TierMeta, type ToStreamCardVMOptions, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, hoistPrimary, isAppCategory, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isRegistrableDomainHandle, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
2085
+ export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type CompanyFirmographics, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmbedResult, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type Publisher, ROADMAP_ISSUES_REPO, ROADMAP_ITEM_META, type RgbColor, type RoadmapItemMeta, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, type SectionGroupId, type SectionId, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardSubject, type StreamCardVM, type StreamExternalLink, type StreamGeo, type StreamMedia, type StreamMediaBase, type StreamMediaBlob, type StreamMediaResolved, type StreamRichSegment, type StreamSource, type StreamTheme, type StreamVerb, type TierMeta, type ToStreamCardVMOptions, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, groupSkillsBySubCategory, hoistPrimary, isAppCategory, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isRegistrableDomainHandle, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { b as ProfileSkill, c as ProfilePresentationDelivery, L as LocationValue, d as PdsProviderInfo, e as Profile, f as ProfilePosition, g as ProfileCertification, h as ProfileEducation, i as ProfileHonor, j as ProfileLanguage, k as ProfileProject, l as ProfilePublication, m as ProfileInvolvement } from './adult-content-DdY7S5nN.js';
2
- export { n as ADULT_CONTENT_LABELS, o as ActiveApp, p as ActiveAppView, a as ActivityLabel, A as AdultContentLabel, q as AtfundLinkView, r as CertificationView, C as CoSpeaker, s as CoSpeakerView, t as ContributorView, u as CourseView, D as DurationView, v as EducationView, w as Endorsement, x as EndorsementData, E as ExternalAccount, y as ExternalAccountKeytraceClaim, z as ExternalAccountView, F as FeedItem, H as HonorView, I as IndustryDomain, B as InvolvementLinkView, G as InvolvementView, J as LanguageProficiency, K as LanguageView, O as OrgAddressView, M as OrgFloorVerdict, N as OrgLinkView, Q as OrgProfileView, R as PositionView, T as PresentationDeliveryView, U as PresentationLinkView, V as PresentationView, W as ProfileCourse, X as ProfileIndustry, Y as ProfileInvolvementLink, Z as ProfileLocation, _ as ProfileLocationView, $ as ProfileOverrideSource, a0 as ProfilePresentation, P as ProfileView, a1 as ProfileVolunteering, a2 as ProjectView, a3 as PublicationContributor, a4 as PublicationView, a5 as RecognizedEntity, a6 as SkillRef, S as SkillSuggestion, a7 as SkillView, a8 as TrustStat, a9 as VerifiedAccount, aa as VolunteeringView, ab as hasAdultContent } from './adult-content-DdY7S5nN.js';
1
+ import { b as ProfileSkill, c as ProfilePresentationDelivery, L as LocationValue, d as PdsProviderInfo, e as Profile, f as ProfilePosition, g as ProfileCertification, h as ProfileEducation, i as ProfileHonor, j as ProfileLanguage, k as ProfileProject, l as ProfilePublication, m as ProfileInvolvement } from './adult-content-BHIB4rxu.js';
2
+ export { n as ADULT_CONTENT_LABELS, o as ActiveApp, p as ActiveAppView, a as ActivityLabel, A as AdultContentLabel, q as AtfundLinkView, r as CertificationView, C as CoSpeaker, s as CoSpeakerView, t as ContributorView, u as CourseView, D as DurationView, v as EducationView, w as Endorsement, x as EndorsementData, E as ExternalAccount, y as ExternalAccountKeytraceClaim, z as ExternalAccountView, F as FeedItem, H as HonorView, I as IndustryDomain, B as InvolvementLinkView, G as InvolvementView, J as LanguageProficiency, K as LanguageView, O as OrgAddressView, M as OrgFloorVerdict, N as OrgLinkView, Q as OrgProfileView, R as PositionView, T as PresentationDeliveryView, U as PresentationLinkView, V as PresentationView, W as ProfileCourse, X as ProfileIndustry, Y as ProfileInvolvementLink, Z as ProfileLocation, _ as ProfileLocationView, $ as ProfileOverrideSource, a0 as ProfilePresentation, P as ProfileView, a1 as ProfileVolunteering, a2 as ProjectView, a3 as PublicationContributor, a4 as PublicationView, a5 as RecognizedEntity, a6 as SkillRef, S as SkillSuggestion, a7 as SkillView, a8 as TrustStat, a9 as VerifiedAccount, aa as VolunteeringView, ab as hasAdultContent } from './adult-content-BHIB4rxu.js';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, OrgProfileRecord } from './schemas/index.js';
4
4
  export { ArtifactLink, ArtifactLinkSchema, BlobRef, BlobRefSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, OrgEmploymentAttestationRecord, OrgEmploymentAttestationRecordSchema, OrgProfileRecordSchema, PROFILE_INVOLVEMENT_NSID, PresentationDurationSchema, PresentationLink, PresentationLinkSchema, ProfileCertificationRecord, ProfileCertificationRecordSchema, ProfileCourseRecord, ProfileCourseRecordSchema, ProfileEducationRecord, ProfileEducationRecordSchema, ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, ProfileHonorRecord, ProfileHonorRecordSchema, ProfileInvolvementRecord, ProfileInvolvementRecordSchema, ProfileLanguageRecord, ProfileLanguageRecordSchema, ProfilePositionRecord, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecord, ProfileProjectRecordSchema, ProfilePublicationRecord, ProfilePublicationRecordSchema, ProfileSelfRecord, ProfileSelfRecordSchema, ProfileSkillRecord, ProfileSkillRecordSchema, ProfileVolunteeringRecord, ProfileVolunteeringRecordSchema, PublicationAuthor, PublicationAuthorSchema, atUriSchema, cidSchema, datetimeSchema, didSchema, externalRecordRefSchema, languageTagSchema, makeGraphFollowRecordSchema, maxGraphemes, partialDateSchema, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.js';
5
5
  import { z } from 'zod';
6
- export { P as ProfileSummary, S as SummarizeProfileViewOptions, s as summarizeProfileView } from './profile-summary-B9SuY-EU.js';
6
+ export { P as ProfileSummary, S as SummarizeProfileViewOptions, s as summarizeProfileView } from './profile-summary-sWTKu58A.js';
7
7
  import { E as EntitySearchResult } from './feed-D2ZV8Eaj.js';
8
8
  export { A as AtmosphereFeedItem, d as AtmosphereFeedItemSchema, e as EntityImportSearchResponse, f as EntityImportSearchResponseSchema, g as EntityMintDomainResponse, h as EntityMintDomainResponseSchema, i as EntityResolveDomainRequest, j as EntityResolveDomainRequestSchema, k as EntityResolveDomainResponse, l as EntityResolveDomainResponseSchema, m as EntitySearchResponse, n as EntitySearchResponseSchema, o as EntitySearchResultSchema, p as EntitySelectRequest, q as EntitySelectRequestSchema, r as EntitySelectResponse, s as EntitySelectResponseSchema, t as FEATURE_FLAGS, b as FeatureAllowlistEntry, u as FeatureAllowlistEntrySchema, c as FeatureFlag, v as FeedActor, w as FeedActorSchema, x as FeedCursor, y as FollowFeedItem, z as FollowFeedItemSchema, F as FollowFeedPage, B as FollowFeedPageSchema, a as FollowProfileItem, C as FollowProfilePage, D as FollowProfilePageSchema, G as FollowProfileSchema, S as SifaFeedItem, H as SifaFeedItemSchema, I as decodeFeedCursor, J as encodeFeedCursor } from './feed-D2ZV8Eaj.js';
9
9
 
@@ -217,6 +217,16 @@ declare function dedupeSkills(skills: ProfileSkill[]): MergedProfileSkill[];
217
217
  * then alphabetical by name. Empty groups are omitted.
218
218
  */
219
219
  declare function groupSkillsByCategory<T extends ProfileSkill>(skills: T[]): [string, T[]][];
220
+ /**
221
+ * Groups skills by their freeform `subCategory` label (#305), for renderers
222
+ * that present skills in the user's own groups (Frontend, Backend, etc.).
223
+ *
224
+ * Labels are matched case-insensitively and surfaced under the first-seen
225
+ * casing. Groups are ordered alphabetically by label; skills with no
226
+ * `subCategory` collect under a trailing `null` bucket (omitted when empty).
227
+ * Within each group: endorsementCount desc, then alphabetical by name.
228
+ */
229
+ declare function groupSkillsBySubCategory<T extends ProfileSkill>(skills: T[]): [string | null, T[]][];
220
230
 
221
231
  /**
222
232
  * App-category taxonomy for AT Protocol apps tracked by Sifa.
@@ -2041,6 +2051,28 @@ interface InvolvementGroup {
2041
2051
  */
2042
2052
  declare function groupInvolvementByHeading(items: ProfileInvolvement[]): InvolvementGroup[];
2043
2053
 
2054
+ /**
2055
+ * Canonical metadata for the votable Sifa roadmap items: a one-line description
2056
+ * and the sifa-workspace issue(s) tracking each item. Single source of truth
2057
+ * shared by the sifa-web /roadmap page (labels come from i18n; description and
2058
+ * issue links come from here) and the sifa-api operator script that writes the
2059
+ * matching userinput.app discussion bodies, so the two surfaces cannot drift.
2060
+ *
2061
+ * Keys match VOTABLE_KEYS in sifa-api and the roadmap item keys in sifa-web.
2062
+ * Descriptions are product voice.
2063
+ */
2064
+ /** Repository whose issues track roadmap items. */
2065
+ declare const ROADMAP_ISSUES_REPO = "singi-labs/sifa-workspace";
2066
+ interface RoadmapItemMeta {
2067
+ /** One-line description of the item, in product voice. */
2068
+ description: string;
2069
+ /** sifa-workspace issue numbers tracking this item (may be empty). */
2070
+ issues: number[];
2071
+ }
2072
+ declare const ROADMAP_ITEM_META: Record<string, RoadmapItemMeta>;
2073
+ /** The GitHub issue URL for a sifa-workspace issue number. */
2074
+ declare function roadmapIssueUrl(issue: number): string;
2075
+
2044
2076
  /**
2045
2077
  * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.
2046
2078
  *
@@ -2050,4 +2082,4 @@ declare function groupInvolvementByHeading(items: ProfileInvolvement[]): Involve
2050
2082
  */
2051
2083
  declare const SIFA_SDK_VERSION: string;
2052
2084
 
2053
- export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type CompanyFirmographics, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmbedResult, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type Publisher, type RgbColor, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, type SectionGroupId, type SectionId, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardSubject, type StreamCardVM, type StreamExternalLink, type StreamGeo, type StreamMedia, type StreamMediaBase, type StreamMediaBlob, type StreamMediaResolved, type StreamRichSegment, type StreamSource, type StreamTheme, type StreamVerb, type TierMeta, type ToStreamCardVMOptions, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, hoistPrimary, isAppCategory, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isRegistrableDomainHandle, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
2085
+ export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type CompanyFirmographics, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmbedResult, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type Publisher, ROADMAP_ISSUES_REPO, ROADMAP_ITEM_META, type RgbColor, type RoadmapItemMeta, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, type SectionGroupId, type SectionId, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardSubject, type StreamCardVM, type StreamExternalLink, type StreamGeo, type StreamMedia, type StreamMediaBase, type StreamMediaBlob, type StreamMediaResolved, type StreamRichSegment, type StreamSource, type StreamTheme, type StreamVerb, type TierMeta, type ToStreamCardVMOptions, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, groupSkillsBySubCategory, hoistPrimary, isAppCategory, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isRegistrableDomainHandle, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
package/dist/index.js CHANGED
@@ -862,6 +862,10 @@ function dedupeSkills(skills) {
862
862
  }
863
863
  existing.mergedRkeys.push(skill.rkey);
864
864
  if (!existing.category && skill.category) existing.category = skill.category;
865
+ const incomingSubCategory = skill.subCategory?.trim();
866
+ if (incomingSubCategory && !existing.subCategory?.trim()) {
867
+ existing.subCategory = incomingSubCategory;
868
+ }
865
869
  if ((skill.endorsementCount ?? 0) > (existing.endorsementCount ?? 0)) {
866
870
  existing.endorsementCount = skill.endorsementCount;
867
871
  }
@@ -897,6 +901,32 @@ function groupSkillsByCategory(skills) {
897
901
  if (otherGroup?.length) ordered.push(["other", otherGroup]);
898
902
  return ordered;
899
903
  }
904
+ function groupSkillsBySubCategory(skills) {
905
+ const labels = /* @__PURE__ */ new Map();
906
+ const grouped = /* @__PURE__ */ new Map();
907
+ for (const skill of skills) {
908
+ const raw = skill.subCategory?.trim();
909
+ const key = raw ? raw.toLowerCase() : "";
910
+ if (raw && !labels.has(key)) labels.set(key, raw);
911
+ const bucket = grouped.get(key) ?? [];
912
+ bucket.push(skill);
913
+ grouped.set(key, bucket);
914
+ }
915
+ const sortByRank = (groupSkills) => [...groupSkills].sort((a, b) => {
916
+ const countDiff = (b.endorsementCount ?? 0) - (a.endorsementCount ?? 0);
917
+ if (countDiff !== 0) return countDiff;
918
+ return a.name.localeCompare(b.name);
919
+ });
920
+ const ordered = [];
921
+ for (const key of [...labels.keys()].sort((a, b) => a.localeCompare(b))) {
922
+ const label = labels.get(key);
923
+ const group = grouped.get(key);
924
+ if (label && group?.length) ordered.push([label, sortByRank(group)]);
925
+ }
926
+ const ungrouped = grouped.get("");
927
+ if (ungrouped?.length) ordered.push([null, sortByRank(ungrouped)]);
928
+ return ordered;
929
+ }
900
930
 
901
931
  // src/taxonomy/app-categories.ts
902
932
  var APP_CATEGORIES = {
@@ -4674,6 +4704,7 @@ var ProfileSelfRecordSchema = z.object({
4674
4704
  var ProfileSkillRecordSchema = z.object({
4675
4705
  name: z.string().min(1).refine(maxGraphemes(64)).max(640),
4676
4706
  category: z.string().optional(),
4707
+ subCategory: z.string().refine(maxGraphemes(64)).max(640).optional(),
4677
4708
  createdAt: datetimeSchema
4678
4709
  });
4679
4710
  var ProfileVolunteeringRecordSchema = z.object({
@@ -4690,9 +4721,105 @@ var ProfileVolunteeringRecordSchema = z.object({
4690
4721
  createdAt: datetimeSchema
4691
4722
  });
4692
4723
 
4724
+ // src/roadmap/index.ts
4725
+ var ROADMAP_ISSUES_REPO = "singi-labs/sifa-workspace";
4726
+ var ROADMAP_ITEM_META = {
4727
+ endorsementsAttestations: {
4728
+ description: "Let colleagues vouch for your skills and experience, recorded as attestations you carry with you.",
4729
+ issues: [3, 166]
4730
+ },
4731
+ notifications: {
4732
+ description: "Get told when someone endorses you, links a company, or acts on your profile.",
4733
+ issues: [158]
4734
+ },
4735
+ verifiedConnections: {
4736
+ description: "Confirm real working relationships, not just follows.",
4737
+ issues: []
4738
+ },
4739
+ profileAnalytics: {
4740
+ description: "See who views your profile and how people find you.",
4741
+ issues: []
4742
+ },
4743
+ jobProfiles: {
4744
+ description: "Structured work history that stays with your identity across the network.",
4745
+ issues: [102]
4746
+ },
4747
+ eventRsvp: {
4748
+ description: "Show the talks and events you're attending or speaking at.",
4749
+ issues: [214]
4750
+ },
4751
+ companyPages: {
4752
+ description: "Claimable organization pages that link the people who work there.",
4753
+ issues: [73]
4754
+ },
4755
+ advancedSearch: {
4756
+ description: "Search across categories, with filters and forgiving name matching.",
4757
+ issues: [5]
4758
+ },
4759
+ multiAccountLinking: {
4760
+ description: "Tie several atproto accounts to one professional identity.",
4761
+ issues: [8]
4762
+ },
4763
+ mobileApps: {
4764
+ description: "Native iOS and Android apps.",
4765
+ issues: [114]
4766
+ },
4767
+ atmosphereStream: {
4768
+ description: "One feed that gathers your activity from across the atproto network.",
4769
+ issues: [7, 12]
4770
+ },
4771
+ localizationMultiLanguage: {
4772
+ description: "The interface in your own language.",
4773
+ issues: [218]
4774
+ },
4775
+ rssFediverseIngestion: {
4776
+ description: "Pull in posts from RSS feeds and the Fediverse.",
4777
+ issues: [111]
4778
+ },
4779
+ githubFeedIngestion: {
4780
+ description: "Bring your GitHub activity into your track record.",
4781
+ issues: [95]
4782
+ },
4783
+ compensationInformation: {
4784
+ description: "Add optional pay and compensation context to your roles.",
4785
+ issues: [81]
4786
+ },
4787
+ embedCustomization: {
4788
+ description: "Choose which fields show in your embeddable profile card.",
4789
+ issues: [117]
4790
+ },
4791
+ academicLexicon: {
4792
+ description: "Schema and features built for researchers and academics.",
4793
+ issues: [119, 148]
4794
+ },
4795
+ journalismLexicon: {
4796
+ description: "Schema and features built for journalists.",
4797
+ issues: [121]
4798
+ },
4799
+ skillEvidenceGithub: {
4800
+ description: "Back up skill claims with the languages in your GitHub repositories.",
4801
+ issues: [107]
4802
+ },
4803
+ latexCvExport: {
4804
+ description: "Export your profile as a LaTeX CV.",
4805
+ issues: [113]
4806
+ },
4807
+ jsonResumeImportExport: {
4808
+ description: "Move your profile in and out using the JSON Resume standard.",
4809
+ issues: [151]
4810
+ },
4811
+ linkedClaimsResearch: {
4812
+ description: "Exploring the LinkedClaims spec for portable, verifiable endorsements.",
4813
+ issues: [155]
4814
+ }
4815
+ };
4816
+ function roadmapIssueUrl(issue) {
4817
+ return `https://github.com/${ROADMAP_ISSUES_REPO}/issues/${issue}`;
4818
+ }
4819
+
4693
4820
  // src/index.ts
4694
- var SIFA_SDK_VERSION = "0.12.29";
4821
+ var SIFA_SDK_VERSION = "0.12.31";
4695
4822
 
4696
- export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ADULT_CONTENT_LABELS, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, ArtifactLinkSchema, AtmosphereFeedItemSchema, BlobRefSchema, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, DIMENSIONS_MAX_SCORE, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, EndorsementConfirmationRecordSchema, EndorsementRecordSchema, EntityImportSearchResponseSchema, EntityMintDomainResponseSchema, EntityResolveDomainRequestSchema, EntityResolveDomainResponseSchema, EntitySearchResponseSchema, EntitySearchResultSchema, EntitySelectRequestSchema, EntitySelectResponseSchema, FEATURE_FLAGS, FeatureAllowlistEntrySchema, FeedActorSchema, FollowFeedItemSchema, FollowFeedPageSchema, FollowProfilePageSchema, FollowProfileSchema, GraphFollowRecordSchema, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, MIN_SKILLS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, OrgEmploymentAttestationRecordSchema, OrgProfileRecordSchema, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PROFILE_INVOLVEMENT_NSID, PUBLISHERS, PresentationDurationSchema, PresentationLinkSchema, ProfileCertificationRecordSchema, ProfileCourseRecordSchema, ProfileEducationRecordSchema, ProfileExternalAccountRecordSchema, ProfileHonorRecordSchema, ProfileInvolvementRecordSchema, ProfileLanguageRecordSchema, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecordSchema, ProfilePublicationRecordSchema, ProfileSelfRecordSchema, ProfileSkillRecordSchema, ProfileVolunteeringRecordSchema, PublicationAuthorSchema, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, SifaFeedItemSchema, VERIFICATION_PROVIDERS, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, atUriSchema, buildTalkSlug, categoryForApp, certDateExtractor, cidSchema, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, datetimeSchema, decodeFeedCursor, dedupeSkills, detectPdsProvider, didSchema, dimensionsFromInputs, durationFromMinutes, encodeFeedCursor, entityDisambiguationLabel, entityResultKey, externalRecordRefSchema, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, hasAdultContent, hoistPrimary, isAppCategory, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isRegistrableDomainHandle, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, languageTagSchema, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, makeGraphFollowRecordSchema, maxGraphemes, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, partialDateSchema, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, selfLabelsSchema, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, strongRefSchema, summarizePresentationDeliveries, summarizeProfileView, toStreamCardVM, toStreamCardVMs, truncateGraphemes, uriSchema, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
4823
+ export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ADULT_CONTENT_LABELS, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, ArtifactLinkSchema, AtmosphereFeedItemSchema, BlobRefSchema, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, DIMENSIONS_MAX_SCORE, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, EndorsementConfirmationRecordSchema, EndorsementRecordSchema, EntityImportSearchResponseSchema, EntityMintDomainResponseSchema, EntityResolveDomainRequestSchema, EntityResolveDomainResponseSchema, EntitySearchResponseSchema, EntitySearchResultSchema, EntitySelectRequestSchema, EntitySelectResponseSchema, FEATURE_FLAGS, FeatureAllowlistEntrySchema, FeedActorSchema, FollowFeedItemSchema, FollowFeedPageSchema, FollowProfilePageSchema, FollowProfileSchema, GraphFollowRecordSchema, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, MIN_SKILLS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, OrgEmploymentAttestationRecordSchema, OrgProfileRecordSchema, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PROFILE_INVOLVEMENT_NSID, PUBLISHERS, PresentationDurationSchema, PresentationLinkSchema, ProfileCertificationRecordSchema, ProfileCourseRecordSchema, ProfileEducationRecordSchema, ProfileExternalAccountRecordSchema, ProfileHonorRecordSchema, ProfileInvolvementRecordSchema, ProfileLanguageRecordSchema, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecordSchema, ProfilePublicationRecordSchema, ProfileSelfRecordSchema, ProfileSkillRecordSchema, ProfileVolunteeringRecordSchema, PublicationAuthorSchema, ROADMAP_ISSUES_REPO, ROADMAP_ITEM_META, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, SifaFeedItemSchema, VERIFICATION_PROVIDERS, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, atUriSchema, buildTalkSlug, categoryForApp, certDateExtractor, cidSchema, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, datetimeSchema, decodeFeedCursor, dedupeSkills, detectPdsProvider, didSchema, dimensionsFromInputs, durationFromMinutes, encodeFeedCursor, entityDisambiguationLabel, entityResultKey, externalRecordRefSchema, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, groupSkillsBySubCategory, hasAdultContent, hoistPrimary, isAppCategory, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isRegistrableDomainHandle, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, languageTagSchema, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, makeGraphFollowRecordSchema, maxGraphemes, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, partialDateSchema, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, selfLabelsSchema, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, strongRefSchema, summarizePresentationDeliveries, summarizeProfileView, toStreamCardVM, toStreamCardVMs, truncateGraphemes, uriSchema, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
4697
4824
  //# sourceMappingURL=index.js.map
4698
4825
  //# sourceMappingURL=index.js.map