@singi-labs/sifa-sdk 0.11.21 → 0.11.23

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.
@@ -175,6 +175,52 @@ interface ProfileHonor {
175
175
  description?: string;
176
176
  hidden?: boolean;
177
177
  }
178
+ /**
179
+ * One proof link on an involvement record, as served by the AppView. Mirrors
180
+ * `id.sifa.defs#artifactLink`, plus the computed rung-2 verification signal.
181
+ */
182
+ interface ProfileInvolvementLink {
183
+ url: string;
184
+ kind?: string;
185
+ label?: string;
186
+ /**
187
+ * Rung-2 cross-ref: true when the link host matches one of the owner's
188
+ * *verified* `externalAccount` records (GitHub, GitLab, ORCID, ...).
189
+ * Computed by the AppView; deterministic host match, no new primitive.
190
+ */
191
+ verified?: boolean;
192
+ /**
193
+ * Platform token of the matched verified external account (e.g.
194
+ * `id.sifa.defs#platformGithub`), for the badge label. Absent when
195
+ * `verified` is not true.
196
+ */
197
+ verifiedPlatform?: string;
198
+ }
199
+ /**
200
+ * An involvement entry as served by the AppView: an `id.sifa.profile.involvement`
201
+ * record, or a mapped legacy `id.sifa.profile.volunteering` record (`legacy`),
202
+ * grouped in the UI by `kind` via the SDK's involvement-kind taxonomy.
203
+ */
204
+ interface ProfileInvolvement {
205
+ rkey: string;
206
+ /** Involvement-kind token; drives the display heading. Legacy rows map to charity. */
207
+ kind: string;
208
+ upstream?: string;
209
+ upstreamDid?: string;
210
+ upstreamUrl?: string;
211
+ role?: string;
212
+ description?: string;
213
+ startedAt?: string;
214
+ endedAt?: string;
215
+ links?: ProfileInvolvementLink[];
216
+ /**
217
+ * True when this row is a mapped legacy `id.sifa.profile.volunteering` record
218
+ * (no `kind`), rendered under "Volunteering". Editing it backfills to an
219
+ * `involvement` record and deletes the legacy one.
220
+ */
221
+ legacy?: boolean;
222
+ hidden?: boolean;
223
+ }
178
224
  type LanguageProficiency = 'elementary' | 'limited_working' | 'professional_working' | 'full_professional' | 'native';
179
225
  interface ProfileLanguage {
180
226
  rkey: string;
@@ -392,6 +438,7 @@ interface Profile {
392
438
  projects?: ProfileProject[];
393
439
  publications?: ProfilePublication[];
394
440
  volunteering?: ProfileVolunteering[];
441
+ involvement?: ProfileInvolvement[];
395
442
  honors?: ProfileHonor[];
396
443
  languages?: ProfileLanguage[];
397
444
  courses?: ProfileCourse[];
@@ -175,6 +175,52 @@ interface ProfileHonor {
175
175
  description?: string;
176
176
  hidden?: boolean;
177
177
  }
178
+ /**
179
+ * One proof link on an involvement record, as served by the AppView. Mirrors
180
+ * `id.sifa.defs#artifactLink`, plus the computed rung-2 verification signal.
181
+ */
182
+ interface ProfileInvolvementLink {
183
+ url: string;
184
+ kind?: string;
185
+ label?: string;
186
+ /**
187
+ * Rung-2 cross-ref: true when the link host matches one of the owner's
188
+ * *verified* `externalAccount` records (GitHub, GitLab, ORCID, ...).
189
+ * Computed by the AppView; deterministic host match, no new primitive.
190
+ */
191
+ verified?: boolean;
192
+ /**
193
+ * Platform token of the matched verified external account (e.g.
194
+ * `id.sifa.defs#platformGithub`), for the badge label. Absent when
195
+ * `verified` is not true.
196
+ */
197
+ verifiedPlatform?: string;
198
+ }
199
+ /**
200
+ * An involvement entry as served by the AppView: an `id.sifa.profile.involvement`
201
+ * record, or a mapped legacy `id.sifa.profile.volunteering` record (`legacy`),
202
+ * grouped in the UI by `kind` via the SDK's involvement-kind taxonomy.
203
+ */
204
+ interface ProfileInvolvement {
205
+ rkey: string;
206
+ /** Involvement-kind token; drives the display heading. Legacy rows map to charity. */
207
+ kind: string;
208
+ upstream?: string;
209
+ upstreamDid?: string;
210
+ upstreamUrl?: string;
211
+ role?: string;
212
+ description?: string;
213
+ startedAt?: string;
214
+ endedAt?: string;
215
+ links?: ProfileInvolvementLink[];
216
+ /**
217
+ * True when this row is a mapped legacy `id.sifa.profile.volunteering` record
218
+ * (no `kind`), rendered under "Volunteering". Editing it backfills to an
219
+ * `involvement` record and deletes the legacy one.
220
+ */
221
+ legacy?: boolean;
222
+ hidden?: boolean;
223
+ }
178
224
  type LanguageProficiency = 'elementary' | 'limited_working' | 'professional_working' | 'full_professional' | 'native';
179
225
  interface ProfileLanguage {
180
226
  rkey: string;
@@ -392,6 +438,7 @@ interface Profile {
392
438
  projects?: ProfileProject[];
393
439
  publications?: ProfilePublication[];
394
440
  volunteering?: ProfileVolunteering[];
441
+ involvement?: ProfileInvolvement[];
395
442
  honors?: ProfileHonor[];
396
443
  languages?: ProfileLanguage[];
397
444
  courses?: ProfileCourse[];
@@ -348,4 +348,4 @@ interface FeedCursor {
348
348
  declare function encodeFeedCursor(cursor: FeedCursor): string;
349
349
  declare function decodeFeedCursor(encoded: string): FeedCursor;
350
350
 
351
- export { type AtmosphereFeedItem as A, encodeFeedCursor as B, type EntitySearchResult as E, type FollowFeedPage as F, type SifaFeedItem as S, type FollowProfileItem as a, type FeatureAllowlistEntry as b, type FeatureFlag as c, AtmosphereFeedItemSchema as d, type EntityImportSearchResponse as e, EntityImportSearchResponseSchema as f, type EntitySearchResponse as g, EntitySearchResponseSchema as h, EntitySearchResultSchema as i, type EntitySelectRequest as j, EntitySelectRequestSchema as k, type EntitySelectResponse as l, EntitySelectResponseSchema as m, FEATURE_FLAGS as n, FeatureAllowlistEntrySchema as o, type FeedActor as p, FeedActorSchema as q, type FeedCursor as r, type FollowFeedItem as s, FollowFeedItemSchema as t, FollowFeedPageSchema as u, type FollowProfilePage as v, FollowProfilePageSchema as w, FollowProfileSchema as x, SifaFeedItemSchema as y, decodeFeedCursor as z };
351
+ export { type AtmosphereFeedItem as A, encodeFeedCursor as B, type EntityImportSearchResponse as E, FEATURE_FLAGS as F, type SifaFeedItem as S, AtmosphereFeedItemSchema as a, EntityImportSearchResponseSchema as b, type EntitySearchResponse as c, EntitySearchResponseSchema as d, type EntitySearchResult as e, EntitySearchResultSchema as f, type EntitySelectRequest as g, EntitySelectRequestSchema as h, type EntitySelectResponse as i, EntitySelectResponseSchema as j, type FeatureAllowlistEntry as k, FeatureAllowlistEntrySchema as l, type FeatureFlag as m, type FeedActor as n, FeedActorSchema as o, type FeedCursor as p, type FollowFeedItem as q, FollowFeedItemSchema as r, type FollowFeedPage as s, FollowFeedPageSchema as t, type FollowProfileItem as u, type FollowProfilePage as v, FollowProfilePageSchema as w, FollowProfileSchema as x, SifaFeedItemSchema as y, decodeFeedCursor as z };
@@ -348,4 +348,4 @@ interface FeedCursor {
348
348
  declare function encodeFeedCursor(cursor: FeedCursor): string;
349
349
  declare function decodeFeedCursor(encoded: string): FeedCursor;
350
350
 
351
- export { type AtmosphereFeedItem as A, encodeFeedCursor as B, type EntitySearchResult as E, type FollowFeedPage as F, type SifaFeedItem as S, type FollowProfileItem as a, type FeatureAllowlistEntry as b, type FeatureFlag as c, AtmosphereFeedItemSchema as d, type EntityImportSearchResponse as e, EntityImportSearchResponseSchema as f, type EntitySearchResponse as g, EntitySearchResponseSchema as h, EntitySearchResultSchema as i, type EntitySelectRequest as j, EntitySelectRequestSchema as k, type EntitySelectResponse as l, EntitySelectResponseSchema as m, FEATURE_FLAGS as n, FeatureAllowlistEntrySchema as o, type FeedActor as p, FeedActorSchema as q, type FeedCursor as r, type FollowFeedItem as s, FollowFeedItemSchema as t, FollowFeedPageSchema as u, type FollowProfilePage as v, FollowProfilePageSchema as w, FollowProfileSchema as x, SifaFeedItemSchema as y, decodeFeedCursor as z };
351
+ export { type AtmosphereFeedItem as A, encodeFeedCursor as B, type EntityImportSearchResponse as E, FEATURE_FLAGS as F, type SifaFeedItem as S, AtmosphereFeedItemSchema as a, EntityImportSearchResponseSchema as b, type EntitySearchResponse as c, EntitySearchResponseSchema as d, type EntitySearchResult as e, EntitySearchResultSchema as f, type EntitySelectRequest as g, EntitySelectRequestSchema as h, type EntitySelectResponse as i, EntitySelectResponseSchema as j, type FeatureAllowlistEntry as k, FeatureAllowlistEntrySchema as l, type FeatureFlag as m, type FeedActor as n, FeedActorSchema as o, type FeedCursor as p, type FollowFeedItem as q, FollowFeedItemSchema as r, type FollowFeedPage as s, FollowFeedPageSchema as t, type FollowProfileItem as u, type FollowProfilePage as v, FollowProfilePageSchema as w, FollowProfileSchema as x, SifaFeedItemSchema as y, decodeFeedCursor as z };
package/dist/index.cjs CHANGED
@@ -2733,6 +2733,9 @@ var ProfileCertificationRecordSchema = zod.z.object({
2733
2733
  name: zod.z.string().min(1).refine(maxGraphemes(100)).max(1e3),
2734
2734
  authority: zod.z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2735
2735
  authorityDid: didSchema.optional(),
2736
+ // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.
2737
+ // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).
2738
+ entityRef: zod.z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional(),
2736
2739
  credentialId: zod.z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2737
2740
  credentialUrl: uriSchema.optional(),
2738
2741
  issuedAt: datetimeSchema.optional(),
@@ -2744,6 +2747,9 @@ var ProfileCourseRecordSchema = zod.z.object({
2744
2747
  name: zod.z.string().min(1).refine(maxGraphemes(200)).max(2e3),
2745
2748
  number: zod.z.string().refine(maxGraphemes(50)).max(500).optional(),
2746
2749
  institution: zod.z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2750
+ // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.
2751
+ // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).
2752
+ entityRef: zod.z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional(),
2747
2753
  education: strongRefSchema.optional(),
2748
2754
  // AT-URI of the associated id.sifa.profile.certification record. Plain
2749
2755
  // at-uri (not a strongRef) so the link tracks the live certification.
@@ -2753,6 +2759,9 @@ var ProfileCourseRecordSchema = zod.z.object({
2753
2759
  var ProfileEducationRecordSchema = zod.z.object({
2754
2760
  institution: zod.z.string().min(1).refine(maxGraphemes(100)).max(1e3),
2755
2761
  institutionDid: didSchema.optional(),
2762
+ // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.
2763
+ // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).
2764
+ entityRef: zod.z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional(),
2756
2765
  degree: zod.z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2757
2766
  fieldOfStudy: zod.z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2758
2767
  grade: zod.z.string().refine(maxGraphemes(50)).max(500).optional(),
@@ -2776,6 +2785,9 @@ var ProfileHonorRecordSchema = zod.z.object({
2776
2785
  title: zod.z.string().min(1).refine(maxGraphemes(200)).max(2e3),
2777
2786
  issuer: zod.z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2778
2787
  issuerDid: didSchema.optional(),
2788
+ // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.
2789
+ // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).
2790
+ entityRef: zod.z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional(),
2779
2791
  description: zod.z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
2780
2792
  awardedAt: datetimeSchema.optional(),
2781
2793
  createdAt: datetimeSchema
@@ -2890,6 +2902,9 @@ var ProfileSkillRecordSchema = zod.z.object({
2890
2902
  var ProfileVolunteeringRecordSchema = zod.z.object({
2891
2903
  organization: zod.z.string().min(1).refine(maxGraphemes(100)).max(1e3),
2892
2904
  organizationDid: didSchema.optional(),
2905
+ // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.
2906
+ // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).
2907
+ entityRef: zod.z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional(),
2893
2908
  role: zod.z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2894
2909
  cause: zod.z.string().refine(maxGraphemes(100)).max(1e3).optional(),
2895
2910
  description: zod.z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
@@ -2899,7 +2914,7 @@ var ProfileVolunteeringRecordSchema = zod.z.object({
2899
2914
  });
2900
2915
 
2901
2916
  // src/index.ts
2902
- var SIFA_SDK_VERSION = "0.11.21";
2917
+ var SIFA_SDK_VERSION = "0.11.23";
2903
2918
 
2904
2919
  exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
2905
2920
  exports.ACTIVITY_VISIBILITY_RULES = ACTIVITY_VISIBILITY_RULES;