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