@singi-labs/sifa-sdk 0.12.50 → 0.12.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/{index-10rMsh0Y.d.cts → index-B-BExLL4.d.cts} +27 -3
  2. package/dist/{index-CxZBzRTC.d.cts → index-B1F632lI.d.cts} +3 -3
  3. package/dist/{index-KQD7YLsb.d.ts → index-BeiqwDak.d.ts} +27 -3
  4. package/dist/{index-CatO6M_Y.d.ts → index-D9_yFc0m.d.ts} +3 -3
  5. package/dist/index.cjs +218 -29
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.cts +5 -5
  8. package/dist/index.d.ts +5 -5
  9. package/dist/index.js +216 -30
  10. package/dist/index.js.map +1 -1
  11. package/dist/{org-8ysVY69a.d.ts → org-lRzEl8je.d.ts} +51 -3
  12. package/dist/{org-Be0SH7dO.d.cts → org-xybLlTXW.d.cts} +51 -3
  13. package/dist/{profile-summary-DyX9EJzZ.d.ts → profile-summary-elBg0fG6.d.ts} +1 -1
  14. package/dist/{profile-summary-DReI-P0i.d.cts → profile-summary-jUtrgYrA.d.cts} +1 -1
  15. package/dist/query/fetchers/index.cjs +24 -0
  16. package/dist/query/fetchers/index.cjs.map +1 -1
  17. package/dist/query/fetchers/index.d.cts +4 -4
  18. package/dist/query/fetchers/index.d.ts +4 -4
  19. package/dist/query/fetchers/index.js +22 -1
  20. package/dist/query/fetchers/index.js.map +1 -1
  21. package/dist/query/hooks/index.cjs +44 -0
  22. package/dist/query/hooks/index.cjs.map +1 -1
  23. package/dist/query/hooks/index.d.cts +3 -3
  24. package/dist/query/hooks/index.d.ts +3 -3
  25. package/dist/query/hooks/index.js +43 -1
  26. package/dist/query/hooks/index.js.map +1 -1
  27. package/dist/query/index.cjs +48 -0
  28. package/dist/query/index.cjs.map +1 -1
  29. package/dist/query/index.d.cts +7 -7
  30. package/dist/query/index.d.ts +7 -7
  31. package/dist/query/index.js +44 -1
  32. package/dist/query/index.js.map +1 -1
  33. package/dist/schemas/index.cjs +32 -28
  34. package/dist/schemas/index.cjs.map +1 -1
  35. package/dist/schemas/index.d.cts +1 -1
  36. package/dist/schemas/index.d.ts +1 -1
  37. package/dist/schemas/index.js +32 -28
  38. package/dist/schemas/index.js.map +1 -1
  39. package/dist/schemas/write/index.cjs +23 -17
  40. package/dist/schemas/write/index.cjs.map +1 -1
  41. package/dist/schemas/write/index.d.cts +9 -0
  42. package/dist/schemas/write/index.d.ts +9 -0
  43. package/dist/schemas/write/index.js +23 -17
  44. package/dist/schemas/write/index.js.map +1 -1
  45. package/dist/{shared-CqayM24g.d.cts → shared-B9ng04Kt.d.cts} +9 -0
  46. package/dist/{shared-CqayM24g.d.ts → shared-B9ng04Kt.d.ts} +9 -0
  47. package/dist/{adult-content-BUgP8bpf.d.cts → types-CmS4Argp.d.cts} +153 -1
  48. package/dist/{adult-content-BUgP8bpf.d.ts → types-CmS4Argp.d.ts} +153 -1
  49. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/schemas/write/shared.ts","../../../src/schemas/write/certification.ts","../../../src/schemas/write/course.ts","../../../src/schemas/write/education.ts","../../../src/schemas/write/external-account.ts","../../../src/schemas/write/honor.ts","../../../src/schemas/write/involvement.ts","../../../src/schemas/write/language.ts","../../../src/schemas/write/org-employment-attestation.ts","../../../src/schemas/write/org-profile.ts","../../../src/schemas/write/org-claim.ts","../../../src/schemas/write/org-settings.ts","../../../src/schemas/write/position.ts","../../../src/schemas/write/presentation-delivery.ts","../../../src/schemas/blob-ref.ts","../../../src/schemas/write/presentation.ts","../../../src/schemas/write/profile-location.ts","../../../src/schemas/write/profile-self.ts","../../../src/schemas/write/project.ts","../../../src/schemas/write/publication.ts","../../../src/schemas/shared.ts","../../../src/schemas/write/skill.ts","../../../src/schemas/write/volunteering.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n/** Prepend `https://` if no scheme is present. */\nexport function normalizeUrl(val: string): string {\n const trimmed = val.trim();\n if (/^https?:\\/\\//i.test(trimmed)) return trimmed;\n return `https://${trimmed}`;\n}\n\n/**\n * Accept a URL string or silently drop it if invalid (returns `undefined`).\n * Preserves the write-time policy: bad URLs from imports are dropped, not rejected.\n */\nexport const optionalUrl = () =>\n z\n .string()\n .optional()\n .transform((val) => {\n if (!val) return undefined;\n try {\n new URL(val);\n return val;\n } catch {\n return undefined;\n }\n });\n\n/**\n * Location shape accepted by the sifa-api write endpoints.\n *\n * Accepts BOTH the legacy shape (`id.sifa.defs#locationAddress`: `countryCode`,\n * `region`, `city`) AND the new community shape\n * (`community.lexicon.location.address`: `country`, `region`, `locality`,\n * `street?`, `postalCode?`, `name?`). The frontend reads location records from\n * the API and echoes them back on save. The API serializer emits explicit `null`\n * for absent fields (not `undefined`), so every field uses `.nullish()`\n * (`string | null | undefined`) instead of `.optional()` (`string | undefined`).\n *\n * `buildPdsLocation` on the server handles conversion to the PDS shape (always\n * emitting the new community shape) and returns `undefined` when neither\n * `country` nor `countryCode` is usable.\n */\nexport const writeLocationSchema = z\n .union([\n z.object({\n country: z.string().nullish(),\n countryCode: z.string().length(2).nullish(),\n region: z.string().nullish(),\n city: z.string().nullish(),\n locality: z.string().nullish(),\n street: z.string().nullish(),\n postalCode: z.string().nullish(),\n name: z.string().nullish(),\n }),\n z.string(),\n ])\n .nullable()\n .optional();\n\n/** Skill reference: a strong ref to a canonical skill record. */\nexport const skillRefSchema = z.object({\n uri: z.string(),\n});\n\n/**\n * Platforms accepted by the external-account write endpoint.\n *\n * NOTE: this list intentionally differs from `PLATFORM_LABELS` in the SDK's\n * `/taxonomy` subpath. `VALID_PLATFORMS` is what sifa-api's `POST /external-accounts`\n * endpoint enforces; `PLATFORM_LABELS` is the display taxonomy used by the profile\n * UI. Reconciling them is a separate follow-up (see #TBD). For now the two are\n * mirrored verbatim from their prior definitions to preserve behavior.\n */\nexport const VALID_PLATFORMS = [\n 'rss',\n 'fediverse',\n 'twitter',\n 'instagram',\n 'github',\n 'codeberg',\n 'gitlab',\n 'forgejo',\n 'gitea',\n 'youtube',\n 'linkedin',\n 'substack',\n 'website',\n 'orcid',\n 'keyoxide',\n 'other',\n] as const;\n\nexport type ValidPlatform = (typeof VALID_PLATFORMS)[number];\n\n// ---- pure sanitization primitives (previously in sifa-api/src/lib/sanitize.ts) ----\n\n/**\n * Returns `input` when it is an http(s) URL string, else `null`. Blocks\n * dangerous schemes (`javascript:`, `data:`, etc.) from being stored and\n * later rendered.\n */\nexport function httpUrlOrNull(input: unknown): string | null {\n if (typeof input !== 'string') return null;\n try {\n const url = new URL(input);\n return url.protocol === 'http:' || url.protocol === 'https:' ? input : null;\n } catch {\n return null;\n }\n}\n\nconst DATE_ONLY_RE = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n/**\n * Strict calendar-date validator. Returns `true` for `YYYY-MM-DD` strings\n * that name a real day, rejecting impossible values (`2024-02-30`, `2024-13-01`)\n * by requiring the JavaScript `Date` round-trip to preserve the input.\n */\nexport function isValidDateOnly(input: unknown): boolean {\n if (typeof input !== 'string' || !DATE_ONLY_RE.test(input)) return false;\n const parsed = new Date(`${input}T00:00:00Z`);\n return !Number.isNaN(parsed.getTime()) && parsed.toISOString().startsWith(input);\n}\n\n// ---- shared write-schema fragments used by multiple sections ----\n\n/**\n * Portable org entity identifier (Wikidata / ROR / LEI / sifa.id URI) chosen\n * from the typeahead. Constrained to http(s) so a script-bearing scheme can't\n * be written to the PDS record. Absent for free-text / unlinked records.\n * Shared by the org-bearing sections (position, education, certification,\n * volunteering, course, honor).\n */\nexport const entityRefSchema = z\n .string()\n .url()\n .refine((s) => /^https?:\\/\\//i.test(s), { message: 'entityRef must be an http(s) URL' })\n .max(2048)\n .optional();\n\n/**\n * One proof link on an involvement record (`id.sifa.defs#artifactLink`).\n * Only http(s) URLs are accepted so a dangerous scheme is never written to\n * the PDS.\n */\nexport const artifactLinkSchema = z.object({\n url: z\n .string()\n .max(2048)\n .refine((v) => httpUrlOrNull(v) !== null, 'must be an http(s) URL'),\n kind: z.string().max(64).nullable().optional(),\n label: z.string().max(2000).nullable().optional(),\n});\n\n/**\n * Reference to a record by at-uri, with an optional CID\n * (`id.sifa.defs#externalRecordRef`).\n */\nexport const externalRecordRefSchema = z.object({\n uri: z.string().regex(/^at:\\/\\/[^/\\s]+\\/[^/\\s]+\\/[^/\\s]+$/, 'must be an at-uri'),\n // CIDv0 (`Qm…`) or CIDv1 (base32, `b…`). Loose but rejects arbitrary strings.\n cid: z\n .string()\n .max(256)\n .regex(/^(Qm[1-9A-HJ-NP-Za-km-z]{44}|b[A-Za-z2-7]+)$/, 'must be a CID')\n .optional(),\n});\n\n/** Link attached to a presentation record. */\nexport const presentationLinkSchema = z.object({\n uri: z\n .string()\n .max(2048)\n .refine((v) => httpUrlOrNull(v) !== null, 'must be an http(s) URL'),\n label: z.string().max(640).nullable().optional(),\n type: z.string().max(256).nullable().optional(),\n});\n","import { z } from 'zod';\n\nimport { entityRefSchema, optionalUrl } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.certification`. */\nexport const CertificationWriteSchema = z.object({\n name: z.string().min(1).max(256),\n authority: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n credentialId: z.string().max(256).nullable().optional(),\n credentialUrl: optionalUrl(),\n issuedAt: z.string().nullable().optional(),\n expiresAt: z.string().nullable().optional(),\n});\n\nexport type CertificationWriteInput = z.infer<typeof CertificationWriteSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.course`. */\nexport const CourseWriteSchema = z.object({\n name: z.string().min(1).max(200),\n number: z.string().max(50).nullable().optional(),\n institution: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n /**\n * at-uri of the linked `id.sifa.profile.certification` record. Structurally\n * validated (`at://authority/collection/rkey`) so a bad value can't be\n * stored and later split into a bogus rkey.\n */\n credential: z\n .string()\n .max(512)\n .regex(/^at:\\/\\/[^/\\s]+\\/[^/\\s]+\\/[^/\\s]+$/, 'must be an at-uri')\n .nullable()\n .optional(),\n /**\n * RFC 3339 datetime the course was completed. The editor collects month\n * granularity (YYYY-MM) and converts to a datetime before the write; stored\n * and passed through as-is, mirroring `certification.issuedAt`.\n */\n completedAt: z.string().nullable().optional(),\n});\n\nexport type CourseWriteInput = z.infer<typeof CourseWriteSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by `POST /profile/education` on sifa-api. */\nexport const EducationWriteSchema = z.object({\n institution: z.string().min(1).max(256),\n entityRef: entityRefSchema,\n degree: z.string().max(256).nullable().optional(),\n fieldOfStudy: z.string().max(256).nullable().optional(),\n description: z.string().max(50000).nullable().optional(),\n activities: z.string().max(1000).nullable().optional(),\n startedAt: z.string().nullable().optional(),\n endedAt: z.string().nullable().optional(),\n});\n\nexport type EducationWriteInput = z.infer<typeof EducationWriteSchema>;\n","import { z } from 'zod';\n\nimport { VALID_PLATFORMS, normalizeUrl } from './shared.js';\n\n/** Schema enforced by `POST /external-accounts` on sifa-api. */\nexport const ExternalAccountWriteSchema = z.object({\n platform: z.enum(VALID_PLATFORMS),\n url: z.string().max(2000).transform(normalizeUrl).pipe(z.string().url()),\n label: z.string().max(100).optional(),\n feedUrl: z.string().max(2000).transform(normalizeUrl).pipe(z.string().url()).optional(),\n});\n\nexport type ExternalAccountWriteInput = z.infer<typeof ExternalAccountWriteSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.honor`. */\nexport const HonorWriteSchema = z.object({\n title: z.string().min(1).max(200),\n issuer: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n description: z.string().max(50000).nullable().optional(),\n awardedAt: z.string().nullable().optional(),\n});\n\nexport type HonorWriteInput = z.infer<typeof HonorWriteSchema>;\n","import { z } from 'zod';\n\nimport {\n artifactLinkSchema,\n entityRefSchema,\n optionalUrl,\n skillRefSchema,\n writeLocationSchema,\n} from './shared.js';\n\n/**\n * Schema enforced by the generic-record write endpoint for `id.sifa.profile.involvement`.\n *\n * Represents contribution to an upstream project or community\n * (open-source maintainership, community volunteering, etc.). `upstream` /\n * `upstreamDid` / `upstreamUrl` describe what the user contributed to;\n * `links` collect proof artifacts.\n */\nexport const InvolvementWriteSchema = z.object({\n kind: z.string().min(1).max(256),\n upstream: z.string().max(2560).nullable().optional(),\n upstreamDid: z\n .string()\n .regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID')\n .nullable()\n .optional(),\n upstreamUrl: optionalUrl(),\n role: z.string().max(2560).nullable().optional(),\n description: z.string().max(50000).nullable().optional(),\n // Freeform YYYY / YYYY-MM / YYYY-MM-DD; validated loosely so partial dates pass.\n startedAt: z.string().max(32).nullable().optional(),\n endedAt: z.string().max(32).nullable().optional(),\n links: z.array(artifactLinkSchema).max(50).nullable().optional(),\n entityRef: entityRefSchema,\n location: writeLocationSchema,\n skills: z.array(skillRefSchema).max(50).nullable().optional(),\n});\n\nexport type InvolvementWriteInput = z.infer<typeof InvolvementWriteSchema>;\n","import { z } from 'zod';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.language`. */\nexport const LanguageWriteSchema = z.object({\n name: z.string().min(1).max(64),\n proficiency: z.string().max(50).optional(),\n});\n\nexport type LanguageWriteInput = z.infer<typeof LanguageWriteSchema>;\n","import { z } from 'zod';\n\nimport { externalRecordRefSchema } from './shared.js';\n\n/**\n * Schema enforced by the org-employment-attestation write endpoint on sifa-api.\n *\n * An org attests that a Sifa user (`subject`) held a specific `position` record\n * with `title` between `startedAt` and `endedAt` (inclusive of \"current\" status).\n * The attestation itself is signed by the org's DID; `entityRef` / `companyDid`\n * optionally cross-link the org identifier(s) used at the time.\n */\nexport const OrgEmploymentAttestationWriteSchema = z.object({\n subject: z.string().regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID'),\n position: externalRecordRefSchema,\n status: z.enum(['current', 'past']),\n title: z.string().min(1).max(2560),\n startedAt: z.string().max(32),\n entityRef: z.string().max(2048).nullable().optional(),\n companyDid: z\n .string()\n .regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID')\n .nullable()\n .optional(),\n endedAt: z.string().max(32).nullable().optional(),\n comment: z.string().max(3000).nullable().optional(),\n createdAt: z.string(),\n});\n\nexport type OrgEmploymentAttestationWriteInput = z.infer<\n typeof OrgEmploymentAttestationWriteSchema\n>;\n","import { z } from 'zod';\n\n/**\n * Schema enforced by the org-profile write endpoint on sifa-api.\n *\n * Sifa-managed org identity: name + description + contact channel plus\n * `entityRefs` linking the org to portable identifiers (Wikidata / ROR /\n * LEI / sifa.id URI, http(s) enforced elsewhere).\n */\n/** Structured physical address (community.lexicon.location.address; all fields optional). */\nconst orgAddressWriteSchema = z.object({\n country: z.string().max(10).nullable().optional(),\n postalCode: z.string().max(20).nullable().optional(),\n region: z.string().max(1000).nullable().optional(),\n locality: z.string().max(1000).nullable().optional(),\n street: z.string().max(2000).nullable().optional(),\n name: z.string().max(1000).nullable().optional(),\n});\n\n/** A featured link (both `name` and `url` required). */\nconst orgLinkWriteSchema = z.object({\n name: z.string().min(1).max(600),\n url: z.string().max(2048),\n});\n\nexport const OrgProfileWriteSchema = z.object({\n name: z.string().min(1).max(2000),\n description: z.string().max(50000).nullable().optional(),\n logo: z.unknown().nullable().optional(),\n website: z.string().max(2048).nullable().optional(),\n entityRefs: z.array(z.string().max(2048)).max(20).nullable().optional(),\n contact: z.string().max(320).nullable().optional(),\n addresses: z.array(orgAddressWriteSchema).max(10).nullable().optional(),\n companySize: z.string().max(20).nullable().optional(),\n links: z.array(orgLinkWriteSchema).max(10).nullable().optional(),\n personalProfileVisible: z.boolean().nullable().optional(),\n createdAt: z.string(),\n});\n\nexport type OrgProfileWriteInput = z.infer<typeof OrgProfileWriteSchema>;\n","import { z } from 'zod';\n\n/**\n * Body accepted by `POST /api/org/claim` (the org claim wizard finalize).\n *\n * Mirrors `claimBodySchema` in sifa-api `src/routes/org-claim.ts` EXACTLY: the\n * editable profile fields plus `entityRefs` (at least one -- a claim without a\n * binding renders but aggregates nothing) and the `authorityAck` checkbox\n * (`literal(true)` -- the logged \"I am authorized to represent this org\"\n * assertion). `logo`/`createdAt` are NOT part of the claim body (the endpoint\n * sets `createdAt` server-side and the logo is uploaded separately).\n */\nexport const OrgClaimRequestSchema = z.object({\n name: z.string().min(1).max(2000),\n description: z.string().max(50000).optional(),\n website: z.string().max(2048).optional(),\n contact: z.string().max(320).optional(),\n entityRefs: z.array(z.string().min(1).max(2048)).min(1).max(20),\n /**\n * Sole-trader opt-in: keep the claimant's personal profile visible at `/p/`\n * alongside the new company page at `/c/`. Omitted or false presents the\n * account solely as an organization.\n */\n personalProfileVisible: z.boolean().optional(),\n authorityAck: z.literal(true),\n});\n\nexport type OrgClaimRequestInput = z.infer<typeof OrgClaimRequestSchema>;\n","import { z } from 'zod';\n\n/**\n * Blob-ref passthrough for the org logo. Mirrors the `blobRefSchema` validated\n * by `PUT /api/org/profile` in sifa-api `src/routes/org-settings.ts` -- the\n * shape is validated, then written to the PDS verbatim.\n */\nconst orgLogoBlobSchema = z.object({\n $type: z.literal('blob'),\n ref: z.object({ $link: z.string().min(1) }),\n mimeType: z.string().min(1).max(255),\n size: z.number().int().nonnegative(),\n});\n\n/**\n * Body accepted by `PUT /api/org/profile` (edit the org record).\n *\n * Mirrors `profileBodySchema` in sifa-api `src/routes/org-settings.ts` EXACTLY.\n * Distinct from {@link OrgClaimRequestSchema}: no `authorityAck` (already\n * asserted at claim time), and an optional `logo` blob ref (a cleared field is\n * omitted, driving the fresh-from-body PDS PUT -- no spread-merge).\n */\nexport const OrgProfileUpdateRequestSchema = z.object({\n name: z.string().min(1).max(2000),\n description: z.string().max(50000).optional(),\n website: z.string().max(2048).optional(),\n contact: z.string().max(320).optional(),\n entityRefs: z.array(z.string().min(1).max(2048)).min(1).max(20),\n logo: orgLogoBlobSchema.optional(),\n /** Sole-trader opt-in; see {@link OrgClaimRequestSchema}. Flippable after the claim. */\n personalProfileVisible: z.boolean().optional(),\n});\n\nexport type OrgProfileUpdateRequestInput = z.infer<typeof OrgProfileUpdateRequestSchema>;\n\n/**\n * Body accepted by `POST /api/org/domains/challenge` (issue a one-time DNS TXT\n * challenge). Mirrors `challengeBodySchema` in sifa-api.\n */\nexport const OrgDomainChallengeRequestSchema = z.object({\n domain: z.string().min(1).max(255),\n});\n\nexport type OrgDomainChallengeRequestInput = z.infer<typeof OrgDomainChallengeRequestSchema>;\n\n/**\n * Body accepted by `POST /api/org/domains/verify` (verify a challenge via DoH\n * TXT lookup). Mirrors `verifyBodySchema` in sifa-api.\n */\nexport const OrgDomainVerifyRequestSchema = z.object({\n token: z.string().min(1).max(2048),\n});\n\nexport type OrgDomainVerifyRequestInput = z.infer<typeof OrgDomainVerifyRequestSchema>;\n\n/**\n * Body accepted by `POST` and `DELETE /api/org/notification-emails` (add /\n * remove a notification address). Mirrors `notificationEmailBodySchema` in\n * sifa-api. The bound-domain check is server-side (the address must use a\n * domain the org controls).\n */\nexport const OrgNotificationEmailRequestSchema = z.object({\n email: z.string().email().max(320),\n});\n\nexport type OrgNotificationEmailRequestInput = z.infer<typeof OrgNotificationEmailRequestSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema, skillRefSchema, writeLocationSchema } from './shared.js';\n\n/**\n * Schema enforced by `POST /profile/positions` on sifa-api.\n *\n * Client-side callers can `.safeParse(...)` this before submitting to catch\n * obvious problems (empty `title`, over-length text) before the network\n * round-trip. If it passes here, the API will accept the write modulo\n * transport / auth failures.\n *\n * `company` is optional to support freelancer / independent employment types\n * where the position has no employer. This matches sifa-api's current\n * behavior in `src/routes/schemas.ts` and the SDK's lexicon schema\n * (`ProfilePositionRecordSchema`) since sifa-sdk #184.\n */\nexport const PositionWriteSchema = z.object({\n company: z.string().min(1).max(256).nullable().optional(),\n entityRef: entityRefSchema,\n title: z.string().min(1).max(256),\n description: z.string().max(50000).nullable().optional(),\n employmentType: z.string().nullable().optional(),\n workplaceType: z.string().nullable().optional(),\n location: writeLocationSchema,\n startedAt: z.string().nullable().optional(),\n endedAt: z.string().nullable().optional(),\n skills: z.array(skillRefSchema).max(50).nullable().optional(),\n});\n\nexport type PositionWriteInput = z.infer<typeof PositionWriteSchema>;\n","import { z } from 'zod';\n\nimport {\n externalRecordRefSchema,\n isValidDateOnly,\n presentationLinkSchema,\n writeLocationSchema,\n} from './shared.js';\n\n/**\n * Schema enforced by the generic-record write endpoint for `id.sifa.profile.presentationDelivery`.\n *\n * Records a specific delivery of a presentation (e.g., at a conference).\n * `presentationRef` optionally points at the parent `id.sifa.profile.presentation`\n * record; `eventRef` optionally links a Sifa event record; `coSpeakers` are\n * DIDs of people who delivered alongside the profile owner.\n */\nexport const PresentationDeliveryWriteSchema = z.object({\n presentationRef: externalRecordRefSchema.optional(),\n /**\n * The same session as recorded on another person's profile. Distinct from\n * presentationRef above, which points at the talk this session delivered.\n */\n sameAs: externalRecordRefSchema.optional(),\n title: z.string().max(3000).nullable().optional(),\n role: z.string().max(640).nullable().optional(),\n eventName: z.string().max(3000).nullable().optional(),\n date: z.string().refine(isValidDateOnly, 'must be a valid YYYY-MM-DD date').nullable().optional(),\n location: z.string().max(2560).nullable().optional(),\n // Structured community.lexicon.location.address; `location` above stays as\n // the legacy free-text fallback. writeLocationSchema is already nullable+optional.\n address: writeLocationSchema,\n mode: z.string().max(256).nullable().optional(),\n status: z.string().max(256).nullable().optional(),\n links: z.array(presentationLinkSchema).max(20).optional(),\n eventRef: externalRecordRefSchema.optional(),\n coSpeakers: z\n .array(z.string().regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID'))\n .max(20)\n .optional(),\n});\n\nexport type PresentationDeliveryWriteInput = z.infer<typeof PresentationDeliveryWriteSchema>;\n","import { z } from 'zod';\n\n/**\n * Blob-ref passthrough shared by records that carry an uploaded blob (org logo,\n * presentation cover image, ...). Mirrors the `blobRefSchema` validated by the\n * sifa-api write endpoints -- the shape is validated, then written to the PDS\n * verbatim.\n */\nexport const BlobRefSchema = z.object({\n $type: z.literal('blob'),\n ref: z.object({ $link: z.string().min(1) }),\n mimeType: z.string().min(1).max(255),\n size: z.number().int().nonnegative(),\n});\n\nexport type BlobRef = z.infer<typeof BlobRefSchema>;\n","import { z } from 'zod';\n\nimport { BlobRefSchema } from '../blob-ref.js';\nimport { externalRecordRefSchema, presentationLinkSchema } from './shared.js';\n\n/**\n * Schema enforced by the generic-record write endpoint for `id.sifa.profile.presentation`.\n *\n * Describes a talk / presentation the user can give. `duration` bounds the\n * runtime; `intendedAudiences` names who it's aimed at; `writeupRef` is an\n * optional at-uri pointer to a companion writeup record.\n */\nexport const PresentationWriteSchema = z.object({\n title: z.string().min(1).max(3000),\n description: z.string().max(50000).nullable().optional(),\n duration: z\n .object({\n minMinutes: z.number().int().min(1),\n maxMinutes: z.number().int().min(1).optional(),\n })\n .refine((d) => d.maxMinutes === undefined || d.maxMinutes >= d.minMinutes, {\n message: 'maxMinutes must be greater than or equal to minMinutes',\n path: ['maxMinutes'],\n })\n .optional(),\n intendedAudiences: z.array(z.string().max(1000)).max(20).optional(),\n links: z.array(presentationLinkSchema).max(20).optional(),\n writeupRef: externalRecordRefSchema.optional(),\n coverImage: BlobRefSchema.nullable().optional(),\n});\n\nexport type PresentationWriteInput = z.infer<typeof PresentationWriteSchema>;\n","import { z } from 'zod';\n\n/**\n * Schema enforced by `POST /profile/locations` on sifa-api.\n *\n * Mirrors the inner object of `writeLocationSchema`: accepts both the community\n * shape (`country`, `locality`) and the legacy shape (`countryCode`, `city`)\n * during the dual-read window. sifa-web #840 switched outbound writes to the\n * community shape; older clients may still send the legacy shape. All address\n * fields are `.nullish()` so explicit `null` from API echoes is accepted\n * (see sifa-api #426).\n *\n * The route handler hands `address` to `buildPdsLocation`, which normalizes\n * either input and enforces alpha-2 on the wire to PDS — returning a 400 with\n * `message: \"address.country (alpha-2) is required\"` when no usable code is\n * present. The schema stays permissive on country length here and lets\n * `buildPdsLocation` be the single enforcement point.\n */\nexport const ProfileLocationWriteSchema = z.object({\n address: z.object({\n country: z.string().nullish(),\n countryCode: z.string().length(2).nullish(),\n region: z.string().nullish(),\n city: z.string().nullish(),\n locality: z.string().nullish(),\n street: z.string().nullish(),\n postalCode: z.string().nullish(),\n name: z.string().nullish(),\n }),\n type: z.string().min(1),\n label: z.string().max(60).nullable().optional(),\n isPrimary: z.boolean().optional(),\n});\n\nexport type ProfileLocationWriteInput = z.infer<typeof ProfileLocationWriteSchema>;\n","import { z } from 'zod';\n\nimport { writeLocationSchema } from './shared.js';\n\n/**\n * Schema enforced by `POST /profile/self` on sifa-api.\n *\n * `.passthrough()` so the API accepts fields not yet enumerated here (used for\n * gradual rollout of new profile-self keys without requiring lockstep bumps\n * between web/api). Note this means client validation on this schema will\n * NEVER reject \"unknown\" fields — the divergence is intentional.\n *\n * Grapheme caps (e.g. 64 on given/familyName) are enforced client-side by the\n * SDK's lexicon schema; the write schema only guards the byte-length ceiling.\n */\nexport const ProfileSelfWriteSchema = z\n .object({\n headline: z.string().max(300).optional(),\n about: z.string().max(50000).optional(),\n givenName: z.string().max(640).optional(),\n familyName: z.string().max(640).optional(),\n industries: z\n .array(\n z.object({\n industry: z.string().max(100),\n domain: z.string().max(100).optional(),\n }),\n )\n .max(10)\n .optional(),\n location: writeLocationSchema,\n openTo: z.array(z.string()).max(10).optional(),\n preferredWorkplace: z.array(z.string()).max(5).optional(),\n availableFromUtc: z.number().int().min(0).max(23).optional(),\n availableToUtc: z.number().int().min(0).max(23).optional(),\n langs: z.array(z.string()).max(3).optional(),\n discoverable: z.boolean().optional(),\n })\n .passthrough();\n\nexport type ProfileSelfWriteInput = z.infer<typeof ProfileSelfWriteSchema>;\n","import { z } from 'zod';\n\nimport { externalRecordRefSchema, optionalUrl } from './shared.js';\n\n/**\n * A person named as a member of the project. Naming someone is a claim: they\n * render as a bare handle until they publish an `id.sifa.confirmation`, and\n * confirming never puts this record on their profile. `role` is display only.\n */\nexport const projectMemberWriteSchema = z.object({\n did: z.string().regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID'),\n role: z.string().max(256).nullable().optional(),\n title: z.string().max(1280).nullable().optional(),\n});\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.project`. */\nexport const ProjectWriteSchema = z.object({\n name: z.string().min(1).max(256),\n description: z.string().max(50000).nullable().optional(),\n url: optionalUrl(),\n members: z.array(projectMemberWriteSchema).max(50).optional(),\n /** The canonical project.self this entry corresponds to. Composition, not peer sameness. */\n projectRef: externalRecordRefSchema.optional(),\n /** The same project as recorded on another person's profile. */\n sameAs: externalRecordRefSchema.optional(),\n startedAt: z.string().nullable().optional(),\n endedAt: z.string().nullable().optional(),\n});\n\nexport type ProjectWriteInput = z.infer<typeof ProjectWriteSchema>;\n","import { z } from 'zod';\n\nimport { optionalUrl } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.publication`. */\nexport const PublicationWriteSchema = z.object({\n title: z.string().min(1).max(200),\n subtitle: z.string().max(2000).nullable().optional(),\n publisher: z.string().max(256).nullable().optional(),\n url: optionalUrl(),\n description: z.string().max(50000).nullable().optional(),\n publishedAt: z.string().nullable().optional(),\n});\n\nexport type PublicationWriteInput = z.infer<typeof PublicationWriteSchema>;\n","import { z } from 'zod';\n\n/**\n * Grapheme-aware refinement matching the AT Protocol lexicon `maxGraphemes`\n * constraint. JS strings are sequences of UTF-16 code units, but lexicon\n * `maxGraphemes` counts user-perceived characters (grapheme clusters), so\n * emoji sequences, regional indicators, ZWJ joins, and combining marks all\n * count as one unit each. We use `Intl.Segmenter` to enforce this correctly.\n */\nexport function maxGraphemes(max: number) {\n return (value: string): boolean => {\n const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n let count = 0;\n for (const _ of segmenter.segment(value)) {\n count++;\n if (count > max) return false;\n }\n return true;\n };\n}\n\n/** Decentralized identifier, AT Protocol `format: did`. */\nexport const didSchema = z.string().regex(/^did:[a-z]+:[a-zA-Z0-9._:%-]+$/, 'Invalid DID');\n\n/** RFC 3339 datetime with timezone offset, AT Protocol `format: datetime`. */\nexport const datetimeSchema = z.string().datetime({ offset: true });\n\n/**\n * Freeform calendar date for user-facing profile dates (start/end, issued,\n * completed, awarded, published, etc.). Accepts a bare year, year-month,\n * year-month-day, or a full datetime (so a legacy record's RFC-3339 date maps\n * through on backfill without loss). NOT strict `datetime` -- users typically\n * remember only month/year, and LinkedIn-importer writes carry partial dates,\n * so the lexicons document these as freeform `YYYY-MM` / `YYYY-MM-DD`. Record\n * metadata like `createdAt` stays on `datetimeSchema`.\n */\nexport const partialDateSchema = z\n .string()\n .regex(/^\\d{4}(-\\d{2}(-\\d{2}(T.+)?)?)?$/, 'Expected YYYY, YYYY-MM, YYYY-MM-DD, or a datetime');\n\n/** Generic AT-URI, AT Protocol `format: at-uri`. */\nexport const atUriSchema = z.string().regex(/^at:\\/\\/[^\\s]+$/, 'Invalid AT-URI');\n\n/** Content identifier, AT Protocol `format: cid`. Loose validation -- accepts CIDv0 and CIDv1. */\nexport const cidSchema = z\n .string()\n .regex(/^(Qm[1-9A-HJ-NP-Za-km-z]{44}|b[A-Za-z0-9+/=]+)$/, 'Invalid CID');\n\n/** BCP 47 language tag, AT Protocol `format: language`. */\nexport const languageTagSchema = z\n .string()\n .regex(/^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/, 'Invalid BCP 47 language tag');\n\n/** Generic URI, AT Protocol `format: uri`. */\nexport const uriSchema = z.string().url();\n\n/**\n * StrongRef shape from `com.atproto.repo.strongRef` -- pins a record by both\n * AT-URI (identity) and CID (version).\n */\nexport const strongRefSchema = z.object({\n uri: atUriSchema,\n cid: cidSchema,\n});\n\n/**\n * Reference to an `id.sifa.profile.skill` record by AT-URI. Mirrors\n * `id.sifa.defs#skillRef`, which carries no CID at all: skills are mutable\n * records in the same user's repo, so the reference resolves live and tracks\n * edits to the target.\n */\nexport const skillRefSchema = z.object({\n uri: atUriSchema,\n});\n\n/**\n * Reference to a record by AT-URI, with an optional CID. Mirrors\n * `id.sifa.defs#externalRecordRef`. Unlike a strongRef the CID is optional:\n * consumers resolve the AT-URI live so the reference tracks edits to the\n * target, and the CID is a best-effort integrity hint only.\n */\nexport const externalRecordRefSchema = z.object({\n uri: atUriSchema,\n cid: cidSchema.optional(),\n});\n\n/**\n * Self-labels shape from `com.atproto.label.defs#selfLabels`. Modelled\n * permissively because clients rarely construct this directly; the AppView\n * handles label validation.\n */\nexport const selfLabelsSchema = z.object({\n $type: z.literal('com.atproto.label.defs#selfLabels').optional(),\n values: z.array(z.object({ val: z.string() })),\n});\n","import { z } from 'zod';\n\nimport { maxGraphemes } from '../shared.js';\n\n/** Schema enforced by `POST /profile/skills` on sifa-api. */\nexport const SkillWriteSchema = z.object({\n name: z.string().min(1).max(100),\n category: z.string().max(100).optional(),\n // Mirror the record schema bound (id.sifa.profile.skill) so a value that\n // passes here cannot then fail the PDS write. Empty/whitespace-only input is\n // treated as absent so we never persist a meaningless grouping label.\n subCategory: z.preprocess(\n (v) => (typeof v === 'string' && v.trim() === '' ? undefined : v),\n z.string().refine(maxGraphemes(64)).max(640).optional(),\n ),\n});\n\nexport type SkillWriteInput = z.infer<typeof SkillWriteSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.volunteering`. */\nexport const VolunteeringWriteSchema = z.object({\n organization: z.string().min(1).max(256),\n entityRef: entityRefSchema,\n role: z.string().max(256).nullable().optional(),\n cause: z.string().max(256).nullable().optional(),\n description: z.string().max(50000).nullable().optional(),\n startedAt: z.string().nullable().optional(),\n endedAt: z.string().nullable().optional(),\n});\n\nexport type VolunteeringWriteInput = z.infer<typeof VolunteeringWriteSchema>;\n"]}
1
+ {"version":3,"sources":["../../../src/schemas/write/shared.ts","../../../src/schemas/write/certification.ts","../../../src/schemas/write/course.ts","../../../src/schemas/write/education.ts","../../../src/schemas/write/external-account.ts","../../../src/schemas/write/honor.ts","../../../src/schemas/write/project.ts","../../../src/schemas/write/involvement.ts","../../../src/schemas/write/language.ts","../../../src/schemas/write/org-employment-attestation.ts","../../../src/schemas/write/org-profile.ts","../../../src/schemas/write/org-claim.ts","../../../src/schemas/write/org-settings.ts","../../../src/schemas/write/position.ts","../../../src/schemas/write/presentation-delivery.ts","../../../src/schemas/blob-ref.ts","../../../src/schemas/write/presentation.ts","../../../src/schemas/write/profile-location.ts","../../../src/schemas/write/profile-self.ts","../../../src/schemas/write/publication.ts","../../../src/schemas/shared.ts","../../../src/schemas/write/skill.ts","../../../src/schemas/write/volunteering.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n/** Prepend `https://` if no scheme is present. */\nexport function normalizeUrl(val: string): string {\n const trimmed = val.trim();\n if (/^https?:\\/\\//i.test(trimmed)) return trimmed;\n return `https://${trimmed}`;\n}\n\n/**\n * Accept a URL string or silently drop it if invalid (returns `undefined`).\n * Preserves the write-time policy: bad URLs from imports are dropped, not rejected.\n */\nexport const optionalUrl = () =>\n z\n .string()\n .optional()\n .transform((val) => {\n if (!val) return undefined;\n try {\n new URL(val);\n return val;\n } catch {\n return undefined;\n }\n });\n\n/**\n * Location shape accepted by the sifa-api write endpoints.\n *\n * Accepts BOTH the legacy shape (`id.sifa.defs#locationAddress`: `countryCode`,\n * `region`, `city`) AND the new community shape\n * (`community.lexicon.location.address`: `country`, `region`, `locality`,\n * `street?`, `postalCode?`, `name?`). The frontend reads location records from\n * the API and echoes them back on save. The API serializer emits explicit `null`\n * for absent fields (not `undefined`), so every field uses `.nullish()`\n * (`string | null | undefined`) instead of `.optional()` (`string | undefined`).\n *\n * `buildPdsLocation` on the server handles conversion to the PDS shape (always\n * emitting the new community shape) and returns `undefined` when neither\n * `country` nor `countryCode` is usable.\n */\nexport const writeLocationSchema = z\n .union([\n z.object({\n country: z.string().nullish(),\n countryCode: z.string().length(2).nullish(),\n region: z.string().nullish(),\n city: z.string().nullish(),\n locality: z.string().nullish(),\n street: z.string().nullish(),\n postalCode: z.string().nullish(),\n name: z.string().nullish(),\n }),\n z.string(),\n ])\n .nullable()\n .optional();\n\n/** Skill reference: a strong ref to a canonical skill record. */\nexport const skillRefSchema = z.object({\n uri: z.string(),\n});\n\n/**\n * Platforms accepted by the external-account write endpoint.\n *\n * NOTE: this list intentionally differs from `PLATFORM_LABELS` in the SDK's\n * `/taxonomy` subpath. `VALID_PLATFORMS` is what sifa-api's `POST /external-accounts`\n * endpoint enforces; `PLATFORM_LABELS` is the display taxonomy used by the profile\n * UI. Reconciling them is a separate follow-up (see #TBD). For now the two are\n * mirrored verbatim from their prior definitions to preserve behavior.\n */\nexport const VALID_PLATFORMS = [\n 'rss',\n 'fediverse',\n 'twitter',\n 'instagram',\n 'github',\n 'codeberg',\n 'gitlab',\n 'forgejo',\n 'gitea',\n 'youtube',\n 'linkedin',\n 'substack',\n 'website',\n 'orcid',\n 'keyoxide',\n 'other',\n] as const;\n\nexport type ValidPlatform = (typeof VALID_PLATFORMS)[number];\n\n// ---- pure sanitization primitives (previously in sifa-api/src/lib/sanitize.ts) ----\n\n/**\n * Returns `input` when it is an http(s) URL string, else `null`. Blocks\n * dangerous schemes (`javascript:`, `data:`, etc.) from being stored and\n * later rendered.\n */\nexport function httpUrlOrNull(input: unknown): string | null {\n if (typeof input !== 'string') return null;\n try {\n const url = new URL(input);\n return url.protocol === 'http:' || url.protocol === 'https:' ? input : null;\n } catch {\n return null;\n }\n}\n\nconst DATE_ONLY_RE = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n/**\n * Strict calendar-date validator. Returns `true` for `YYYY-MM-DD` strings\n * that name a real day, rejecting impossible values (`2024-02-30`, `2024-13-01`)\n * by requiring the JavaScript `Date` round-trip to preserve the input.\n */\nexport function isValidDateOnly(input: unknown): boolean {\n if (typeof input !== 'string' || !DATE_ONLY_RE.test(input)) return false;\n const parsed = new Date(`${input}T00:00:00Z`);\n return !Number.isNaN(parsed.getTime()) && parsed.toISOString().startsWith(input);\n}\n\n// ---- shared write-schema fragments used by multiple sections ----\n\n/**\n * Portable org entity identifier (Wikidata / ROR / LEI / sifa.id URI) chosen\n * from the typeahead. Constrained to http(s) so a script-bearing scheme can't\n * be written to the PDS record. Absent for free-text / unlinked records.\n * Shared by the org-bearing sections (position, education, certification,\n * volunteering, course, honor).\n */\nexport const entityRefSchema = z\n .string()\n .url()\n .refine((s) => /^https?:\\/\\//i.test(s), { message: 'entityRef must be an http(s) URL' })\n .max(2048)\n .optional();\n\n/**\n * One proof link on an involvement record (`id.sifa.defs#artifactLink`).\n * Only http(s) URLs are accepted so a dangerous scheme is never written to\n * the PDS.\n */\nexport const artifactLinkSchema = z.object({\n url: z\n .string()\n .max(2048)\n .refine((v) => httpUrlOrNull(v) !== null, 'must be an http(s) URL'),\n kind: z.string().max(64).nullable().optional(),\n label: z.string().max(2000).nullable().optional(),\n});\n\n/**\n * Reference to a record by at-uri, with an optional CID\n * (`id.sifa.defs#externalRecordRef`).\n */\nexport const externalRecordRefSchema = z.object({\n uri: z.string().regex(/^at:\\/\\/[^/\\s]+\\/[^/\\s]+\\/[^/\\s]+$/, 'must be an at-uri'),\n // CIDv0 (`Qm…`) or CIDv1 (base32, `b…`). Loose but rejects arbitrary strings.\n cid: z\n .string()\n .max(256)\n .regex(/^(Qm[1-9A-HJ-NP-Za-km-z]{44}|b[A-Za-z2-7]+)$/, 'must be a CID')\n .optional(),\n});\n\n/** Link attached to a presentation record. */\nexport const presentationLinkSchema = z.object({\n uri: z\n .string()\n .max(2048)\n .refine((v) => httpUrlOrNull(v) !== null, 'must be an http(s) URL'),\n label: z.string().max(640).nullable().optional(),\n type: z.string().max(256).nullable().optional(),\n});\n","import { z } from 'zod';\n\nimport { entityRefSchema, optionalUrl } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.certification`. */\nexport const CertificationWriteSchema = z.object({\n name: z.string().min(1).max(256),\n authority: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n credentialId: z.string().max(256).nullable().optional(),\n credentialUrl: optionalUrl(),\n issuedAt: z.string().nullable().optional(),\n expiresAt: z.string().nullable().optional(),\n});\n\nexport type CertificationWriteInput = z.infer<typeof CertificationWriteSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.course`. */\nexport const CourseWriteSchema = z.object({\n name: z.string().min(1).max(200),\n number: z.string().max(50).nullable().optional(),\n institution: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n /**\n * at-uri of the linked `id.sifa.profile.certification` record. Structurally\n * validated (`at://authority/collection/rkey`) so a bad value can't be\n * stored and later split into a bogus rkey.\n */\n credential: z\n .string()\n .max(512)\n .regex(/^at:\\/\\/[^/\\s]+\\/[^/\\s]+\\/[^/\\s]+$/, 'must be an at-uri')\n .nullable()\n .optional(),\n /**\n * RFC 3339 datetime the course was completed. The editor collects month\n * granularity (YYYY-MM) and converts to a datetime before the write; stored\n * and passed through as-is, mirroring `certification.issuedAt`.\n */\n completedAt: z.string().nullable().optional(),\n});\n\nexport type CourseWriteInput = z.infer<typeof CourseWriteSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by `POST /profile/education` on sifa-api. */\nexport const EducationWriteSchema = z.object({\n institution: z.string().min(1).max(256),\n entityRef: entityRefSchema,\n degree: z.string().max(256).nullable().optional(),\n fieldOfStudy: z.string().max(256).nullable().optional(),\n description: z.string().max(50000).nullable().optional(),\n activities: z.string().max(1000).nullable().optional(),\n startedAt: z.string().nullable().optional(),\n endedAt: z.string().nullable().optional(),\n});\n\nexport type EducationWriteInput = z.infer<typeof EducationWriteSchema>;\n","import { z } from 'zod';\n\nimport { VALID_PLATFORMS, normalizeUrl } from './shared.js';\n\n/** Schema enforced by `POST /external-accounts` on sifa-api. */\nexport const ExternalAccountWriteSchema = z.object({\n platform: z.enum(VALID_PLATFORMS),\n url: z.string().max(2000).transform(normalizeUrl).pipe(z.string().url()),\n label: z.string().max(100).optional(),\n feedUrl: z.string().max(2000).transform(normalizeUrl).pipe(z.string().url()).optional(),\n});\n\nexport type ExternalAccountWriteInput = z.infer<typeof ExternalAccountWriteSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.honor`. */\nexport const HonorWriteSchema = z.object({\n title: z.string().min(1).max(200),\n issuer: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n description: z.string().max(50000).nullable().optional(),\n awardedAt: z.string().nullable().optional(),\n});\n\nexport type HonorWriteInput = z.infer<typeof HonorWriteSchema>;\n","import { z } from 'zod';\n\nimport { externalRecordRefSchema, optionalUrl } from './shared.js';\n\n/**\n * A person named as a member of the project. Naming someone is a claim: they\n * render as a bare handle until they publish an `id.sifa.confirmation`, and\n * confirming never puts this record on their profile. `role` is display only.\n */\nexport const projectMemberWriteSchema = z.object({\n did: z.string().regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID'),\n role: z.string().max(256).nullable().optional(),\n title: z.string().max(1280).nullable().optional(),\n});\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.project`. */\nexport const ProjectWriteSchema = z.object({\n name: z.string().min(1).max(256),\n description: z.string().max(50000).nullable().optional(),\n url: optionalUrl(),\n members: z.array(projectMemberWriteSchema).max(50).optional(),\n /** The canonical project.self this entry corresponds to. Composition, not peer sameness. */\n projectRef: externalRecordRefSchema.optional(),\n /** The same project as recorded on another person's profile. */\n sameAs: externalRecordRefSchema.optional(),\n startedAt: z.string().nullable().optional(),\n endedAt: z.string().nullable().optional(),\n});\n\nexport type ProjectWriteInput = z.infer<typeof ProjectWriteSchema>;\n","import { z } from 'zod';\n\nimport { projectMemberWriteSchema } from './project.js';\n\nimport {\n artifactLinkSchema,\n entityRefSchema,\n externalRecordRefSchema,\n optionalUrl,\n skillRefSchema,\n writeLocationSchema,\n} from './shared.js';\n\n/**\n * Schema enforced by the generic-record write endpoint for `id.sifa.profile.involvement`.\n *\n * Represents contribution to an upstream project or community\n * (open-source maintainership, community volunteering, etc.). `upstream` /\n * `upstreamDid` / `upstreamUrl` describe what the user contributed to;\n * `links` collect proof artifacts.\n */\nexport const InvolvementWriteSchema = z.object({\n kind: z.string().min(1).max(256),\n upstream: z.string().max(2560).nullable().optional(),\n upstreamDid: z\n .string()\n .regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID')\n .nullable()\n .optional(),\n upstreamUrl: optionalUrl(),\n role: z.string().max(2560).nullable().optional(),\n description: z.string().max(50000).nullable().optional(),\n // Freeform YYYY / YYYY-MM / YYYY-MM-DD; validated loosely so partial dates pass.\n startedAt: z.string().max(32).nullable().optional(),\n endedAt: z.string().max(32).nullable().optional(),\n links: z.array(artifactLinkSchema).max(50).nullable().optional(),\n /** Other people who worked on this alongside you. Same shape as project members. */\n collaborators: z.array(projectMemberWriteSchema).max(50).optional(),\n /** The same involvement as recorded on another person's profile. */\n sameAs: externalRecordRefSchema.optional(),\n entityRef: entityRefSchema,\n location: writeLocationSchema,\n skills: z.array(skillRefSchema).max(50).nullable().optional(),\n});\n\nexport type InvolvementWriteInput = z.infer<typeof InvolvementWriteSchema>;\n","import { z } from 'zod';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.language`. */\nexport const LanguageWriteSchema = z.object({\n name: z.string().min(1).max(64),\n proficiency: z.string().max(50).optional(),\n});\n\nexport type LanguageWriteInput = z.infer<typeof LanguageWriteSchema>;\n","import { z } from 'zod';\n\nimport { externalRecordRefSchema } from './shared.js';\n\n/**\n * Schema enforced by the org-employment-attestation write endpoint on sifa-api.\n *\n * An org attests that a Sifa user (`subject`) held a specific `position` record\n * with `title` between `startedAt` and `endedAt` (inclusive of \"current\" status).\n * The attestation itself is signed by the org's DID; `entityRef` / `companyDid`\n * optionally cross-link the org identifier(s) used at the time.\n */\nexport const OrgEmploymentAttestationWriteSchema = z.object({\n subject: z.string().regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID'),\n position: externalRecordRefSchema,\n status: z.enum(['current', 'past']),\n title: z.string().min(1).max(2560),\n startedAt: z.string().max(32),\n entityRef: z.string().max(2048).nullable().optional(),\n companyDid: z\n .string()\n .regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID')\n .nullable()\n .optional(),\n endedAt: z.string().max(32).nullable().optional(),\n comment: z.string().max(3000).nullable().optional(),\n createdAt: z.string(),\n});\n\nexport type OrgEmploymentAttestationWriteInput = z.infer<\n typeof OrgEmploymentAttestationWriteSchema\n>;\n","import { z } from 'zod';\n\n/**\n * Schema enforced by the org-profile write endpoint on sifa-api.\n *\n * Sifa-managed org identity: name + description + contact channel plus\n * `entityRefs` linking the org to portable identifiers (Wikidata / ROR /\n * LEI / sifa.id URI, http(s) enforced elsewhere).\n */\n/** Structured physical address (community.lexicon.location.address; all fields optional). */\nconst orgAddressWriteSchema = z.object({\n country: z.string().max(10).nullable().optional(),\n postalCode: z.string().max(20).nullable().optional(),\n region: z.string().max(1000).nullable().optional(),\n locality: z.string().max(1000).nullable().optional(),\n street: z.string().max(2000).nullable().optional(),\n name: z.string().max(1000).nullable().optional(),\n});\n\n/** A featured link (both `name` and `url` required). */\nconst orgLinkWriteSchema = z.object({\n name: z.string().min(1).max(600),\n url: z.string().max(2048),\n});\n\nexport const OrgProfileWriteSchema = z.object({\n name: z.string().min(1).max(2000),\n description: z.string().max(50000).nullable().optional(),\n logo: z.unknown().nullable().optional(),\n website: z.string().max(2048).nullable().optional(),\n entityRefs: z.array(z.string().max(2048)).max(20).nullable().optional(),\n contact: z.string().max(320).nullable().optional(),\n addresses: z.array(orgAddressWriteSchema).max(10).nullable().optional(),\n companySize: z.string().max(20).nullable().optional(),\n links: z.array(orgLinkWriteSchema).max(10).nullable().optional(),\n personalProfileVisible: z.boolean().nullable().optional(),\n createdAt: z.string(),\n});\n\nexport type OrgProfileWriteInput = z.infer<typeof OrgProfileWriteSchema>;\n","import { z } from 'zod';\n\n/**\n * Body accepted by `POST /api/org/claim` (the org claim wizard finalize).\n *\n * Mirrors `claimBodySchema` in sifa-api `src/routes/org-claim.ts` EXACTLY: the\n * editable profile fields plus `entityRefs` (at least one -- a claim without a\n * binding renders but aggregates nothing) and the `authorityAck` checkbox\n * (`literal(true)` -- the logged \"I am authorized to represent this org\"\n * assertion). `logo`/`createdAt` are NOT part of the claim body (the endpoint\n * sets `createdAt` server-side and the logo is uploaded separately).\n */\nexport const OrgClaimRequestSchema = z.object({\n name: z.string().min(1).max(2000),\n description: z.string().max(50000).optional(),\n website: z.string().max(2048).optional(),\n contact: z.string().max(320).optional(),\n entityRefs: z.array(z.string().min(1).max(2048)).min(1).max(20),\n /**\n * Sole-trader opt-in: keep the claimant's personal profile visible at `/p/`\n * alongside the new company page at `/c/`. Omitted or false presents the\n * account solely as an organization.\n */\n personalProfileVisible: z.boolean().optional(),\n authorityAck: z.literal(true),\n});\n\nexport type OrgClaimRequestInput = z.infer<typeof OrgClaimRequestSchema>;\n","import { z } from 'zod';\n\n/**\n * Blob-ref passthrough for the org logo. Mirrors the `blobRefSchema` validated\n * by `PUT /api/org/profile` in sifa-api `src/routes/org-settings.ts` -- the\n * shape is validated, then written to the PDS verbatim.\n */\nconst orgLogoBlobSchema = z.object({\n $type: z.literal('blob'),\n ref: z.object({ $link: z.string().min(1) }),\n mimeType: z.string().min(1).max(255),\n size: z.number().int().nonnegative(),\n});\n\n/**\n * Body accepted by `PUT /api/org/profile` (edit the org record).\n *\n * Mirrors `profileBodySchema` in sifa-api `src/routes/org-settings.ts` EXACTLY.\n * Distinct from {@link OrgClaimRequestSchema}: no `authorityAck` (already\n * asserted at claim time), and an optional `logo` blob ref (a cleared field is\n * omitted, driving the fresh-from-body PDS PUT -- no spread-merge).\n */\nexport const OrgProfileUpdateRequestSchema = z.object({\n name: z.string().min(1).max(2000),\n description: z.string().max(50000).optional(),\n website: z.string().max(2048).optional(),\n contact: z.string().max(320).optional(),\n entityRefs: z.array(z.string().min(1).max(2048)).min(1).max(20),\n logo: orgLogoBlobSchema.optional(),\n /** Sole-trader opt-in; see {@link OrgClaimRequestSchema}. Flippable after the claim. */\n personalProfileVisible: z.boolean().optional(),\n});\n\nexport type OrgProfileUpdateRequestInput = z.infer<typeof OrgProfileUpdateRequestSchema>;\n\n/**\n * Body accepted by `POST /api/org/domains/challenge` (issue a one-time DNS TXT\n * challenge). Mirrors `challengeBodySchema` in sifa-api.\n */\nexport const OrgDomainChallengeRequestSchema = z.object({\n domain: z.string().min(1).max(255),\n});\n\nexport type OrgDomainChallengeRequestInput = z.infer<typeof OrgDomainChallengeRequestSchema>;\n\n/**\n * Body accepted by `POST /api/org/domains/verify` (verify a challenge via DoH\n * TXT lookup). Mirrors `verifyBodySchema` in sifa-api.\n */\nexport const OrgDomainVerifyRequestSchema = z.object({\n token: z.string().min(1).max(2048),\n});\n\nexport type OrgDomainVerifyRequestInput = z.infer<typeof OrgDomainVerifyRequestSchema>;\n\n/**\n * Body accepted by `POST` and `DELETE /api/org/notification-emails` (add /\n * remove a notification address). Mirrors `notificationEmailBodySchema` in\n * sifa-api. The bound-domain check is server-side (the address must use a\n * domain the org controls).\n */\nexport const OrgNotificationEmailRequestSchema = z.object({\n email: z.string().email().max(320),\n});\n\nexport type OrgNotificationEmailRequestInput = z.infer<typeof OrgNotificationEmailRequestSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema, skillRefSchema, writeLocationSchema } from './shared.js';\n\n/**\n * Schema enforced by `POST /profile/positions` on sifa-api.\n *\n * Client-side callers can `.safeParse(...)` this before submitting to catch\n * obvious problems (empty `title`, over-length text) before the network\n * round-trip. If it passes here, the API will accept the write modulo\n * transport / auth failures.\n *\n * `company` is optional to support freelancer / independent employment types\n * where the position has no employer. This matches sifa-api's current\n * behavior in `src/routes/schemas.ts` and the SDK's lexicon schema\n * (`ProfilePositionRecordSchema`) since sifa-sdk #184.\n */\nexport const PositionWriteSchema = z.object({\n company: z.string().min(1).max(256).nullable().optional(),\n entityRef: entityRefSchema,\n title: z.string().min(1).max(256),\n description: z.string().max(50000).nullable().optional(),\n employmentType: z.string().nullable().optional(),\n workplaceType: z.string().nullable().optional(),\n location: writeLocationSchema,\n startedAt: z.string().nullable().optional(),\n endedAt: z.string().nullable().optional(),\n skills: z.array(skillRefSchema).max(50).nullable().optional(),\n});\n\nexport type PositionWriteInput = z.infer<typeof PositionWriteSchema>;\n","import { z } from 'zod';\n\nimport {\n externalRecordRefSchema,\n isValidDateOnly,\n presentationLinkSchema,\n writeLocationSchema,\n} from './shared.js';\n\n/**\n * Schema enforced by the generic-record write endpoint for `id.sifa.profile.presentationDelivery`.\n *\n * Records a specific delivery of a presentation (e.g., at a conference).\n * `presentationRef` optionally points at the parent `id.sifa.profile.presentation`\n * record; `eventRef` optionally links a Sifa event record; `coSpeakers` are\n * DIDs of people who delivered alongside the profile owner.\n */\nexport const PresentationDeliveryWriteSchema = z.object({\n presentationRef: externalRecordRefSchema.optional(),\n /**\n * The same session as recorded on another person's profile. Distinct from\n * presentationRef above, which points at the talk this session delivered.\n */\n sameAs: externalRecordRefSchema.optional(),\n title: z.string().max(3000).nullable().optional(),\n role: z.string().max(640).nullable().optional(),\n eventName: z.string().max(3000).nullable().optional(),\n date: z.string().refine(isValidDateOnly, 'must be a valid YYYY-MM-DD date').nullable().optional(),\n location: z.string().max(2560).nullable().optional(),\n // Structured community.lexicon.location.address; `location` above stays as\n // the legacy free-text fallback. writeLocationSchema is already nullable+optional.\n address: writeLocationSchema,\n mode: z.string().max(256).nullable().optional(),\n status: z.string().max(256).nullable().optional(),\n links: z.array(presentationLinkSchema).max(20).optional(),\n eventRef: externalRecordRefSchema.optional(),\n coSpeakers: z\n .array(z.string().regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID'))\n .max(20)\n .optional(),\n});\n\nexport type PresentationDeliveryWriteInput = z.infer<typeof PresentationDeliveryWriteSchema>;\n","import { z } from 'zod';\n\n/**\n * Blob-ref passthrough shared by records that carry an uploaded blob (org logo,\n * presentation cover image, ...). Mirrors the `blobRefSchema` validated by the\n * sifa-api write endpoints -- the shape is validated, then written to the PDS\n * verbatim.\n */\nexport const BlobRefSchema = z.object({\n $type: z.literal('blob'),\n ref: z.object({ $link: z.string().min(1) }),\n mimeType: z.string().min(1).max(255),\n size: z.number().int().nonnegative(),\n});\n\nexport type BlobRef = z.infer<typeof BlobRefSchema>;\n","import { z } from 'zod';\n\nimport { BlobRefSchema } from '../blob-ref.js';\nimport { externalRecordRefSchema, presentationLinkSchema } from './shared.js';\n\n/**\n * Schema enforced by the generic-record write endpoint for `id.sifa.profile.presentation`.\n *\n * Describes a talk / presentation the user can give. `duration` bounds the\n * runtime; `intendedAudiences` names who it's aimed at; `writeupRef` is an\n * optional at-uri pointer to a companion writeup record.\n */\nexport const PresentationWriteSchema = z.object({\n title: z.string().min(1).max(3000),\n description: z.string().max(50000).nullable().optional(),\n duration: z\n .object({\n minMinutes: z.number().int().min(1),\n maxMinutes: z.number().int().min(1).optional(),\n })\n .refine((d) => d.maxMinutes === undefined || d.maxMinutes >= d.minMinutes, {\n message: 'maxMinutes must be greater than or equal to minMinutes',\n path: ['maxMinutes'],\n })\n .optional(),\n intendedAudiences: z.array(z.string().max(1000)).max(20).optional(),\n links: z.array(presentationLinkSchema).max(20).optional(),\n writeupRef: externalRecordRefSchema.optional(),\n coverImage: BlobRefSchema.nullable().optional(),\n});\n\nexport type PresentationWriteInput = z.infer<typeof PresentationWriteSchema>;\n","import { z } from 'zod';\n\n/**\n * Schema enforced by `POST /profile/locations` on sifa-api.\n *\n * Mirrors the inner object of `writeLocationSchema`: accepts both the community\n * shape (`country`, `locality`) and the legacy shape (`countryCode`, `city`)\n * during the dual-read window. sifa-web #840 switched outbound writes to the\n * community shape; older clients may still send the legacy shape. All address\n * fields are `.nullish()` so explicit `null` from API echoes is accepted\n * (see sifa-api #426).\n *\n * The route handler hands `address` to `buildPdsLocation`, which normalizes\n * either input and enforces alpha-2 on the wire to PDS — returning a 400 with\n * `message: \"address.country (alpha-2) is required\"` when no usable code is\n * present. The schema stays permissive on country length here and lets\n * `buildPdsLocation` be the single enforcement point.\n */\nexport const ProfileLocationWriteSchema = z.object({\n address: z.object({\n country: z.string().nullish(),\n countryCode: z.string().length(2).nullish(),\n region: z.string().nullish(),\n city: z.string().nullish(),\n locality: z.string().nullish(),\n street: z.string().nullish(),\n postalCode: z.string().nullish(),\n name: z.string().nullish(),\n }),\n type: z.string().min(1),\n label: z.string().max(60).nullable().optional(),\n isPrimary: z.boolean().optional(),\n});\n\nexport type ProfileLocationWriteInput = z.infer<typeof ProfileLocationWriteSchema>;\n","import { z } from 'zod';\n\nimport { writeLocationSchema } from './shared.js';\n\n/**\n * Schema enforced by `POST /profile/self` on sifa-api.\n *\n * `.passthrough()` so the API accepts fields not yet enumerated here (used for\n * gradual rollout of new profile-self keys without requiring lockstep bumps\n * between web/api). Note this means client validation on this schema will\n * NEVER reject \"unknown\" fields — the divergence is intentional.\n *\n * Grapheme caps (e.g. 64 on given/familyName) are enforced client-side by the\n * SDK's lexicon schema; the write schema only guards the byte-length ceiling.\n */\nexport const ProfileSelfWriteSchema = z\n .object({\n headline: z.string().max(300).optional(),\n about: z.string().max(50000).optional(),\n givenName: z.string().max(640).optional(),\n familyName: z.string().max(640).optional(),\n industries: z\n .array(\n z.object({\n industry: z.string().max(100),\n domain: z.string().max(100).optional(),\n }),\n )\n .max(10)\n .optional(),\n location: writeLocationSchema,\n openTo: z.array(z.string()).max(10).optional(),\n preferredWorkplace: z.array(z.string()).max(5).optional(),\n availableFromUtc: z.number().int().min(0).max(23).optional(),\n availableToUtc: z.number().int().min(0).max(23).optional(),\n langs: z.array(z.string()).max(3).optional(),\n discoverable: z.boolean().optional(),\n })\n .passthrough();\n\nexport type ProfileSelfWriteInput = z.infer<typeof ProfileSelfWriteSchema>;\n","import { z } from 'zod';\n\nimport { optionalUrl } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.publication`. */\nexport const PublicationWriteSchema = z.object({\n title: z.string().min(1).max(200),\n subtitle: z.string().max(2000).nullable().optional(),\n publisher: z.string().max(256).nullable().optional(),\n url: optionalUrl(),\n description: z.string().max(50000).nullable().optional(),\n publishedAt: z.string().nullable().optional(),\n});\n\nexport type PublicationWriteInput = z.infer<typeof PublicationWriteSchema>;\n","import { z } from 'zod';\n\n/**\n * Grapheme-aware refinement matching the AT Protocol lexicon `maxGraphemes`\n * constraint. JS strings are sequences of UTF-16 code units, but lexicon\n * `maxGraphemes` counts user-perceived characters (grapheme clusters), so\n * emoji sequences, regional indicators, ZWJ joins, and combining marks all\n * count as one unit each. We use `Intl.Segmenter` to enforce this correctly.\n */\nexport function maxGraphemes(max: number) {\n return (value: string): boolean => {\n const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n let count = 0;\n for (const _ of segmenter.segment(value)) {\n count++;\n if (count > max) return false;\n }\n return true;\n };\n}\n\n/** Decentralized identifier, AT Protocol `format: did`. */\nexport const didSchema = z.string().regex(/^did:[a-z]+:[a-zA-Z0-9._:%-]+$/, 'Invalid DID');\n\n/** RFC 3339 datetime with timezone offset, AT Protocol `format: datetime`. */\nexport const datetimeSchema = z.string().datetime({ offset: true });\n\n/**\n * Freeform calendar date for user-facing profile dates (start/end, issued,\n * completed, awarded, published, etc.). Accepts a bare year, year-month,\n * year-month-day, or a full datetime (so a legacy record's RFC-3339 date maps\n * through on backfill without loss). NOT strict `datetime` -- users typically\n * remember only month/year, and LinkedIn-importer writes carry partial dates,\n * so the lexicons document these as freeform `YYYY-MM` / `YYYY-MM-DD`. Record\n * metadata like `createdAt` stays on `datetimeSchema`.\n */\nexport const partialDateSchema = z\n .string()\n .regex(/^\\d{4}(-\\d{2}(-\\d{2}(T.+)?)?)?$/, 'Expected YYYY, YYYY-MM, YYYY-MM-DD, or a datetime');\n\n/** Generic AT-URI, AT Protocol `format: at-uri`. */\nexport const atUriSchema = z.string().regex(/^at:\\/\\/[^\\s]+$/, 'Invalid AT-URI');\n\n/** Content identifier, AT Protocol `format: cid`. Loose validation -- accepts CIDv0 and CIDv1. */\nexport const cidSchema = z\n .string()\n .regex(/^(Qm[1-9A-HJ-NP-Za-km-z]{44}|b[A-Za-z0-9+/=]+)$/, 'Invalid CID');\n\n/** BCP 47 language tag, AT Protocol `format: language`. */\nexport const languageTagSchema = z\n .string()\n .regex(/^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/, 'Invalid BCP 47 language tag');\n\n/** Generic URI, AT Protocol `format: uri`. */\nexport const uriSchema = z.string().url();\n\n/**\n * StrongRef shape from `com.atproto.repo.strongRef` -- pins a record by both\n * AT-URI (identity) and CID (version).\n */\nexport const strongRefSchema = z.object({\n uri: atUriSchema,\n cid: cidSchema,\n});\n\n/**\n * Reference to an `id.sifa.profile.skill` record by AT-URI. Mirrors\n * `id.sifa.defs#skillRef`, which carries no CID at all: skills are mutable\n * records in the same user's repo, so the reference resolves live and tracks\n * edits to the target.\n */\nexport const skillRefSchema = z.object({\n uri: atUriSchema,\n});\n\n/**\n * Reference to a record by AT-URI, with an optional CID. Mirrors\n * `id.sifa.defs#externalRecordRef`. Unlike a strongRef the CID is optional:\n * consumers resolve the AT-URI live so the reference tracks edits to the\n * target, and the CID is a best-effort integrity hint only.\n */\nexport const externalRecordRefSchema = z.object({\n uri: atUriSchema,\n cid: cidSchema.optional(),\n});\n\n/**\n * Self-labels shape from `com.atproto.label.defs#selfLabels`. Modelled\n * permissively because clients rarely construct this directly; the AppView\n * handles label validation.\n */\nexport const selfLabelsSchema = z.object({\n $type: z.literal('com.atproto.label.defs#selfLabels').optional(),\n values: z.array(z.object({ val: z.string() })),\n});\n","import { z } from 'zod';\n\nimport { maxGraphemes } from '../shared.js';\n\n/** Schema enforced by `POST /profile/skills` on sifa-api. */\nexport const SkillWriteSchema = z.object({\n name: z.string().min(1).max(100),\n category: z.string().max(100).optional(),\n // Mirror the record schema bound (id.sifa.profile.skill) so a value that\n // passes here cannot then fail the PDS write. Empty/whitespace-only input is\n // treated as absent so we never persist a meaningless grouping label.\n subCategory: z.preprocess(\n (v) => (typeof v === 'string' && v.trim() === '' ? undefined : v),\n z.string().refine(maxGraphemes(64)).max(640).optional(),\n ),\n});\n\nexport type SkillWriteInput = z.infer<typeof SkillWriteSchema>;\n","import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.volunteering`. */\nexport const VolunteeringWriteSchema = z.object({\n organization: z.string().min(1).max(256),\n entityRef: entityRefSchema,\n role: z.string().max(256).nullable().optional(),\n cause: z.string().max(256).nullable().optional(),\n description: z.string().max(50000).nullable().optional(),\n startedAt: z.string().nullable().optional(),\n endedAt: z.string().nullable().optional(),\n});\n\nexport type VolunteeringWriteInput = z.infer<typeof VolunteeringWriteSchema>;\n"]}
@@ -348,6 +348,15 @@ declare const ProfileInvolvementRecordSchema: z.ZodObject<{
348
348
  val: z.ZodString;
349
349
  }, z.core.$strip>>;
350
350
  }, z.core.$strip>>;
351
+ collaborators: z.ZodOptional<z.ZodArray<z.ZodObject<{
352
+ did: z.ZodString;
353
+ role: z.ZodOptional<z.ZodString>;
354
+ title: z.ZodOptional<z.ZodString>;
355
+ }, z.core.$strip>>>;
356
+ sameAs: z.ZodOptional<z.ZodObject<{
357
+ uri: z.ZodString;
358
+ cid: z.ZodOptional<z.ZodString>;
359
+ }, z.core.$strip>>;
351
360
  createdAt: z.ZodString;
352
361
  }, z.core.$loose>;
353
362
  type ProfileInvolvementRecord = z.infer<typeof ProfileInvolvementRecordSchema>;
@@ -348,6 +348,15 @@ declare const ProfileInvolvementRecordSchema: z.ZodObject<{
348
348
  val: z.ZodString;
349
349
  }, z.core.$strip>>;
350
350
  }, z.core.$strip>>;
351
+ collaborators: z.ZodOptional<z.ZodArray<z.ZodObject<{
352
+ did: z.ZodString;
353
+ role: z.ZodOptional<z.ZodString>;
354
+ title: z.ZodOptional<z.ZodString>;
355
+ }, z.core.$strip>>>;
356
+ sameAs: z.ZodOptional<z.ZodObject<{
357
+ uri: z.ZodString;
358
+ cid: z.ZodOptional<z.ZodString>;
359
+ }, z.core.$strip>>;
351
360
  createdAt: z.ZodString;
352
361
  }, z.core.$loose>;
353
362
  type ProfileInvolvementRecord = z.infer<typeof ProfileInvolvementRecordSchema>;
@@ -333,6 +333,10 @@ interface ProfileInvolvement {
333
333
  */
334
334
  legacy?: boolean;
335
335
  hidden?: boolean;
336
+ /** Other people named on this involvement, hydrated from the stored DIDs. */
337
+ collaborators?: ProjectMemberCard[];
338
+ /** AT-URI of the same involvement as recorded on another person's profile. */
339
+ sameAs?: string;
336
340
  }
337
341
  type LanguageProficiency = 'elementary' | 'limited_working' | 'professional_working' | 'full_professional' | 'native';
338
342
  interface ProfileLanguage {
@@ -848,6 +852,10 @@ interface InvolvementView {
848
852
  endedAt?: string;
849
853
  links: InvolvementLinkView[];
850
854
  legacy: boolean;
855
+ /** Other people named on this involvement, hydrated from the stored DIDs. */
856
+ collaborators?: ProjectMemberView[];
857
+ /** AT-URI of the same involvement as recorded on another person's profile. */
858
+ sameAs?: string;
851
859
  }
852
860
  interface ContributorView {
853
861
  name: string;
@@ -1062,4 +1070,148 @@ declare function hasAdultContent(item: {
1062
1070
  labels?: ActivityLabel[];
1063
1071
  }): boolean;
1064
1072
 
1065
- export { type ProfileInvolvementLink as $, type AdultContentLabel as A, type ExternalAccountKeytraceClaim as B, type CoSpeaker as C, type DurationView as D, type ExternalAccount as E, type ExternalAccountView as F, type FeedItem as G, type HonorView as H, type IndustryDomain as I, type InvolvementLinkView as J, type InvolvementView as K, type LocationValue as L, type LanguageProficiency as M, type LanguageView as N, type OrgAddressView as O, type ProfileView as P, type OrgFloorVerdict as Q, type OrgLinkView as R, type SkillSuggestion as S, type OrgProfileView as T, PROJECT_ROLES as U, type PositionView as V, type PresentationDeliveryView as W, type PresentationLinkView as X, type PresentationView as Y, type ProfileCourse as Z, type ProfileIndustry as _, type ActivityLabel as a, type ProfileLocation as a0, type ProfileLocationView as a1, type ProfileOverrideSource as a2, type ProfilePresentation as a3, type ProfileVolunteering as a4, type ProjectMemberCard as a5, type ProjectMemberView as a6, type ProjectRole as a7, type ProjectView as a8, type PublicationContributor as a9, type PublicationView as aa, type RecognizedEntity as ab, type SkillRef as ac, type SkillView as ad, type TrustStat as ae, type VerifiedAccount as af, type VolunteeringView as ag, hasAdultContent as ah, type ProfileSkill as b, type ProfilePresentationDelivery as c, type PdsProviderInfo as d, type Profile as e, type AccountFacetMode as f, type ProfilePosition as g, type ProfileCertification as h, type ProfileEducation as i, type ProfileHonor as j, type ProfileLanguage as k, type ProfileProject as l, type ProfilePublication as m, type ProfileInvolvement as n, ADULT_CONTENT_LABELS as o, type ActiveApp as p, type ActiveAppView as q, type ActorCard as r, type AtfundLinkView as s, type CertificationView as t, type CoSpeakerView as u, type ContributorView as v, type CourseView as w, type EducationView as x, type Endorsement as y, type EndorsementData as z };
1073
+ /**
1074
+ * The buckets a repo data-management UI shows instead of raw collections.
1075
+ *
1076
+ * "id.sifa.profile.presentationDelivery" means nothing to someone who has never
1077
+ * heard of a lexicon. Grouping is the whole difference between a developer tool
1078
+ * and something a user can act on, so it lives here rather than in one app: the
1079
+ * web settings page and a future native app must agree on what a bucket holds,
1080
+ * or the same repo reads differently depending where you look at it.
1081
+ *
1082
+ * Ids only, no display strings -- copy is translated at the surface.
1083
+ */
1084
+ type RepoGroupId = 'profile-basics' | 'work-history' | 'education' | 'skills-endorsements' | 'projects' | 'publications-talks' | 'connections' | 'consents-access' | 'other';
1085
+ interface RepoGroupDefinition {
1086
+ id: RepoGroupId;
1087
+ /** Collections this bucket claims, in the order a UI should list them. */
1088
+ collections: readonly string[];
1089
+ }
1090
+ /**
1091
+ * Ordered so the buckets a user recognises come first and the machinery they
1092
+ * never think about (consents, access grants) comes last.
1093
+ *
1094
+ * `other` is deliberately absent: it is not a claim over a fixed set, it is
1095
+ * where anything unmapped lands. See {@link repoGroupForCollection}.
1096
+ */
1097
+ declare const SIFA_REPO_GROUPS: readonly RepoGroupDefinition[];
1098
+ /**
1099
+ * Which bucket a collection belongs to, or `other` when we have not mapped it.
1100
+ *
1101
+ * Unmapped falls through to a visible bucket rather than being filtered out. A
1102
+ * lexicon we mint later would otherwise be invisible on the one page whose job
1103
+ * is to show everything in the repo -- the user would be told their data is
1104
+ * accounted for while some of it was silently omitted.
1105
+ */
1106
+ declare function repoGroupForCollection(collection: string): RepoGroupId;
1107
+
1108
+ /**
1109
+ * One line of text identifying a record to the person who wrote it.
1110
+ *
1111
+ * Split into parts rather than one joined string: joining needs a connective
1112
+ * ("Senior Engineer at Acme") and a connective is copy, which is translated at
1113
+ * the surface. Every value here comes straight from the user's own record, so
1114
+ * the SDK contributes no language of its own.
1115
+ */
1116
+ interface RepoRecordLabel {
1117
+ /** The record's own identifying text, or the collection leaf when it has none. */
1118
+ primary: string;
1119
+ /** Employer, institution, event, or publisher, when the record names one. */
1120
+ secondary?: string;
1121
+ /** The date the record is about, not when it was written. May be partial ("2021-03"). */
1122
+ date?: string;
1123
+ /**
1124
+ * The person a record is about, for records whose meaning is a relationship
1125
+ * rather than text: endorsements, follows, confirmations, attestations.
1126
+ *
1127
+ * Kept out of {@link primary} so a surface can resolve it to a handle and
1128
+ * avatar without parsing a DID back out of display text.
1129
+ */
1130
+ subjectDid?: string;
1131
+ }
1132
+ /**
1133
+ * Describe one record from the user's repo in terms they will recognise.
1134
+ *
1135
+ * Never throws and never returns an empty primary. This runs over whatever is
1136
+ * actually in the repo, including records written by older versions of Sifa and
1137
+ * records hand-edited elsewhere. A page that crashes on one malformed record
1138
+ * would hide the rest, which is exactly the data the user came to manage.
1139
+ */
1140
+ declare function describeSifaRecord(collection: string, value: unknown): RepoRecordLabel;
1141
+
1142
+ /** One record in the user's repo, reduced to what a management UI needs. */
1143
+ interface RepoRecordSummary {
1144
+ /** Full AT-URI, the stable identity of the record. */
1145
+ uri: string;
1146
+ /** Record key, the part a delete request names. */
1147
+ rkey: string;
1148
+ collection: string;
1149
+ label: RepoRecordLabel;
1150
+ /** When the record was written, from its own `createdAt`. Absent if it has none. */
1151
+ createdAt?: string;
1152
+ }
1153
+ /** One bucket of the inventory. Buckets the user has no records in are omitted. */
1154
+ interface RepoCollectionGroup {
1155
+ id: RepoGroupId;
1156
+ /** Collections in this bucket the user actually has records in. */
1157
+ collections: string[];
1158
+ recordCount: number;
1159
+ records: RepoRecordSummary[];
1160
+ }
1161
+ /**
1162
+ * What is in the user's repo under id.sifa.*, as their PDS reports it.
1163
+ *
1164
+ * Read from the PDS rather than the AppView. This is the one surface whose
1165
+ * entire purpose is to say what the user owns, so an index that has drifted --
1166
+ * lagging the firehose, or holding records deleted elsewhere -- would be
1167
+ * lying about the thing the page exists to answer.
1168
+ */
1169
+ interface RepoInventory {
1170
+ did: string;
1171
+ /** When the PDS was read, so a UI can say how fresh this is. */
1172
+ fetchedAt: string;
1173
+ groups: RepoCollectionGroup[];
1174
+ totalRecords: number;
1175
+ /**
1176
+ * Collections found in the repo that could not be listed. Their records are
1177
+ * missing from `groups`, so a UI must not present the inventory as complete.
1178
+ */
1179
+ unreadableCollections?: string[];
1180
+ }
1181
+ /** What happened to one record in a delete request. */
1182
+ type RepoDeleteOutcome =
1183
+ /** The PDS confirmed the record is gone. */
1184
+ 'deleted'
1185
+ /** The delete was attempted and the record is still there. */
1186
+ | 'remaining'
1187
+ /** We could not establish either way. Not the same as `remaining`, and never success. */
1188
+ | 'unknown';
1189
+ interface RepoDeleteRecordResult {
1190
+ rkey: string;
1191
+ outcome: RepoDeleteOutcome;
1192
+ }
1193
+ /**
1194
+ * Result of a delete request.
1195
+ *
1196
+ * Carries no success flag of its own. The transport adds one meaning "the
1197
+ * request was accepted", which is not the same question: a request can be
1198
+ * accepted and still leave four of five records in place. What actually
1199
+ * happened to the data is in `results`, per record, and callers report that.
1200
+ */
1201
+ interface RepoDeleteResult {
1202
+ collection: string;
1203
+ results: RepoDeleteRecordResult[];
1204
+ /**
1205
+ * Set when the current OAuth grant cannot delete this collection, in which
1206
+ * case nothing was attempted. `scope` is the value to request.
1207
+ *
1208
+ * Present instead of a failure so a UI sends the user to consent rather than
1209
+ * telling them the delete failed for no stated reason.
1210
+ */
1211
+ needsScopeUpgrade?: {
1212
+ scope: string;
1213
+ collections: string[];
1214
+ };
1215
+ }
1216
+
1217
+ export { type ProfileCourse as $, type AdultContentLabel as A, type EndorsementData as B, type CoSpeaker as C, type DurationView as D, type ExternalAccount as E, type ExternalAccountKeytraceClaim as F, type ExternalAccountView as G, type FeedItem as H, type HonorView as I, type IndustryDomain as J, type InvolvementLinkView as K, type LocationValue as L, type InvolvementView as M, type LanguageProficiency as N, type LanguageView as O, type ProfileView as P, type OrgAddressView as Q, type RepoDeleteResult as R, type SkillSuggestion as S, type OrgFloorVerdict as T, type OrgLinkView as U, type OrgProfileView as V, PROJECT_ROLES as W, type PositionView as X, type PresentationDeliveryView as Y, type PresentationLinkView as Z, type PresentationView as _, type ActivityLabel as a, type ProfileIndustry as a0, type ProfileInvolvementLink as a1, type ProfileLocation as a2, type ProfileLocationView as a3, type ProfileOverrideSource as a4, type ProfilePresentation as a5, type ProfileVolunteering as a6, type ProjectMemberCard as a7, type ProjectMemberView as a8, type ProjectRole as a9, type ProjectView as aa, type PublicationContributor as ab, type PublicationView as ac, type RecognizedEntity as ad, type RepoCollectionGroup as ae, type RepoDeleteOutcome as af, type RepoDeleteRecordResult as ag, type RepoGroupDefinition as ah, type RepoGroupId as ai, type RepoRecordLabel as aj, type RepoRecordSummary as ak, SIFA_REPO_GROUPS as al, type SkillRef as am, type SkillView as an, type TrustStat as ao, type VerifiedAccount as ap, type VolunteeringView as aq, describeSifaRecord as ar, hasAdultContent as as, repoGroupForCollection as at, type RepoInventory as b, type ProfileSkill as c, type ProfilePresentationDelivery as d, type PdsProviderInfo as e, type Profile as f, type AccountFacetMode as g, type ProfilePosition as h, type ProfileCertification as i, type ProfileEducation as j, type ProfileHonor as k, type ProfileLanguage as l, type ProfileProject as m, type ProfilePublication as n, type ProfileInvolvement as o, ADULT_CONTENT_LABELS as p, type ActiveApp as q, type ActiveAppView as r, type ActorCard as s, type AtfundLinkView as t, type CertificationView as u, type CoSpeakerView as v, type ContributorView as w, type CourseView as x, type EducationView as y, type Endorsement as z };