@singi-labs/sifa-sdk 0.11.24 → 0.11.26

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.
@@ -1,6 +1,198 @@
1
- export { E as EndorsementConfirmationRecord, a as EndorsementConfirmationRecordSchema, b as EndorsementRecord, c as EndorsementRecordSchema, G as GraphFollowRecord, d as GraphFollowRecordSchema, P as PresentationDuration, e as PresentationDurationSchema, f as PresentationLink, g as PresentationLinkSchema, h as ProfileCertificationRecord, i as ProfileCertificationRecordSchema, j as ProfileCourseRecord, k as ProfileCourseRecordSchema, l as ProfileEducationRecord, m as ProfileEducationRecordSchema, n as ProfileExternalAccountRecord, o as ProfileExternalAccountRecordSchema, p as ProfileHonorRecord, q as ProfileHonorRecordSchema, r as ProfileLanguageRecord, s as ProfileLanguageRecordSchema, t as ProfilePositionRecord, u as ProfilePositionRecordSchema, v as ProfilePresentationDeliveryRecord, w as ProfilePresentationDeliveryRecordSchema, x as ProfilePresentationRecord, y as ProfilePresentationRecordSchema, z as ProfileProjectRecord, A as ProfileProjectRecordSchema, B as ProfilePublicationRecord, C as ProfilePublicationRecordSchema, D as ProfileSelfRecord, F as ProfileSelfRecordSchema, H as ProfileSkillRecord, I as ProfileSkillRecordSchema, J as ProfileVolunteeringRecord, K as ProfileVolunteeringRecordSchema, L as PublicationAuthor, M as PublicationAuthorSchema, N as atUriSchema, O as cidSchema, Q as datetimeSchema, R as didSchema, S as externalRecordRefSchema, T as languageTagSchema, U as makeGraphFollowRecordSchema, V as maxGraphemes, W as selfLabelsSchema, X as strongRefSchema, Y as uriSchema } from '../shared-CHCY7Lst.js';
2
- export { A as AtmosphereFeedItem, a as AtmosphereFeedItemSchema, E as EntityImportSearchResponse, b as EntityImportSearchResponseSchema, c as EntityMintDomainResponse, d as EntityMintDomainResponseSchema, e as EntityResolveDomainRequest, f as EntityResolveDomainRequestSchema, g as EntityResolveDomainResponse, h as EntityResolveDomainResponseSchema, i as EntitySearchResponse, j as EntitySearchResponseSchema, k as EntitySearchResult, l as EntitySearchResultSchema, m as EntitySelectRequest, n as EntitySelectRequestSchema, o as EntitySelectResponse, p as EntitySelectResponseSchema, F as FEATURE_FLAGS, q as FeatureAllowlistEntry, r as FeatureAllowlistEntrySchema, s as FeatureFlag, t as FeedActor, u as FeedActorSchema, v as FeedCursor, w as FollowFeedItem, x as FollowFeedItemSchema, y as FollowFeedPage, z as FollowFeedPageSchema, B 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--omSiO_S.js';
3
1
  import { z } from 'zod';
2
+ 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, E as EntitySearchResult, 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';
3
+
4
+ /**
5
+ * Duration of a presentation, in minutes. Mirrors
6
+ * `id.sifa.profile.presentation#duration`: a fixed length (minMinutes only) or
7
+ * a range (minMinutes to maxMinutes).
8
+ */
9
+ declare const PresentationDurationSchema: z.ZodObject<{
10
+ minMinutes: z.ZodNumber;
11
+ maxMinutes: z.ZodOptional<z.ZodNumber>;
12
+ }, z.core.$strip>;
13
+ type PresentationDuration = z.infer<typeof PresentationDurationSchema>;
14
+ /**
15
+ * A related link for a presentation or one of its deliveries. Mirrors
16
+ * `id.sifa.defs#presentationLink`. `type` is an open enum (knownValues), so any
17
+ * string is accepted.
18
+ */
19
+ declare const PresentationLinkSchema: z.ZodObject<{
20
+ uri: z.ZodString;
21
+ label: z.ZodOptional<z.ZodString>;
22
+ type: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>;
24
+ type PresentationLink = z.infer<typeof PresentationLinkSchema>;
25
+ /** Zod schema for `id.sifa.profile.presentation` records (the reusable content). */
26
+ declare const ProfilePresentationRecordSchema: z.ZodObject<{
27
+ title: z.ZodString;
28
+ description: z.ZodOptional<z.ZodString>;
29
+ duration: z.ZodOptional<z.ZodObject<{
30
+ minMinutes: z.ZodNumber;
31
+ maxMinutes: z.ZodOptional<z.ZodNumber>;
32
+ }, z.core.$strip>>;
33
+ intendedAudiences: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ links: z.ZodOptional<z.ZodArray<z.ZodObject<{
35
+ uri: z.ZodString;
36
+ label: z.ZodOptional<z.ZodString>;
37
+ type: z.ZodOptional<z.ZodString>;
38
+ }, z.core.$strip>>>;
39
+ writeupRef: z.ZodOptional<z.ZodObject<{
40
+ uri: z.ZodString;
41
+ cid: z.ZodOptional<z.ZodString>;
42
+ }, z.core.$strip>>;
43
+ createdAt: z.ZodString;
44
+ }, z.core.$strip>;
45
+ type ProfilePresentationRecord = z.infer<typeof ProfilePresentationRecordSchema>;
46
+
47
+ /**
48
+ * Zod schema for `id.sifa.endorsement.confirmation` records.
49
+ * Lives in the endorsee's PDS to approve display of an endorsement.
50
+ */
51
+ declare const EndorsementConfirmationRecordSchema: z.ZodObject<{
52
+ endorsement: z.ZodObject<{
53
+ uri: z.ZodString;
54
+ cid: z.ZodString;
55
+ }, z.core.$strip>;
56
+ createdAt: z.ZodString;
57
+ }, z.core.$strip>;
58
+ type EndorsementConfirmationRecord = z.infer<typeof EndorsementConfirmationRecordSchema>;
59
+
60
+ /**
61
+ * Zod schema for `id.sifa.endorsement` records. Lives in the endorser's PDS;
62
+ * the endorser identity is implicit (whoever owns the repository).
63
+ */
64
+ declare const EndorsementRecordSchema: z.ZodObject<{
65
+ subject: z.ZodString;
66
+ skill: z.ZodObject<{
67
+ uri: z.ZodString;
68
+ cid: z.ZodString;
69
+ }, z.core.$strip>;
70
+ skillName: z.ZodString;
71
+ comment: z.ZodOptional<z.ZodString>;
72
+ createdAt: z.ZodString;
73
+ }, z.core.$strip>;
74
+ type EndorsementRecord = z.infer<typeof EndorsementRecordSchema>;
75
+
76
+ /**
77
+ * Zod schema for `id.sifa.graph.follow` records.
78
+ *
79
+ * One-way professional follow; the record lives in the follower's PDS. Per
80
+ * iter-1 decisions (`plans/2026-06-01-in-sifa-follow-primitive.md`), this is
81
+ * a **distinct** graph from `app.bsky.graph.follow`, not a superset — but
82
+ * the required field shape (`subject` + `createdAt`) is intentionally
83
+ * identical so generic Bluesky `listRecords` consumers get usable records.
84
+ *
85
+ * `note` is a Sifa addition: an optional reason for the follow ("why I
86
+ * followed"). Capped at 200 graphemes to match other profile-flavored
87
+ * lexicon fields.
88
+ */
89
+ declare const GraphFollowRecordSchema: z.ZodObject<{
90
+ subject: z.ZodString;
91
+ createdAt: z.ZodString;
92
+ note: z.ZodOptional<z.ZodString>;
93
+ }, z.core.$strip>;
94
+ type GraphFollowRecord = z.infer<typeof GraphFollowRecordSchema>;
95
+ /**
96
+ * Build a `GraphFollowRecordSchema` that rejects self-follow at the Zod
97
+ * layer (CLAUDE.md mandatory standards #3 — input validation; sifa-api#673
98
+ * E8 — defence in depth).
99
+ *
100
+ * Use this on the **client side** when constructing a new follow record
101
+ * (the follower DID is the authenticated user). The plain
102
+ * {@link GraphFollowRecordSchema} stays without the refine so firehose
103
+ * consumers can validate records without context.
104
+ */
105
+ declare function makeGraphFollowRecordSchema(followerDid: string): z.ZodObject<{
106
+ subject: z.ZodString;
107
+ createdAt: z.ZodString;
108
+ note: z.ZodOptional<z.ZodString>;
109
+ }, z.core.$strip>;
110
+
111
+ /** Zod schema for `id.sifa.profile.certification` records. */
112
+ declare const ProfileCertificationRecordSchema: z.ZodObject<{
113
+ name: z.ZodString;
114
+ authority: z.ZodOptional<z.ZodString>;
115
+ authorityDid: z.ZodOptional<z.ZodString>;
116
+ entityRef: z.ZodOptional<z.ZodString>;
117
+ credentialId: z.ZodOptional<z.ZodString>;
118
+ credentialUrl: z.ZodOptional<z.ZodString>;
119
+ issuedAt: z.ZodOptional<z.ZodString>;
120
+ expiresAt: z.ZodOptional<z.ZodString>;
121
+ labels: z.ZodOptional<z.ZodObject<{
122
+ $type: z.ZodOptional<z.ZodLiteral<"com.atproto.label.defs#selfLabels">>;
123
+ values: z.ZodArray<z.ZodObject<{
124
+ val: z.ZodString;
125
+ }, z.core.$strip>>;
126
+ }, z.core.$strip>>;
127
+ createdAt: z.ZodString;
128
+ }, z.core.$strip>;
129
+ type ProfileCertificationRecord = z.infer<typeof ProfileCertificationRecordSchema>;
130
+
131
+ /** Zod schema for `id.sifa.profile.course` records. */
132
+ declare const ProfileCourseRecordSchema: z.ZodObject<{
133
+ name: z.ZodString;
134
+ number: z.ZodOptional<z.ZodString>;
135
+ institution: z.ZodOptional<z.ZodString>;
136
+ entityRef: z.ZodOptional<z.ZodString>;
137
+ education: z.ZodOptional<z.ZodObject<{
138
+ uri: z.ZodString;
139
+ cid: z.ZodString;
140
+ }, z.core.$strip>>;
141
+ credential: z.ZodOptional<z.ZodString>;
142
+ createdAt: z.ZodString;
143
+ }, z.core.$strip>;
144
+ type ProfileCourseRecord = z.infer<typeof ProfileCourseRecordSchema>;
145
+
146
+ /** Zod schema for `id.sifa.profile.education` records. */
147
+ declare const ProfileEducationRecordSchema: z.ZodObject<{
148
+ institution: z.ZodString;
149
+ institutionDid: z.ZodOptional<z.ZodString>;
150
+ entityRef: z.ZodOptional<z.ZodString>;
151
+ degree: z.ZodOptional<z.ZodString>;
152
+ fieldOfStudy: z.ZodOptional<z.ZodString>;
153
+ grade: z.ZodOptional<z.ZodString>;
154
+ activities: z.ZodOptional<z.ZodString>;
155
+ description: z.ZodOptional<z.ZodString>;
156
+ location: z.ZodOptional<z.ZodUnknown>;
157
+ startedAt: z.ZodOptional<z.ZodString>;
158
+ endedAt: z.ZodOptional<z.ZodString>;
159
+ labels: z.ZodOptional<z.ZodObject<{
160
+ $type: z.ZodOptional<z.ZodLiteral<"com.atproto.label.defs#selfLabels">>;
161
+ values: z.ZodArray<z.ZodObject<{
162
+ val: z.ZodString;
163
+ }, z.core.$strip>>;
164
+ }, z.core.$strip>>;
165
+ createdAt: z.ZodString;
166
+ }, z.core.$strip>;
167
+ type ProfileEducationRecord = z.infer<typeof ProfileEducationRecordSchema>;
168
+
169
+ /**
170
+ * Zod schema for `id.sifa.profile.externalAccount` records.
171
+ *
172
+ * `platform` is advisory (`knownValues` in the lexicon) -- known values live
173
+ * under `id.sifa.defs#platform*` but unknown values are accepted.
174
+ */
175
+ declare const ProfileExternalAccountRecordSchema: z.ZodObject<{
176
+ platform: z.ZodString;
177
+ url: z.ZodString;
178
+ label: z.ZodOptional<z.ZodString>;
179
+ feedUrl: z.ZodOptional<z.ZodString>;
180
+ isPrimary: z.ZodOptional<z.ZodBoolean>;
181
+ createdAt: z.ZodString;
182
+ }, z.core.$strip>;
183
+ type ProfileExternalAccountRecord = z.infer<typeof ProfileExternalAccountRecordSchema>;
184
+
185
+ /** Zod schema for `id.sifa.profile.honor` records. */
186
+ declare const ProfileHonorRecordSchema: z.ZodObject<{
187
+ title: z.ZodString;
188
+ issuer: z.ZodOptional<z.ZodString>;
189
+ issuerDid: z.ZodOptional<z.ZodString>;
190
+ entityRef: z.ZodOptional<z.ZodString>;
191
+ description: z.ZodOptional<z.ZodString>;
192
+ awardedAt: z.ZodOptional<z.ZodString>;
193
+ createdAt: z.ZodString;
194
+ }, z.core.$strip>;
195
+ type ProfileHonorRecord = z.infer<typeof ProfileHonorRecordSchema>;
4
196
 
5
197
  /** Collection NSID for involvement records. Pass to the generic record helpers. */
6
198
  declare const PROFILE_INVOLVEMENT_NSID = "id.sifa.profile.involvement";
@@ -37,6 +229,11 @@ declare const ProfileInvolvementRecordSchema: z.ZodObject<{
37
229
  kind: z.ZodOptional<z.ZodString>;
38
230
  label: z.ZodOptional<z.ZodString>;
39
231
  }, z.core.$loose>>>;
232
+ entityRef: z.ZodOptional<z.ZodString>;
233
+ location: z.ZodOptional<z.ZodUnknown>;
234
+ skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
235
+ uri: z.ZodString;
236
+ }, z.core.$strip>>>;
40
237
  labels: z.ZodOptional<z.ZodObject<{
41
238
  $type: z.ZodOptional<z.ZodLiteral<"com.atproto.label.defs#selfLabels">>;
42
239
  values: z.ZodArray<z.ZodObject<{
@@ -47,4 +244,224 @@ declare const ProfileInvolvementRecordSchema: z.ZodObject<{
47
244
  }, z.core.$loose>;
48
245
  type ProfileInvolvementRecord = z.infer<typeof ProfileInvolvementRecordSchema>;
49
246
 
50
- export { type ArtifactLink, ArtifactLinkSchema, PROFILE_INVOLVEMENT_NSID, type ProfileInvolvementRecord, ProfileInvolvementRecordSchema };
247
+ /**
248
+ * Zod schema for `id.sifa.profile.language` records.
249
+ *
250
+ * `proficiency` is advisory (`knownValues` in the lexicon) -- known values
251
+ * are the five-level LinkedIn-compatible scale under `id.sifa.defs#*`.
252
+ */
253
+ declare const ProfileLanguageRecordSchema: z.ZodObject<{
254
+ name: z.ZodString;
255
+ proficiency: z.ZodOptional<z.ZodString>;
256
+ createdAt: z.ZodString;
257
+ }, z.core.$strip>;
258
+ type ProfileLanguageRecord = z.infer<typeof ProfileLanguageRecordSchema>;
259
+
260
+ /** Zod schema for `id.sifa.profile.position` records. */
261
+ declare const ProfilePositionRecordSchema: z.ZodObject<{
262
+ company: z.ZodOptional<z.ZodString>;
263
+ companyDid: z.ZodOptional<z.ZodString>;
264
+ entityRef: z.ZodOptional<z.ZodString>;
265
+ title: z.ZodString;
266
+ description: z.ZodOptional<z.ZodString>;
267
+ employmentType: z.ZodOptional<z.ZodString>;
268
+ workplaceType: z.ZodOptional<z.ZodString>;
269
+ location: z.ZodOptional<z.ZodUnknown>;
270
+ startedAt: z.ZodString;
271
+ endedAt: z.ZodOptional<z.ZodString>;
272
+ skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
273
+ uri: z.ZodString;
274
+ cid: z.ZodString;
275
+ }, z.core.$strip>>>;
276
+ labels: z.ZodOptional<z.ZodObject<{
277
+ $type: z.ZodOptional<z.ZodLiteral<"com.atproto.label.defs#selfLabels">>;
278
+ values: z.ZodArray<z.ZodObject<{
279
+ val: z.ZodString;
280
+ }, z.core.$strip>>;
281
+ }, z.core.$strip>>;
282
+ createdAt: z.ZodString;
283
+ }, z.core.$strip>;
284
+ type ProfilePositionRecord = z.infer<typeof ProfilePositionRecordSchema>;
285
+
286
+ /**
287
+ * Zod schema for `id.sifa.profile.presentationDelivery` records (one occasion
288
+ * on which a presentation was delivered). Works standalone or linked to a
289
+ * presentation and/or a calendar event. `role`, `mode`, and `status` are open
290
+ * enums (knownValues); `mode`/`status` store the full
291
+ * `community.lexicon.calendar.event` token.
292
+ */
293
+ declare const ProfilePresentationDeliveryRecordSchema: z.ZodObject<{
294
+ presentationRef: z.ZodOptional<z.ZodObject<{
295
+ uri: z.ZodString;
296
+ cid: z.ZodOptional<z.ZodString>;
297
+ }, z.core.$strip>>;
298
+ title: z.ZodOptional<z.ZodString>;
299
+ role: z.ZodOptional<z.ZodString>;
300
+ eventName: z.ZodOptional<z.ZodString>;
301
+ date: z.ZodOptional<z.ZodString>;
302
+ location: z.ZodOptional<z.ZodString>;
303
+ mode: z.ZodOptional<z.ZodString>;
304
+ status: z.ZodOptional<z.ZodString>;
305
+ links: z.ZodOptional<z.ZodArray<z.ZodObject<{
306
+ uri: z.ZodString;
307
+ label: z.ZodOptional<z.ZodString>;
308
+ type: z.ZodOptional<z.ZodString>;
309
+ }, z.core.$strip>>>;
310
+ eventRef: z.ZodOptional<z.ZodObject<{
311
+ uri: z.ZodString;
312
+ cid: z.ZodOptional<z.ZodString>;
313
+ }, z.core.$strip>>;
314
+ coSpeakers: z.ZodOptional<z.ZodArray<z.ZodString>>;
315
+ createdAt: z.ZodString;
316
+ }, z.core.$strip>;
317
+ type ProfilePresentationDeliveryRecord = z.infer<typeof ProfilePresentationDeliveryRecordSchema>;
318
+
319
+ /** Zod schema for `id.sifa.profile.project` records. */
320
+ declare const ProfileProjectRecordSchema: z.ZodObject<{
321
+ name: z.ZodString;
322
+ description: z.ZodOptional<z.ZodString>;
323
+ url: z.ZodOptional<z.ZodString>;
324
+ position: z.ZodOptional<z.ZodObject<{
325
+ uri: z.ZodString;
326
+ cid: z.ZodString;
327
+ }, z.core.$strip>>;
328
+ startedAt: z.ZodOptional<z.ZodString>;
329
+ endedAt: z.ZodOptional<z.ZodString>;
330
+ labels: z.ZodOptional<z.ZodObject<{
331
+ $type: z.ZodOptional<z.ZodLiteral<"com.atproto.label.defs#selfLabels">>;
332
+ values: z.ZodArray<z.ZodObject<{
333
+ val: z.ZodString;
334
+ }, z.core.$strip>>;
335
+ }, z.core.$strip>>;
336
+ createdAt: z.ZodString;
337
+ }, z.core.$strip>;
338
+ type ProfileProjectRecord = z.infer<typeof ProfileProjectRecordSchema>;
339
+
340
+ /** Author shape from `id.sifa.profile.publication#author`. */
341
+ declare const PublicationAuthorSchema: z.ZodObject<{
342
+ name: z.ZodString;
343
+ did: z.ZodOptional<z.ZodString>;
344
+ }, z.core.$strip>;
345
+ type PublicationAuthor = z.infer<typeof PublicationAuthorSchema>;
346
+ /** Zod schema for `id.sifa.profile.publication` records. */
347
+ declare const ProfilePublicationRecordSchema: z.ZodObject<{
348
+ title: z.ZodString;
349
+ subtitle: z.ZodOptional<z.ZodString>;
350
+ publisher: z.ZodOptional<z.ZodString>;
351
+ url: z.ZodOptional<z.ZodString>;
352
+ description: z.ZodOptional<z.ZodString>;
353
+ authors: z.ZodOptional<z.ZodArray<z.ZodObject<{
354
+ name: z.ZodString;
355
+ did: z.ZodOptional<z.ZodString>;
356
+ }, z.core.$strip>>>;
357
+ publishedAt: z.ZodOptional<z.ZodString>;
358
+ createdAt: z.ZodString;
359
+ }, z.core.$strip>;
360
+ type ProfilePublicationRecord = z.infer<typeof ProfilePublicationRecordSchema>;
361
+
362
+ /**
363
+ * Zod schema for `id.sifa.profile.self` records. Singleton (record key `self`).
364
+ *
365
+ * `knownValues` on `openTo` and `preferredWorkplace` are advisory per the
366
+ * lexicon spec -- unknown values are allowed, but documented options live
367
+ * under the `id.sifa.defs#*` namespace.
368
+ */
369
+ declare const ProfileSelfRecordSchema: z.ZodObject<{
370
+ headline: z.ZodOptional<z.ZodString>;
371
+ about: z.ZodOptional<z.ZodString>;
372
+ industry: z.ZodOptional<z.ZodString>;
373
+ givenName: z.ZodOptional<z.ZodString>;
374
+ familyName: z.ZodOptional<z.ZodString>;
375
+ location: z.ZodOptional<z.ZodUnknown>;
376
+ openTo: z.ZodOptional<z.ZodArray<z.ZodString>>;
377
+ preferredWorkplace: z.ZodOptional<z.ZodArray<z.ZodString>>;
378
+ langs: z.ZodOptional<z.ZodArray<z.ZodString>>;
379
+ labels: z.ZodOptional<z.ZodObject<{
380
+ $type: z.ZodOptional<z.ZodLiteral<"com.atproto.label.defs#selfLabels">>;
381
+ values: z.ZodArray<z.ZodObject<{
382
+ val: z.ZodString;
383
+ }, z.core.$strip>>;
384
+ }, z.core.$strip>>;
385
+ discoverable: z.ZodOptional<z.ZodBoolean>;
386
+ createdAt: z.ZodString;
387
+ }, z.core.$strip>;
388
+ type ProfileSelfRecord = z.infer<typeof ProfileSelfRecordSchema>;
389
+
390
+ /**
391
+ * Zod schema for `id.sifa.profile.skill` records.
392
+ *
393
+ * `category` is advisory (`knownValues` in the lexicon) -- known values live
394
+ * under `id.sifa.defs#*` but unknown values are accepted.
395
+ */
396
+ declare const ProfileSkillRecordSchema: z.ZodObject<{
397
+ name: z.ZodString;
398
+ category: z.ZodOptional<z.ZodString>;
399
+ createdAt: z.ZodString;
400
+ }, z.core.$strip>;
401
+ type ProfileSkillRecord = z.infer<typeof ProfileSkillRecordSchema>;
402
+
403
+ /** Zod schema for `id.sifa.profile.volunteering` records. */
404
+ declare const ProfileVolunteeringRecordSchema: z.ZodObject<{
405
+ organization: z.ZodString;
406
+ organizationDid: z.ZodOptional<z.ZodString>;
407
+ entityRef: z.ZodOptional<z.ZodString>;
408
+ role: z.ZodOptional<z.ZodString>;
409
+ cause: z.ZodOptional<z.ZodString>;
410
+ description: z.ZodOptional<z.ZodString>;
411
+ startedAt: z.ZodOptional<z.ZodString>;
412
+ endedAt: z.ZodOptional<z.ZodString>;
413
+ createdAt: z.ZodString;
414
+ }, z.core.$strip>;
415
+ type ProfileVolunteeringRecord = z.infer<typeof ProfileVolunteeringRecordSchema>;
416
+
417
+ /**
418
+ * Grapheme-aware refinement matching the AT Protocol lexicon `maxGraphemes`
419
+ * constraint. JS strings are sequences of UTF-16 code units, but lexicon
420
+ * `maxGraphemes` counts user-perceived characters (grapheme clusters), so
421
+ * emoji sequences, regional indicators, ZWJ joins, and combining marks all
422
+ * count as one unit each. We use `Intl.Segmenter` to enforce this correctly.
423
+ */
424
+ declare function maxGraphemes(max: number): (value: string) => boolean;
425
+ /** Decentralized identifier, AT Protocol `format: did`. */
426
+ declare const didSchema: z.ZodString;
427
+ /** RFC 3339 datetime with timezone offset, AT Protocol `format: datetime`. */
428
+ declare const datetimeSchema: z.ZodString;
429
+ /** Generic AT-URI, AT Protocol `format: at-uri`. */
430
+ declare const atUriSchema: z.ZodString;
431
+ /** Content identifier, AT Protocol `format: cid`. Loose validation -- accepts CIDv0 and CIDv1. */
432
+ declare const cidSchema: z.ZodString;
433
+ /** BCP 47 language tag, AT Protocol `format: language`. */
434
+ declare const languageTagSchema: z.ZodString;
435
+ /** Generic URI, AT Protocol `format: uri`. */
436
+ declare const uriSchema: z.ZodString;
437
+ /**
438
+ * StrongRef shape from `com.atproto.repo.strongRef` -- pins a record by both
439
+ * AT-URI (identity) and CID (version).
440
+ */
441
+ declare const strongRefSchema: z.ZodObject<{
442
+ uri: z.ZodString;
443
+ cid: z.ZodString;
444
+ }, z.core.$strip>;
445
+ /**
446
+ * Reference to a record by AT-URI, with an optional CID. Mirrors
447
+ * `id.sifa.defs#externalRecordRef`. Unlike a strongRef the CID is optional:
448
+ * consumers resolve the AT-URI live so the reference tracks edits to the
449
+ * target, and the CID is a best-effort integrity hint only.
450
+ */
451
+ declare const externalRecordRefSchema: z.ZodObject<{
452
+ uri: z.ZodString;
453
+ cid: z.ZodOptional<z.ZodString>;
454
+ }, z.core.$strip>;
455
+ /**
456
+ * Self-labels shape from `com.atproto.label.defs#selfLabels`. Modelled
457
+ * permissively because clients rarely construct this directly; the AppView
458
+ * handles label validation.
459
+ */
460
+ declare const selfLabelsSchema: z.ZodObject<{
461
+ $type: z.ZodOptional<z.ZodLiteral<"com.atproto.label.defs#selfLabels">>;
462
+ values: z.ZodArray<z.ZodObject<{
463
+ val: z.ZodString;
464
+ }, z.core.$strip>>;
465
+ }, z.core.$strip>;
466
+
467
+ export { type ArtifactLink, ArtifactLinkSchema, type EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, type EndorsementRecord, EndorsementRecordSchema, type GraphFollowRecord, GraphFollowRecordSchema, PROFILE_INVOLVEMENT_NSID, type PresentationDuration, PresentationDurationSchema, type PresentationLink, PresentationLinkSchema, type ProfileCertificationRecord, ProfileCertificationRecordSchema, type ProfileCourseRecord, ProfileCourseRecordSchema, type ProfileEducationRecord, ProfileEducationRecordSchema, type ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, type ProfileHonorRecord, ProfileHonorRecordSchema, type ProfileInvolvementRecord, ProfileInvolvementRecordSchema, type ProfileLanguageRecord, ProfileLanguageRecordSchema, type ProfilePositionRecord, ProfilePositionRecordSchema, type ProfilePresentationDeliveryRecord, ProfilePresentationDeliveryRecordSchema, type ProfilePresentationRecord, ProfilePresentationRecordSchema, type ProfileProjectRecord, ProfileProjectRecordSchema, type ProfilePublicationRecord, ProfilePublicationRecordSchema, type ProfileSelfRecord, ProfileSelfRecordSchema, type ProfileSkillRecord, ProfileSkillRecordSchema, type ProfileVolunteeringRecord, ProfileVolunteeringRecordSchema, type PublicationAuthor, PublicationAuthorSchema, atUriSchema, cidSchema, datetimeSchema, didSchema, externalRecordRefSchema, languageTagSchema, makeGraphFollowRecordSchema, maxGraphemes, selfLabelsSchema, strongRefSchema, uriSchema };
@@ -269,6 +269,13 @@ var ProfileInvolvementRecordSchema = z.object({
269
269
  startedAt: partialDateSchema.optional(),
270
270
  endedAt: partialDateSchema.optional(),
271
271
  links: z.array(ArtifactLinkSchema).max(50).optional(),
272
+ // Portable org entity identifier (Wikidata/ROR/LEI URI) from the resolver
273
+ // typeahead, constrained to http(s) so a script scheme is never a valid ref.
274
+ entityRef: z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional(),
275
+ // community.lexicon.location.address — validated at the app layer.
276
+ location: z.unknown().optional(),
277
+ // id.sifa.defs#skillRef references (at-uri to a skill record in the same repo).
278
+ skills: z.array(z.object({ uri: z.string() })).max(50).optional(),
272
279
  labels: selfLabelsSchema.optional(),
273
280
  createdAt: datetimeSchema
274
281
  }).passthrough();