@singi-labs/sifa-sdk 0.11.31 → 0.12.0

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.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile } from './adult-content-BO4nea-m.cjs';
2
2
  export { e as ADULT_CONTENT_LABELS, f as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, g as Endorsement, h as EndorsementData, E as ExternalAccount, i as ExternalAccountKeytraceClaim, F as FeedItem, j as LanguageProficiency, k as PresentationLinkView, l as ProfileCertification, m as ProfileCourse, n as ProfileEducation, o as ProfileHonor, p as ProfileIndustry, q as ProfileInvolvement, r as ProfileInvolvementLink, s as ProfileLanguage, t as ProfileLocation, u as ProfileOverrideSource, v as ProfilePosition, w as ProfilePresentation, x as ProfileProject, y as ProfilePublication, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-BO4nea-m.cjs';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord } from './schemas/index.cjs';
4
- export { ArtifactLink, ArtifactLinkSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, 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, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.cjs';
4
+ export { ArtifactLink, ArtifactLinkSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, 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 { E as EntitySearchResult } from './feed-D2ZV8Eaj.cjs';
6
6
  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';
7
7
  import 'zod';
@@ -507,6 +507,77 @@ declare const ARTIFACT_LINK_KIND_LABELS: Record<string, string>;
507
507
  /** Resolve a label for an artifact-link-kind value. Falls back to the raw value. */
508
508
  declare function getArtifactLinkKindLabel(value: string | undefined | null): string | undefined;
509
509
 
510
+ /**
511
+ * Verification providers -- the trust roots Sifa recognizes for AT Protocol
512
+ * `app.bsky.graph.verification` records.
513
+ *
514
+ * Framing (see decisions/2026-07-13-third-party-verification-providers.md, D4):
515
+ * a verification checkmark is ONE low-tier trust layer, not Sifa's headline.
516
+ * Most of what it certifies is "this account is who they claim to be" -- useful,
517
+ * and worth carrying because it's an already-recognized network signal, but low
518
+ * value on its own. It sits among Sifa's other trust signals and never becomes a
519
+ * score or a gate. This registry only decides which issuers Sifa displays and
520
+ * with what provenance.
521
+ *
522
+ * Data-only: badge colors and icons are consumer concerns (React DOM on web,
523
+ * React Native on mobile), same split as {@link PLATFORM_LABELS}. Consumers map
524
+ * a provider id to a token/color.
525
+ */
526
+ type VerificationProviderId = 'bluesky' | 'mu';
527
+ /** How Sifa learns about a provider's verifications. */
528
+ type VerificationSource = 'bluesky-api' | 'firehose';
529
+ interface VerificationProvider {
530
+ id: VerificationProviderId;
531
+ /** Human label for the badge popover, e.g. "Bluesky", "mu (Eurosky)". */
532
+ label: string;
533
+ /**
534
+ * Primary-display priority (D1): when an account holds verifications from
535
+ * multiple providers, the lowest number wins the single inline badge and the
536
+ * rest move into the popover. Must be unique across providers.
537
+ */
538
+ priority: number;
539
+ /**
540
+ * - `bluesky-api`: sourced from Bluesky's public-API `verifiedStatus`. Bluesky
541
+ * maintains its own trusted-verifier set, so Sifa keeps no local DID list.
542
+ * - `firehose`: sourced from the Jetstream, gated on {@link verifierDids}.
543
+ */
544
+ source: VerificationSource;
545
+ /**
546
+ * Trusted verifier DIDs for firehose-sourced providers. A verification record
547
+ * counts only if its ISSUER DID is in this list. Empty for `bluesky-api`
548
+ * providers (Bluesky's AppView owns that decision). DIDs, not handles: a handle
549
+ * takeover must never confer verifier status.
550
+ */
551
+ verifierDids: readonly string[];
552
+ }
553
+ /**
554
+ * A verification held by an account, as surfaced to the UI. `issuerDid` is
555
+ * present for firehose-sourced providers and absent for `bluesky-api`.
556
+ */
557
+ interface AccountVerification {
558
+ provider: VerificationProviderId;
559
+ verifiedAt?: string | null;
560
+ issuerDid?: string | null;
561
+ }
562
+ declare const VERIFICATION_PROVIDERS: Record<VerificationProviderId, VerificationProvider>;
563
+ declare function isKnownVerificationProvider(id: string): id is VerificationProviderId;
564
+ declare function getVerificationProvider(id: string): VerificationProvider | undefined;
565
+ /**
566
+ * The firehose issuer gate: given the DID that authored an
567
+ * `app.bsky.graph.verification` record, return the provider it verifies for, or
568
+ * `null` if the issuer is not a recognized firehose verifier. API-sourced
569
+ * providers (Bluesky) are never matched here -- their verifications do not enter
570
+ * through the firehose, so a self-issued record cannot resolve to them.
571
+ */
572
+ declare function resolveVerifierProvider(issuerDid: string): VerificationProviderId | null;
573
+ /**
574
+ * D1 primary-provider selection: from all verifications an account holds, pick
575
+ * the one whose provider has the highest priority (lowest `priority` number) for
576
+ * the single inline badge. The rest belong in the popover. Verifications from
577
+ * unknown providers are ignored. Returns `null` when nothing is displayable.
578
+ */
579
+ declare function primaryVerification(verifications: readonly AccountVerification[]): AccountVerification | null;
580
+
510
581
  /**
511
582
  * Best-effort title-case for a company display name.
512
583
  *
@@ -1196,4 +1267,4 @@ declare function isLinked(entityRef: string | null | undefined): boolean;
1196
1267
  */
1197
1268
  declare const SIFA_SDK_VERSION: string;
1198
1269
 
1199
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, 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, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, 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, 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, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
1270
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, 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, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, 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, 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, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, 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, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile } from './adult-content-BO4nea-m.js';
2
2
  export { e as ADULT_CONTENT_LABELS, f as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, g as Endorsement, h as EndorsementData, E as ExternalAccount, i as ExternalAccountKeytraceClaim, F as FeedItem, j as LanguageProficiency, k as PresentationLinkView, l as ProfileCertification, m as ProfileCourse, n as ProfileEducation, o as ProfileHonor, p as ProfileIndustry, q as ProfileInvolvement, r as ProfileInvolvementLink, s as ProfileLanguage, t as ProfileLocation, u as ProfileOverrideSource, v as ProfilePosition, w as ProfilePresentation, x as ProfileProject, y as ProfilePublication, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-BO4nea-m.js';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord } from './schemas/index.js';
4
- export { ArtifactLink, ArtifactLinkSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, 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, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.js';
4
+ export { ArtifactLink, ArtifactLinkSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, 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 { E as EntitySearchResult } from './feed-D2ZV8Eaj.js';
6
6
  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';
7
7
  import 'zod';
@@ -507,6 +507,77 @@ declare const ARTIFACT_LINK_KIND_LABELS: Record<string, string>;
507
507
  /** Resolve a label for an artifact-link-kind value. Falls back to the raw value. */
508
508
  declare function getArtifactLinkKindLabel(value: string | undefined | null): string | undefined;
509
509
 
510
+ /**
511
+ * Verification providers -- the trust roots Sifa recognizes for AT Protocol
512
+ * `app.bsky.graph.verification` records.
513
+ *
514
+ * Framing (see decisions/2026-07-13-third-party-verification-providers.md, D4):
515
+ * a verification checkmark is ONE low-tier trust layer, not Sifa's headline.
516
+ * Most of what it certifies is "this account is who they claim to be" -- useful,
517
+ * and worth carrying because it's an already-recognized network signal, but low
518
+ * value on its own. It sits among Sifa's other trust signals and never becomes a
519
+ * score or a gate. This registry only decides which issuers Sifa displays and
520
+ * with what provenance.
521
+ *
522
+ * Data-only: badge colors and icons are consumer concerns (React DOM on web,
523
+ * React Native on mobile), same split as {@link PLATFORM_LABELS}. Consumers map
524
+ * a provider id to a token/color.
525
+ */
526
+ type VerificationProviderId = 'bluesky' | 'mu';
527
+ /** How Sifa learns about a provider's verifications. */
528
+ type VerificationSource = 'bluesky-api' | 'firehose';
529
+ interface VerificationProvider {
530
+ id: VerificationProviderId;
531
+ /** Human label for the badge popover, e.g. "Bluesky", "mu (Eurosky)". */
532
+ label: string;
533
+ /**
534
+ * Primary-display priority (D1): when an account holds verifications from
535
+ * multiple providers, the lowest number wins the single inline badge and the
536
+ * rest move into the popover. Must be unique across providers.
537
+ */
538
+ priority: number;
539
+ /**
540
+ * - `bluesky-api`: sourced from Bluesky's public-API `verifiedStatus`. Bluesky
541
+ * maintains its own trusted-verifier set, so Sifa keeps no local DID list.
542
+ * - `firehose`: sourced from the Jetstream, gated on {@link verifierDids}.
543
+ */
544
+ source: VerificationSource;
545
+ /**
546
+ * Trusted verifier DIDs for firehose-sourced providers. A verification record
547
+ * counts only if its ISSUER DID is in this list. Empty for `bluesky-api`
548
+ * providers (Bluesky's AppView owns that decision). DIDs, not handles: a handle
549
+ * takeover must never confer verifier status.
550
+ */
551
+ verifierDids: readonly string[];
552
+ }
553
+ /**
554
+ * A verification held by an account, as surfaced to the UI. `issuerDid` is
555
+ * present for firehose-sourced providers and absent for `bluesky-api`.
556
+ */
557
+ interface AccountVerification {
558
+ provider: VerificationProviderId;
559
+ verifiedAt?: string | null;
560
+ issuerDid?: string | null;
561
+ }
562
+ declare const VERIFICATION_PROVIDERS: Record<VerificationProviderId, VerificationProvider>;
563
+ declare function isKnownVerificationProvider(id: string): id is VerificationProviderId;
564
+ declare function getVerificationProvider(id: string): VerificationProvider | undefined;
565
+ /**
566
+ * The firehose issuer gate: given the DID that authored an
567
+ * `app.bsky.graph.verification` record, return the provider it verifies for, or
568
+ * `null` if the issuer is not a recognized firehose verifier. API-sourced
569
+ * providers (Bluesky) are never matched here -- their verifications do not enter
570
+ * through the firehose, so a self-issued record cannot resolve to them.
571
+ */
572
+ declare function resolveVerifierProvider(issuerDid: string): VerificationProviderId | null;
573
+ /**
574
+ * D1 primary-provider selection: from all verifications an account holds, pick
575
+ * the one whose provider has the highest priority (lowest `priority` number) for
576
+ * the single inline badge. The rest belong in the popover. Verifications from
577
+ * unknown providers are ignored. Returns `null` when nothing is displayable.
578
+ */
579
+ declare function primaryVerification(verifications: readonly AccountVerification[]): AccountVerification | null;
580
+
510
581
  /**
511
582
  * Best-effort title-case for a company display name.
512
583
  *
@@ -1196,4 +1267,4 @@ declare function isLinked(entityRef: string | null | undefined): boolean;
1196
1267
  */
1197
1268
  declare const SIFA_SDK_VERSION: string;
1198
1269
 
1199
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, 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, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, 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, 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, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
1270
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, 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, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, 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, 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, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, 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, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
package/dist/index.js CHANGED
@@ -1479,6 +1479,68 @@ function getArtifactLinkKindLabel(value) {
1479
1479
  return ARTIFACT_LINK_KIND_LABELS[value] ?? value;
1480
1480
  }
1481
1481
 
1482
+ // src/taxonomy/verification-providers.ts
1483
+ var MU_VERIFIER_DIDS = [
1484
+ "did:plc:ooensn4mr5mhznzypvxelfa3",
1485
+ // eurosky.social -- coordinates the trusted-verifier program
1486
+ "did:plc:durcipmx2rwgzzagbiumobs5",
1487
+ // france-atmosphe.re
1488
+ "did:plc:zsf5p7rqilz2qvyd7ezmxrfj",
1489
+ // belgium-atmosphe.re
1490
+ "did:plc:hd564mpf6bekrwzyhvujs54b",
1491
+ // medsky.network
1492
+ "did:plc:u5zp7npt5kpueado77kuihyz",
1493
+ // npmx.dev
1494
+ "did:plc:6tndl5lqrzjrx7ahjom2gjbq",
1495
+ // stewardshiplab.org
1496
+ "did:plc:vnycpb2e4lh4tc7oyr3n2jvh",
1497
+ // newsmastfoundation.org
1498
+ "did:plc:dsiqe4pszk5ldbjk66fyryjv"
1499
+ // cpesr.fr
1500
+ ];
1501
+ var VERIFICATION_PROVIDERS = {
1502
+ bluesky: {
1503
+ id: "bluesky",
1504
+ label: "Bluesky",
1505
+ priority: 0,
1506
+ source: "bluesky-api",
1507
+ verifierDids: []
1508
+ },
1509
+ mu: {
1510
+ id: "mu",
1511
+ label: "mu (Eurosky)",
1512
+ priority: 1,
1513
+ source: "firehose",
1514
+ verifierDids: MU_VERIFIER_DIDS
1515
+ }
1516
+ };
1517
+ function isKnownVerificationProvider(id) {
1518
+ return Object.hasOwn(VERIFICATION_PROVIDERS, id);
1519
+ }
1520
+ function getVerificationProvider(id) {
1521
+ return isKnownVerificationProvider(id) ? VERIFICATION_PROVIDERS[id] : void 0;
1522
+ }
1523
+ function resolveVerifierProvider(issuerDid) {
1524
+ for (const provider of Object.values(VERIFICATION_PROVIDERS)) {
1525
+ if (provider.source !== "firehose") continue;
1526
+ if (provider.verifierDids.includes(issuerDid)) return provider.id;
1527
+ }
1528
+ return null;
1529
+ }
1530
+ function primaryVerification(verifications) {
1531
+ let best = null;
1532
+ let bestPriority = Number.POSITIVE_INFINITY;
1533
+ for (const verification of verifications) {
1534
+ const provider = getVerificationProvider(verification.provider);
1535
+ if (!provider) continue;
1536
+ if (provider.priority < bestPriority) {
1537
+ best = verification;
1538
+ bestPriority = provider.priority;
1539
+ }
1540
+ }
1541
+ return best;
1542
+ }
1543
+
1482
1544
  // src/format/company-name.ts
1483
1545
  var SMALL_WORDS = /* @__PURE__ */ new Set([
1484
1546
  "a",
@@ -2717,6 +2779,7 @@ function maxGraphemes(max) {
2717
2779
  }
2718
2780
  var didSchema = z.string().regex(/^did:[a-z]+:[a-zA-Z0-9._:%-]+$/, "Invalid DID");
2719
2781
  var datetimeSchema = z.string().datetime({ offset: true });
2782
+ var partialDateSchema = z.string().regex(/^\d{4}(-\d{2}(-\d{2}(T.+)?)?)?$/, "Expected YYYY, YYYY-MM, YYYY-MM-DD, or a datetime");
2720
2783
  var atUriSchema = z.string().regex(/^at:\/\/[^\s]+$/, "Invalid AT-URI");
2721
2784
  var cidSchema = z.string().regex(/^(Qm[1-9A-HJ-NP-Za-km-z]{44}|b[A-Za-z0-9+/=]+)$/, "Invalid CID");
2722
2785
  var languageTagSchema = z.string().regex(/^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/, "Invalid BCP 47 language tag");
@@ -2901,10 +2964,8 @@ var ProfileCertificationRecordSchema = z.object({
2901
2964
  entityRef: z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional(),
2902
2965
  credentialId: z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2903
2966
  credentialUrl: uriSchema.optional(),
2904
- // Freeform YYYY-MM or YYYY-MM-DD (not a strict datetime) so partial dates
2905
- // and LinkedIn-importer writes are accepted. See sifa-lexicons#256.
2906
- issuedAt: z.string().optional(),
2907
- expiresAt: z.string().optional(),
2967
+ issuedAt: partialDateSchema.optional(),
2968
+ expiresAt: partialDateSchema.optional(),
2908
2969
  labels: selfLabelsSchema.optional(),
2909
2970
  createdAt: datetimeSchema
2910
2971
  });
@@ -2919,10 +2980,7 @@ var ProfileCourseRecordSchema = z.object({
2919
2980
  // AT-URI of the associated id.sifa.profile.certification record. Plain
2920
2981
  // at-uri (not a strongRef) so the link tracks the live certification.
2921
2982
  credential: atUriSchema.optional(),
2922
- // Date the course was completed. Freeform YYYY-MM or YYYY-MM-DD (not a strict
2923
- // datetime) so month-granularity and partial dates are accepted. See
2924
- // sifa-lexicons#256.
2925
- completedAt: z.string().optional(),
2983
+ completedAt: partialDateSchema.optional(),
2926
2984
  createdAt: datetimeSchema
2927
2985
  });
2928
2986
  var ProfileEducationRecordSchema = z.object({
@@ -2937,10 +2995,8 @@ var ProfileEducationRecordSchema = z.object({
2937
2995
  activities: z.string().refine(maxGraphemes(1e3)).max(1e4).optional(),
2938
2996
  description: z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
2939
2997
  location: z.unknown().optional(),
2940
- // Freeform YYYY-MM or YYYY-MM-DD (not a strict datetime) so partial dates
2941
- // and LinkedIn-importer writes are accepted. See sifa-lexicons#256.
2942
- startedAt: z.string().optional(),
2943
- endedAt: z.string().optional(),
2998
+ startedAt: partialDateSchema.optional(),
2999
+ endedAt: partialDateSchema.optional(),
2944
3000
  labels: selfLabelsSchema.optional(),
2945
3001
  createdAt: datetimeSchema
2946
3002
  });
@@ -2960,13 +3016,10 @@ var ProfileHonorRecordSchema = z.object({
2960
3016
  // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).
2961
3017
  entityRef: z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional(),
2962
3018
  description: z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
2963
- // Freeform YYYY-MM or YYYY-MM-DD (not a strict datetime) so partial dates
2964
- // and LinkedIn-importer writes are accepted. See sifa-lexicons#256.
2965
- awardedAt: z.string().optional(),
3019
+ awardedAt: partialDateSchema.optional(),
2966
3020
  createdAt: datetimeSchema
2967
3021
  });
2968
3022
  var PROFILE_INVOLVEMENT_NSID = "id.sifa.profile.involvement";
2969
- var partialDateSchema = z.string().regex(/^\d{4}(-\d{2}(-\d{2}(T.+)?)?)?$/, "Expected YYYY, YYYY-MM, YYYY-MM-DD, or a datetime");
2970
3023
  var ArtifactLinkSchema = z.object({
2971
3024
  url: uriSchema,
2972
3025
  kind: z.string().optional(),
@@ -3008,10 +3061,8 @@ var ProfilePositionRecordSchema = z.object({
3008
3061
  employmentType: z.string().optional(),
3009
3062
  workplaceType: z.string().optional(),
3010
3063
  location: z.unknown().optional(),
3011
- // Freeform YYYY-MM or YYYY-MM-DD (not a strict datetime) so partial dates
3012
- // and LinkedIn-importer writes are accepted. See sifa-lexicons#256.
3013
- startedAt: z.string(),
3014
- endedAt: z.string().optional(),
3064
+ startedAt: partialDateSchema,
3065
+ endedAt: partialDateSchema.optional(),
3015
3066
  skills: z.array(strongRefSchema).max(50).optional(),
3016
3067
  labels: selfLabelsSchema.optional(),
3017
3068
  createdAt: datetimeSchema
@@ -3063,10 +3114,8 @@ var ProfileProjectRecordSchema = z.object({
3063
3114
  description: z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
3064
3115
  url: uriSchema.optional(),
3065
3116
  position: strongRefSchema.optional(),
3066
- // Freeform YYYY-MM or YYYY-MM-DD (not a strict datetime) so partial dates
3067
- // and LinkedIn-importer writes are accepted. See sifa-lexicons#256.
3068
- startedAt: z.string().optional(),
3069
- endedAt: z.string().optional(),
3117
+ startedAt: partialDateSchema.optional(),
3118
+ endedAt: partialDateSchema.optional(),
3070
3119
  labels: selfLabelsSchema.optional(),
3071
3120
  createdAt: datetimeSchema
3072
3121
  });
@@ -3081,9 +3130,7 @@ var ProfilePublicationRecordSchema = z.object({
3081
3130
  url: uriSchema.optional(),
3082
3131
  description: z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
3083
3132
  authors: z.array(PublicationAuthorSchema).max(50).optional(),
3084
- // Freeform YYYY-MM or YYYY-MM-DD (not a strict datetime) so partial dates
3085
- // and LinkedIn-importer writes are accepted. See sifa-lexicons#256.
3086
- publishedAt: z.string().optional(),
3133
+ publishedAt: partialDateSchema.optional(),
3087
3134
  createdAt: datetimeSchema
3088
3135
  });
3089
3136
  var ProfileSelfRecordSchema = z.object({
@@ -3114,16 +3161,14 @@ var ProfileVolunteeringRecordSchema = z.object({
3114
3161
  role: z.string().refine(maxGraphemes(100)).max(1e3).optional(),
3115
3162
  cause: z.string().refine(maxGraphemes(100)).max(1e3).optional(),
3116
3163
  description: z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
3117
- // Freeform YYYY-MM or YYYY-MM-DD (not a strict datetime) so partial dates
3118
- // and LinkedIn-importer writes are accepted. See sifa-lexicons#256.
3119
- startedAt: z.string().optional(),
3120
- endedAt: z.string().optional(),
3164
+ startedAt: partialDateSchema.optional(),
3165
+ endedAt: partialDateSchema.optional(),
3121
3166
  createdAt: datetimeSchema
3122
3167
  });
3123
3168
 
3124
3169
  // src/index.ts
3125
- var SIFA_SDK_VERSION = "0.11.31";
3170
+ var SIFA_SDK_VERSION = "0.12.0";
3126
3171
 
3127
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, ADULT_CONTENT_LABELS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, ArtifactLinkSchema, AtmosphereFeedItemSchema, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, 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_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, 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, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, SifaFeedItemSchema, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, atUriSchema, categoryForApp, certDateExtractor, cidSchema, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, datetimeSchema, decodeFeedCursor, dedupeSkills, detectPdsProvider, didSchema, dimensionsFromInputs, durationFromMinutes, encodeFeedCursor, entityDisambiguationLabel, entityResultKey, externalRecordRefSchema, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, hasAdultContent, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, languageTagSchema, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, makeGraphFollowRecordSchema, maxGraphemes, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, selfLabelsSchema, singleDateExtractor, sortByDateDesc, stripHtmlToText, strongRefSchema, summarizePresentationDeliveries, truncateGraphemes, uriSchema };
3172
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, ADULT_CONTENT_LABELS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, ArtifactLinkSchema, AtmosphereFeedItemSchema, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, 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_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, 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, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, SifaFeedItemSchema, VERIFICATION_PROVIDERS, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, atUriSchema, categoryForApp, certDateExtractor, cidSchema, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, datetimeSchema, decodeFeedCursor, dedupeSkills, detectPdsProvider, didSchema, dimensionsFromInputs, durationFromMinutes, encodeFeedCursor, entityDisambiguationLabel, entityResultKey, externalRecordRefSchema, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, 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, getWorkplaceTypeLabel, groupSkillsByCategory, hasAdultContent, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, languageTagSchema, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, makeGraphFollowRecordSchema, maxGraphemes, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, partialDateSchema, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, selfLabelsSchema, singleDateExtractor, sortByDateDesc, stripHtmlToText, strongRefSchema, summarizePresentationDeliveries, truncateGraphemes, uriSchema };
3128
3173
  //# sourceMappingURL=index.js.map
3129
3174
  //# sourceMappingURL=index.js.map