{"version":3,"sources":["../../src/schemas/blob-ref.ts","../../src/schemas/shared.ts","../../src/schemas/endorsement-confirmation.ts","../../src/schemas/entity.ts","../../src/schemas/endorsement.ts","../../src/schemas/confirmation.ts","../../src/schemas/org-profile.ts","../../src/schemas/org-employment-attestation.ts","../../src/schemas/graph-follow.ts","../../src/schemas/follow-profile.ts","../../src/schemas/feed.ts","../../src/schemas/profile-certification.ts","../../src/schemas/profile-course.ts","../../src/schemas/profile-education.ts","../../src/schemas/profile-external-account.ts","../../src/schemas/profile-honor.ts","../../src/schemas/profile-project.ts","../../src/schemas/profile-involvement.ts","../../src/schemas/profile-language.ts","../../src/schemas/profile-position.ts","../../src/schemas/profile-presentation.ts","../../src/schemas/profile-presentation-delivery.ts","../../src/schemas/profile-publication.ts","../../src/schemas/profile-self.ts","../../src/schemas/profile-skill.ts","../../src/schemas/profile-volunteering.ts","../../src/schemas/profile-investment.ts"],"names":["z","entityRefField"],"mappings":"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","file":"index.cjs","sourcesContent":["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\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 { datetimeSchema, strongRefSchema } from './shared.js';\n\n/**\n * Zod schema for `id.sifa.endorsement.confirmation` records.\n * Lives in the endorsee's PDS to approve display of an endorsement.\n */\nexport const EndorsementConfirmationRecordSchema = z.object({\n  endorsement: strongRefSchema,\n  /**\n   * Skill record this endorsement applies to. Set when the endorsement proposed\n   * a skill: the subject creates the record and links it here, because the\n   * endorser cannot write to the subject's repository. Also set when a proposed\n   * name matched a skill the subject already had.\n   */\n  skill: strongRefSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type EndorsementConfirmationRecord = z.infer<typeof EndorsementConfirmationRecordSchema>;\n","import { z } from 'zod';\n\n/**\n * Organization entity-resolution payloads (#159). Shared by the typeahead,\n * selection, and grow-on-demand import-search endpoints on sifa-api.\n */\n\n/**\n * A nullable string constrained to an http(s) URL. Rejects `javascript:` and\n * other script-bearing schemes at the SDK boundary so a hostile API response\n * cannot smuggle an XSS payload into a rendered `href`/`src`. Note: Wikidata\n * entity URIs are canonically `http://`, so both http and https are allowed.\n */\nconst httpUrlNullable = z\n  .string()\n  .refine((s) => /^https?:\\/\\//i.test(s), { message: 'must be an http(s) URL' })\n  .nullable();\n\nconst searchResultCommon = {\n  kind: z.string(),\n  name: z.string(),\n  domain: z.string().nullable(),\n  country: z.string().nullable(),\n  logoUrl: httpUrlNullable,\n  parentName: z.string().nullable(),\n};\n\n/**\n * A single typeahead row. Discriminated on `source`: a curated `entity` row\n * carries `entityId`, a `pdl` staging row carries `pdlId`. The union guarantees\n * the identifier for the row's source is always present, so a stable React key\n * can never be `entity:undefined`. The disambiguation fields\n * (domain/country/parentName) drive the dropdown display.\n */\nexport const EntitySearchResultSchema = z.discriminatedUnion('source', [\n  z.object({\n    source: z.literal('entity'),\n    entityId: z.number().int().positive(),\n    ...searchResultCommon,\n  }),\n  z.object({\n    source: z.literal('pdl'),\n    pdlId: z.string().min(1),\n    ...searchResultCommon,\n  }),\n]);\nexport type EntitySearchResult = z.infer<typeof EntitySearchResultSchema>;\n\n/** Response of `GET /api/entities/search`. */\nexport const EntitySearchResponseSchema = z.object({\n  results: z.array(EntitySearchResultSchema),\n  hasMore: z.boolean(),\n});\nexport type EntitySearchResponse = z.infer<typeof EntitySearchResponseSchema>;\n\n/**\n * Body of `POST /api/entities/select`: promote a PDL row OR bump an entity.\n * Exactly one of `entityId`/`pdlId` must be present -- supplying both is\n * ambiguous (the server would have to silently pick one) and is rejected.\n */\nexport const EntitySelectRequestSchema = z\n  .object({\n    entityId: z.number().int().positive().optional(),\n    pdlId: z.string().min(1).optional(),\n  })\n  .refine((v) => (v.entityId != null) !== (v.pdlId != null), {\n    message: 'exactly one of entityId or pdlId is required',\n  });\nexport type EntitySelectRequest = z.infer<typeof EntitySelectRequestSchema>;\n\n/** Response of `POST /api/entities/select`. `entityRef` is the portable\n * Wikidata/ROR/LEI URI to write to the position record, or null for a\n * PDL-only entity (its resolution stays AppView-side). */\nexport const EntitySelectResponseSchema = z.object({\n  entityId: z.number().int().positive(),\n  slug: z.string(),\n  kind: z.string(),\n  canonicalName: z.string(),\n  domain: z.string().nullable(),\n  /**\n   * The entity's website, gated to sources trustworthy enough to prefill into a\n   * record the user signs. Narrower than `domain`, which is a display value and\n   * may come from a crawl. Null when the entity has no such source.\n   */\n  website: httpUrlNullable.default(null),\n  /** Which tier `website` came from. Crawled is never an accepted source. */\n  websiteTier: z.enum(['org', 'curated']).nullable().default(null),\n  entityRef: httpUrlNullable,\n});\nexport type EntitySelectResponse = z.infer<typeof EntitySelectResponseSchema>;\n\n/** Response of `POST /api/entities/import-search`. */\nexport const EntityImportSearchResponseSchema = z.object({\n  results: z.array(EntitySearchResultSchema),\n});\nexport type EntityImportSearchResponse = z.infer<typeof EntityImportSearchResponseSchema>;\n\n/**\n * Body of the domain grow-on-demand endpoints (`POST /api/entities/resolve-domain`\n * and `POST /api/entities/mint-domain`). The server re-validates the value as a\n * registrable domain; 253 is the max DNS name length.\n */\nexport const EntityResolveDomainRequestSchema = z.object({\n  domain: z.string().min(1).max(253),\n});\nexport type EntityResolveDomainRequest = z.infer<typeof EntityResolveDomainRequestSchema>;\n\n/**\n * Response of `POST /api/entities/resolve-domain` (grow-on-demand Branch 1). Any\n * notable companies whose official website is the domain, imported from Wikidata.\n * `canMint` is true when nothing notable matched AND the domain is eligible for\n * the user-initiated mint-from-domain path -- it drives the \"Add <domain>\"\n * affordance.\n */\nexport const EntityResolveDomainResponseSchema = z.object({\n  results: z.array(EntitySearchResultSchema),\n  canMint: z.boolean(),\n});\nexport type EntityResolveDomainResponse = z.infer<typeof EntityResolveDomainResponseSchema>;\n\n/**\n * Response of `POST /api/entities/mint-domain` (grow-on-demand Branch 2). The\n * linkable entity minted from (or already resolved for) the domain. A non-2xx\n * status (e.g. the domain is not mintable, a confusable look-alike, or the site\n * yielded nothing usable) surfaces as a thrown error, not a null result.\n *\n * `pending` is true when the entity is a fresh hidden-pending mint: the\n * requesting user's own link resolves to it immediately, but it stays out of\n * other users' typeahead + aggregation until an admin approves it. Clients should\n * reflect this (\"added -- pending review\") rather than \"added & live\".\n */\nexport const EntityMintDomainResponseSchema = z.object({\n  result: EntitySearchResultSchema,\n  pending: z.boolean(),\n});\nexport type EntityMintDomainResponse = z.infer<typeof EntityMintDomainResponseSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, didSchema, maxGraphemes, strongRefSchema } from './shared.js';\n\n/**\n * Zod schema for `id.sifa.endorsement` records. Lives in the endorser's PDS;\n * the endorser identity is implicit (whoever owns the repository).\n */\nexport const EndorsementRecordSchema = z.object({\n  subject: didSchema,\n  /**\n   * Absent when the endorser is proposing a skill the subject has not listed,\n   * named by `skillName`. The record it becomes is linked from the subject's\n   * confirmation, since only they can write to their own repository.\n   */\n  skill: strongRefSchema.optional(),\n  skillName: z.string().min(1).refine(maxGraphemes(64)).max(640),\n  comment: z.string().refine(maxGraphemes(300)).max(3000).optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type EndorsementRecord = z.infer<typeof EndorsementRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, maxGraphemes, strongRefSchema } from './shared.js';\n\n/**\n * Relations shipped today. The lexicon declares these as `knownValues`, not an\n * enum, so the schema accepts any string: a consumer that meets a relation it\n * does not recognise should still see that the named person affirmed something.\n */\nexport const CONFIRMATION_RELATIONS = [\n  'id.sifa.defs#coSpeaker',\n  'id.sifa.defs#projectMember',\n] as const;\n\nexport type ConfirmationRelation = (typeof CONFIRMATION_RELATIONS)[number];\n\n/**\n * Zod schema for `id.sifa.confirmation` records.\n *\n * The subject strongRef carries no collection constraint by design: one record\n * type affirms a co-speaker credit, a project membership, and whatever\n * people-link relations come next. Resolve it by AT-URI; the CID pins the\n * version seen at confirmation time and is an integrity hint, not a join key,\n * because the claimer editing their record changes its CID without\n * invalidating anything.\n */\nexport const ConfirmationRecordSchema = z.object({\n  subject: strongRefSchema,\n  relation: z.string().min(1),\n  /**\n   * Name the subject record carried at confirmation time. Lives in the\n   * confirming person's repo, out of the claimer's reach, so a rename after\n   * the fact is detectable.\n   */\n  subjectName: z.string().refine(maxGraphemes(300)).max(3000).optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ConfirmationRecord = z.infer<typeof ConfirmationRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, maxGraphemes, selfLabelsSchema, uriSchema } from './shared.js';\n\n/**\n * Structured physical address for an organization. Mirrors\n * `community.lexicon.location.address` (all fields optional). Sifa enforces\n * ISO 3166-1 alpha-2 country codes at the app layer.\n */\nconst orgAddressSchema = z.object({\n  country: z.string().optional(),\n  postalCode: z.string().optional(),\n  region: z.string().optional(),\n  locality: z.string().optional(),\n  street: z.string().optional(),\n  name: z.string().optional(),\n});\n\n/** A featured link on the org profile. Both `name` and `url` are required. */\nconst orgLinkSchema = z.object({\n  name: z.string().refine(maxGraphemes(60)).max(600),\n  url: uriSchema.max(2048),\n});\n\n/**\n * Zod schema for `id.sifa.org.profile` records -- the self-declared\n * organization profile. Singleton (record key `self`), lives in the org's PDS.\n * Presence of this record marks the account as presenting as an organization;\n * trust is layered separately (rendering floor, verification labels).\n *\n * Mirrors the lexicon wire shape (grapheme + byte caps, blob logo, uri refs).\n * For the sifa-api write-endpoint contract, use the schemas under\n * `@singi-labs/sifa-sdk/schemas/write` instead.\n */\nexport const OrgProfileRecordSchema = z.object({\n  name: z.string().min(1).refine(maxGraphemes(200)).max(2000),\n  description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n  /** Blob ref for the org logo (`image/png` | `image/jpeg`). Not deeply validated client-side. */\n  logo: z.unknown().optional(),\n  website: uriSchema.optional(),\n  entityRefs: z.array(uriSchema).max(20).optional(),\n  /** Contact email. NOT rendered publicly; validated as email at the app layer. */\n  contact: z.string().optional(),\n  /** Physical addresses (headquarters, offices). */\n  addresses: z.array(orgAddressSchema).max(10).optional(),\n  /**\n   * Self-selected headcount range (a declared bucket, never a calculated count).\n   * Open enum (bare-string knownValues in the lexicon): `1-10`, `11-50`,\n   * `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`. Any\n   * string is accepted so future ranges do not break older records.\n   */\n  companySize: z.string().optional(),\n  /** Featured links or content surfaced on the org profile. */\n  links: z.array(orgLinkSchema).max(10).optional(),\n  /**\n   * Whether the account holder's personal profile stays visible alongside this\n   * org profile. For sole traders whose personal domain is also their trade\n   * name: one account, two facets, both pages render. Absent or false means the\n   * account presents solely as an organization.\n   */\n  personalProfileVisible: z.boolean().optional(),\n  labels: selfLabelsSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type OrgProfileRecord = z.infer<typeof OrgProfileRecordSchema>;\n","import { z } from 'zod';\n\nimport {\n  datetimeSchema,\n  didSchema,\n  maxGraphemes,\n  partialDateSchema,\n  selfLabelsSchema,\n  strongRefSchema,\n  uriSchema,\n} from './shared.js';\n\n/**\n * Zod schema for `id.sifa.org.employmentAttestation` records -- an\n * organization's attestation that a person is or was employed in a specific\n * position. Lives in the org's PDS (the org is implicit: whoever owns the repo).\n *\n * The position identity is pinned via a snapshot triple (`title`, `startedAt`,\n * and the entity identifier `entityRef` | `companyDid`) so editing those pinned\n * fields on the referenced position record voids the attestation. The free-text\n * company name is never pinned (a rebrand must not invalidate the attestation).\n *\n * `startedAt` / `endedAt` mirror the position lexicon's freeform `YYYY-MM` /\n * `YYYY-MM-DD` date shape, not strict `datetime`.\n */\nexport const OrgEmploymentAttestationRecordSchema = z.object({\n  subject: didSchema,\n  position: strongRefSchema,\n  status: z.enum(['current', 'past']),\n  title: z.string().min(1).refine(maxGraphemes(256)).max(2560),\n  startedAt: partialDateSchema,\n  entityRef: uriSchema.optional(),\n  companyDid: didSchema.optional(),\n  endedAt: partialDateSchema.optional(),\n  comment: z.string().refine(maxGraphemes(300)).max(3000).optional(),\n  labels: selfLabelsSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type OrgEmploymentAttestationRecord = z.infer<typeof OrgEmploymentAttestationRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, didSchema, maxGraphemes } from './shared.js';\n\n/**\n * Zod schema for `id.sifa.graph.follow` records.\n *\n * One-way professional follow; the record lives in the follower's PDS. Per\n * iter-1 decisions (`plans/2026-06-01-in-sifa-follow-primitive.md`), this is\n * a **distinct** graph from `app.bsky.graph.follow`, not a superset — but\n * the required field shape (`subject` + `createdAt`) is intentionally\n * identical so generic Bluesky `listRecords` consumers get usable records.\n *\n * `note` is a Sifa addition: an optional reason for the follow (\"why I\n * followed\"). Capped at 200 graphemes to match other profile-flavored\n * lexicon fields.\n */\nexport const GraphFollowRecordSchema = z.object({\n  subject: didSchema,\n  createdAt: datetimeSchema,\n  note: z.string().refine(maxGraphemes(200), 'note must be at most 200 graphemes').optional(),\n});\n\nexport type GraphFollowRecord = z.infer<typeof GraphFollowRecordSchema>;\n\n/**\n * Build a `GraphFollowRecordSchema` that rejects self-follow at the Zod\n * layer (CLAUDE.md mandatory standards #3 — input validation; sifa-api#673\n * E8 — defence in depth).\n *\n * Use this on the **client side** when constructing a new follow record\n * (the follower DID is the authenticated user). The plain\n * {@link GraphFollowRecordSchema} stays without the refine so firehose\n * consumers can validate records without context.\n */\nexport function makeGraphFollowRecordSchema(followerDid: string) {\n  return GraphFollowRecordSchema.refine((record) => record.subject !== followerDid, {\n    message: 'Self-follow is not allowed',\n    path: ['subject'],\n  });\n}\n","import { z } from 'zod';\n\nimport { datetimeSchema, didSchema } from './shared.js';\n\n/**\n * Profile row shared across `/api/following`, `/api/profile/:handleOrDid/mutuals`,\n * and `/api/me/bluesky-suggestions`. Matches the existing `FollowProfile` TS\n * interface byte-for-byte but adds runtime validation for the SDK's pagination\n * helpers and the upcoming `sifa-app` consumer (where we can't trust the wire).\n *\n * Per `sifa-api#674` PR body: mutuals + bluesky-suggestions reuse this shape\n * exactly, so a single Zod schema covers all three endpoints.\n */\nexport const FollowProfileSchema = z.object({\n  did: didSchema,\n  handle: z.string(),\n  displayName: z.string().optional(),\n  headline: z.string().optional(),\n  avatarUrl: z.string().optional(),\n  source: z.string(),\n  claimed: z.boolean(),\n  followedAt: datetimeSchema,\n  blueskyVerified: z.boolean().optional(),\n  blueskyVerifiedAt: datetimeSchema.nullable().optional(),\n});\n\nexport type FollowProfileItem = z.infer<typeof FollowProfileSchema>;\n\n/**\n * Cursor-paginated page of {@link FollowProfileSchema} rows. Used by mutuals\n * + bluesky-suggestions. The legacy `/api/following` endpoint uses a different\n * wrapper key (`follows` instead of `items`) and is intentionally NOT covered\n * by this schema.\n */\nexport const FollowProfilePageSchema = z.object({\n  items: z.array(FollowProfileSchema),\n  cursor: z.string().nullable(),\n});\n\nexport type FollowProfilePage = z.infer<typeof FollowProfilePageSchema>;\n\n/**\n * Per-flag allowlist row returned by `GET /api/admin/feature-allowlists/:flag`.\n * Mirrors the `feature_allowlists` table; `note` is optional free-form text.\n */\nexport const FeatureAllowlistEntrySchema = z.object({\n  did: didSchema,\n  addedAt: datetimeSchema,\n  note: z.string().nullable().optional(),\n});\n\nexport type FeatureAllowlistEntry = z.infer<typeof FeatureAllowlistEntrySchema>;\n\n/**\n * Known feature flags accepted by the admin allowlist endpoints. Mirrors the\n * server-side `FEATURE_FLAGS` const in `sifa-api`. Kept as a `const` tuple so\n * consumers can `as const`-narrow when building UIs.\n */\nexport const FEATURE_FLAGS = ['FEED_V5_ENABLED'] as const;\nexport type FeatureFlag = (typeof FEATURE_FLAGS)[number];\n","import { z } from 'zod';\n\nimport { atUriSchema, cidSchema, datetimeSchema, didSchema } from './shared.js';\n\n/**\n * Feed item from `GET /api/following/feed`. Discriminated on `source`:\n *\n * - `sifa`: a Sifa-native event (e.g. profile update, endorsement).\n * - `atmosphere`: a curated creation event from another ATproto app\n *   (Barazo post, etc.). Payload is the hydrated `app.bsky.embed.*#view`\n *   shape, NOT the raw record (per memory `sifa-hydrated-view-embed-types`).\n *\n * Both variants share `actor`, `indexedAt`, and `id` (the materialized\n * `feed_events.id` row identifier, used in the cursor).\n */\nexport const FeedActorSchema = z.object({\n  did: didSchema,\n  handle: z.string(),\n  displayName: z.string().optional(),\n  avatarUrl: z.string().optional(),\n});\n\nexport type FeedActor = z.infer<typeof FeedActorSchema>;\n\nconst FeedItemBaseSchema = z.object({\n  id: z.string(),\n  actor: FeedActorSchema,\n  indexedAt: datetimeSchema,\n  eventType: z.string(),\n});\n\n/**\n * @deprecated The `/api/following/feed` surface was reverted (sifa-api#674).\n *   Per `decisions/activity-data-strategy.md` the Sifa Timeline + ATmosphere\n *   Stream are two distinct surfaces with different data paths (Barazo API\n *   for Timeline, live PDS reads + Valkey for Stream). These collapsed feed\n *   types are no longer consumed. Scheduled for removal in next major bump.\n */\nexport const SifaFeedItemSchema = FeedItemBaseSchema.extend({\n  source: z.literal('sifa'),\n  appId: z.literal('sifa').optional(),\n  payload: z.record(z.string(), z.unknown()),\n});\n\n/**\n * @deprecated The `/api/following/feed` surface was reverted (sifa-api#674).\n *   Per `decisions/activity-data-strategy.md` the Sifa Timeline + ATmosphere\n *   Stream are two distinct surfaces with different data paths (Barazo API\n *   for Timeline, live PDS reads + Valkey for Stream). These collapsed feed\n *   types are no longer consumed. Scheduled for removal in next major bump.\n */\nexport type SifaFeedItem = z.infer<typeof SifaFeedItemSchema>;\n\n/**\n * ATmosphere feed item. `payload` is intentionally permissive: it carries\n * a hydrated `app.bsky.embed.*#view` shape that varies by source app. The\n * AppView resolves the hydration; clients render via the existing\n * embed-view union (mirrors `sifa-web/src/components/stream/`).\n *\n * @deprecated The `/api/following/feed` surface was reverted (sifa-api#674).\n *   Per `decisions/activity-data-strategy.md` the Sifa Timeline + ATmosphere\n *   Stream are two distinct surfaces with different data paths (Barazo API\n *   for Timeline, live PDS reads + Valkey for Stream). These collapsed feed\n *   types are no longer consumed. Scheduled for removal in next major bump.\n */\nexport const AtmosphereFeedItemSchema = FeedItemBaseSchema.extend({\n  source: z.literal('atmosphere'),\n  appId: z.string(),\n  uri: atUriSchema.optional(),\n  cid: cidSchema.optional(),\n  payload: z.record(z.string(), z.unknown()),\n});\n\n/**\n * @deprecated The `/api/following/feed` surface was reverted (sifa-api#674).\n *   Per `decisions/activity-data-strategy.md` the Sifa Timeline + ATmosphere\n *   Stream are two distinct surfaces with different data paths (Barazo API\n *   for Timeline, live PDS reads + Valkey for Stream). These collapsed feed\n *   types are no longer consumed. Scheduled for removal in next major bump.\n */\nexport type AtmosphereFeedItem = z.infer<typeof AtmosphereFeedItemSchema>;\n\n/**\n * @deprecated The `/api/following/feed` surface was reverted (sifa-api#674).\n *   Per `decisions/activity-data-strategy.md` the Sifa Timeline + ATmosphere\n *   Stream are two distinct surfaces with different data paths (Barazo API\n *   for Timeline, live PDS reads + Valkey for Stream). These collapsed feed\n *   types are no longer consumed. Scheduled for removal in next major bump.\n */\nexport const FollowFeedItemSchema = z.discriminatedUnion('source', [\n  SifaFeedItemSchema,\n  AtmosphereFeedItemSchema,\n]);\n\n/**\n * @deprecated The `/api/following/feed` surface was reverted (sifa-api#674).\n *   Per `decisions/activity-data-strategy.md` the Sifa Timeline + ATmosphere\n *   Stream are two distinct surfaces with different data paths (Barazo API\n *   for Timeline, live PDS reads + Valkey for Stream). These collapsed feed\n *   types are no longer consumed. Scheduled for removal in next major bump.\n */\nexport type FollowFeedItem = z.infer<typeof FollowFeedItemSchema>;\n\n/**\n * @deprecated The `/api/following/feed` surface was reverted (sifa-api#674).\n *   Per `decisions/activity-data-strategy.md` the Sifa Timeline + ATmosphere\n *   Stream are two distinct surfaces with different data paths (Barazo API\n *   for Timeline, live PDS reads + Valkey for Stream). These collapsed feed\n *   types are no longer consumed. Scheduled for removal in next major bump.\n */\nexport const FollowFeedPageSchema = z.object({\n  items: z.array(FollowFeedItemSchema),\n  cursor: z.string().nullable(),\n});\n\n/**\n * @deprecated The `/api/following/feed` surface was reverted (sifa-api#674).\n *   Per `decisions/activity-data-strategy.md` the Sifa Timeline + ATmosphere\n *   Stream are two distinct surfaces with different data paths (Barazo API\n *   for Timeline, live PDS reads + Valkey for Stream). These collapsed feed\n *   types are no longer consumed. Scheduled for removal in next major bump.\n */\nexport type FollowFeedPage = z.infer<typeof FollowFeedPageSchema>;\n\n/**\n * Composite feed cursor `(indexedAt DESC, source, id)`. Encoded as a\n * URL-safe base64 string so it survives `URLSearchParams` round-trips\n * without further encoding. Decoupling encode/decode from the API call\n * lets consumers persist cursors (e.g. for \"jump-back-here\" UX) and\n * lets us unit-test the format.\n */\nexport interface FeedCursor {\n  indexedAt: string;\n  source: 'sifa' | 'atmosphere';\n  id: string;\n}\n\nconst FeedCursorSchema = z.object({\n  indexedAt: datetimeSchema,\n  source: z.union([z.literal('sifa'), z.literal('atmosphere')]),\n  id: z.string().min(1),\n});\n\ninterface BufferLike {\n  from: (input: string, encoding: 'utf-8' | 'base64') => { toString: (encoding: string) => string };\n}\n\ninterface Base64Global {\n  btoa?: (input: string) => string;\n  atob?: (input: string) => string;\n  Buffer?: BufferLike;\n}\n\nfunction toBase64Url(input: string): string {\n  const g = globalThis as unknown as Base64Global;\n  const b64: string =\n    typeof g.btoa === 'function'\n      ? g.btoa(unescape(encodeURIComponent(input)))\n      : (g.Buffer as BufferLike).from(input, 'utf-8').toString('base64');\n  // Strip up to 2 trailing '=' (base64 padding). CodeQL flags `/=+$/` as a\n  // polynomial regex on tainted input; we don't accept tainted input here,\n  // but the deterministic loop sidesteps the alert.\n  let end = b64.length;\n  while (end > 0 && b64.charCodeAt(end - 1) === 61) end--;\n  return b64.slice(0, end).replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\nfunction fromBase64Url(input: string): string {\n  const padded = input.replace(/-/g, '+').replace(/_/g, '/') + '==='.slice((input.length + 3) % 4);\n  const g = globalThis as unknown as Base64Global;\n  if (typeof g.atob === 'function') {\n    return decodeURIComponent(escape(g.atob(padded)));\n  }\n  return (g.Buffer as BufferLike).from(padded, 'base64').toString('utf-8');\n}\n\nexport function encodeFeedCursor(cursor: FeedCursor): string {\n  return toBase64Url(JSON.stringify(cursor));\n}\n\nexport function decodeFeedCursor(encoded: string): FeedCursor {\n  const json = fromBase64Url(encoded);\n  const parsed: unknown = JSON.parse(json);\n  return FeedCursorSchema.parse(parsed);\n}\n","import { z } from 'zod';\n\nimport {\n  datetimeSchema,\n  didSchema,\n  maxGraphemes,\n  partialDateSchema,\n  selfLabelsSchema,\n  uriSchema,\n} from './shared.js';\n\n/** Zod schema for `id.sifa.profile.certification` records. */\nexport const ProfileCertificationRecordSchema = z.object({\n  name: z.string().min(1).refine(maxGraphemes(100)).max(1000),\n  authority: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  authorityDid: didSchema.optional(),\n  // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.\n  // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).\n  entityRef: 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  credentialId: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  credentialUrl: uriSchema.optional(),\n  issuedAt: partialDateSchema.optional(),\n  expiresAt: partialDateSchema.optional(),\n  labels: selfLabelsSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileCertificationRecord = z.infer<typeof ProfileCertificationRecordSchema>;\n","import { z } from 'zod';\n\nimport {\n  atUriSchema,\n  datetimeSchema,\n  maxGraphemes,\n  partialDateSchema,\n  strongRefSchema,\n} from './shared.js';\n\n/** Zod schema for `id.sifa.profile.course` records. */\nexport const ProfileCourseRecordSchema = z.object({\n  name: z.string().min(1).refine(maxGraphemes(200)).max(2000),\n  number: z.string().refine(maxGraphemes(50)).max(500).optional(),\n  institution: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.\n  // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).\n  entityRef: 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  education: strongRefSchema.optional(),\n  // AT-URI of the associated id.sifa.profile.certification record. Plain\n  // at-uri (not a strongRef) so the link tracks the live certification.\n  credential: atUriSchema.optional(),\n  completedAt: partialDateSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileCourseRecord = z.infer<typeof ProfileCourseRecordSchema>;\n","import { z } from 'zod';\n\nimport {\n  datetimeSchema,\n  didSchema,\n  maxGraphemes,\n  partialDateSchema,\n  selfLabelsSchema,\n} from './shared.js';\n\n/** Zod schema for `id.sifa.profile.education` records. */\nexport const ProfileEducationRecordSchema = z.object({\n  institution: z.string().min(1).refine(maxGraphemes(100)).max(1000),\n  institutionDid: didSchema.optional(),\n  // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.\n  // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).\n  entityRef: 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  degree: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  fieldOfStudy: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  grade: z.string().refine(maxGraphemes(50)).max(500).optional(),\n  activities: z.string().refine(maxGraphemes(1000)).max(10000).optional(),\n  description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n  location: z.unknown().optional(),\n  startedAt: partialDateSchema.optional(),\n  endedAt: partialDateSchema.optional(),\n  labels: selfLabelsSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileEducationRecord = z.infer<typeof ProfileEducationRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, maxGraphemes, uriSchema } from './shared.js';\n\n/**\n * Zod schema for `id.sifa.profile.externalAccount` records.\n *\n * `platform` is advisory (`knownValues` in the lexicon) -- known values live\n * under `id.sifa.defs#platform*` but unknown values are accepted.\n */\nexport const ProfileExternalAccountRecordSchema = z.object({\n  platform: z.string(),\n  url: uriSchema,\n  label: z.string().refine(maxGraphemes(64)).max(640).optional(),\n  feedUrl: uriSchema.optional(),\n  isPrimary: z.boolean().optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileExternalAccountRecord = z.infer<typeof ProfileExternalAccountRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, didSchema, maxGraphemes, partialDateSchema } from './shared.js';\n\n/** Zod schema for `id.sifa.profile.honor` records. */\nexport const ProfileHonorRecordSchema = z.object({\n  title: z.string().min(1).refine(maxGraphemes(200)).max(2000),\n  issuer: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  issuerDid: didSchema.optional(),\n  // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.\n  // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).\n  entityRef: 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  description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n  awardedAt: partialDateSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileHonorRecord = z.infer<typeof ProfileHonorRecordSchema>;\n","import { z } from 'zod';\n\nimport {\n  datetimeSchema,\n  didSchema,\n  maxGraphemes,\n  partialDateSchema,\n  externalRecordRefSchema,\n  selfLabelsSchema,\n  strongRefSchema,\n  uriSchema,\n} from './shared.js';\n\n/**\n * A person named as a member of a project. Mirrors `id.sifa.defs#projectMemberRef`.\n *\n * A claim by the record author, not a fact: the named person carries a display\n * name, avatar, and profile link only once they publish a matching\n * `id.sifa.confirmation`. `role` is display only, since a record living in\n * someone else's repository cannot grant write access to anything.\n */\nexport const projectMemberRefSchema = z.object({\n  did: didSchema,\n  role: z.string().optional(),\n  title: z.string().refine(maxGraphemes(128)).max(1280).optional(),\n});\n\nexport type ProjectMemberRef = z.infer<typeof projectMemberRefSchema>;\n\n/** Zod schema for `id.sifa.profile.project` records. */\nexport const ProfileProjectRecordSchema = z.object({\n  name: z.string().min(1).refine(maxGraphemes(256)).max(2560),\n  description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n  url: uriSchema.optional(),\n  members: z.array(projectMemberRefSchema).max(50).optional(),\n  /**\n   * The canonical `id.sifa.project.self` this personal entry corresponds to.\n   * A composition link. For the same project recorded on someone else's\n   * profile, see `sameAs`.\n   */\n  projectRef: strongRefSchema.optional(),\n  /**\n   * The same project as recorded on another person's profile. Each side stays\n   * its own record; this only says the two describe one thing. Resolves by\n   * AT-URI, since they will keep editing their copy.\n   */\n  sameAs: externalRecordRefSchema.optional(),\n  position: strongRefSchema.optional(),\n  startedAt: partialDateSchema.optional(),\n  endedAt: partialDateSchema.optional(),\n  labels: selfLabelsSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileProjectRecord = z.infer<typeof ProfileProjectRecordSchema>;\n","import { z } from 'zod';\n\nimport {\n  datetimeSchema,\n  didSchema,\n  externalRecordRefSchema,\n  maxGraphemes,\n  partialDateSchema,\n  selfLabelsSchema,\n  uriSchema,\n} from './shared.js';\nimport { projectMemberRefSchema } from './profile-project.js';\n\n/** Collection NSID for involvement records. Pass to the generic record helpers. */\nexport const PROFILE_INVOLVEMENT_NSID = 'id.sifa.profile.involvement';\n\n/**\n * A public artifact proving a piece of work. Mirrors `id.sifa.defs#artifactLink`.\n * `kind` is an open enum (bare-string knownValues), so any string is accepted.\n * `.passthrough()` keeps unknown fields a newer client or co-writer may emit.\n */\nexport const ArtifactLinkSchema = z\n  .object({\n    url: uriSchema,\n    kind: z.string().optional(),\n    label: z.string().refine(maxGraphemes(200)).max(2000).optional(),\n  })\n  .passthrough();\n\nexport type ArtifactLink = z.infer<typeof ArtifactLinkSchema>;\n\n/**\n * Zod schema for `id.sifa.profile.involvement` records.\n *\n * `.passthrough()` (not `.strict()`): external apps (Verak, weareonhire)\n * co-write `id.sifa.*`, so an older SDK must not reject a record carrying a\n * field it doesn't know yet. `kind` is an open enum matching the lexicon's\n * knownValues but accepting any string for the same forward-compat reason.\n */\nexport const ProfileInvolvementRecordSchema = z\n  .object({\n    kind: z.string(),\n    upstream: z.string().refine(maxGraphemes(256)).max(2560).optional(),\n    upstreamDid: didSchema.optional(),\n    upstreamUrl: uriSchema.optional(),\n    role: z.string().refine(maxGraphemes(256)).max(2560).optional(),\n    description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n    startedAt: partialDateSchema.optional(),\n    endedAt: partialDateSchema.optional(),\n    links: z.array(ArtifactLinkSchema).max(50).optional(),\n    // Portable org entity identifier (Wikidata/ROR/LEI URI) from the resolver\n    // typeahead, constrained to http(s) so a script scheme is never a valid ref.\n    entityRef: 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    // community.lexicon.location.address — validated at the app layer.\n    location: z.unknown().optional(),\n    // id.sifa.defs#skillRef references (at-uri to a skill record in the same repo).\n    skills: z\n      .array(z.object({ uri: z.string() }))\n      .max(50)\n      .optional(),\n    labels: selfLabelsSchema.optional(),\n    collaborators: z.array(projectMemberRefSchema).max(50).optional(),\n    sameAs: externalRecordRefSchema.optional(),\n    createdAt: datetimeSchema,\n  })\n  .passthrough();\n\nexport type ProfileInvolvementRecord = z.infer<typeof ProfileInvolvementRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, maxGraphemes } from './shared.js';\n\n/**\n * Zod schema for `id.sifa.profile.language` records.\n *\n * `proficiency` is advisory (`knownValues` in the lexicon) -- known values\n * are the five-level LinkedIn-compatible scale under `id.sifa.defs#*`.\n */\nexport const ProfileLanguageRecordSchema = z.object({\n  name: z.string().min(1).refine(maxGraphemes(64)).max(640),\n  proficiency: z.string().optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileLanguageRecord = z.infer<typeof ProfileLanguageRecordSchema>;\n","import { z } from 'zod';\n\nimport {\n  datetimeSchema,\n  didSchema,\n  maxGraphemes,\n  partialDateSchema,\n  selfLabelsSchema,\n  skillRefSchema,\n} from './shared.js';\n\n// Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.\n// Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).\n// Shared by the two entity references on a position so the scheme check cannot\n// drift between them.\nconst entityRefField = 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/** Zod schema for `id.sifa.profile.position` records. */\nexport const ProfilePositionRecordSchema = z\n  .object({\n    company: z.string().min(1).refine(maxGraphemes(100)).max(1000).optional(),\n    companyDid: didSchema.optional(),\n    entityRef: entityRefField,\n    title: z.string().min(1).refine(maxGraphemes(100)).max(1000),\n    description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n    employmentType: z.string().optional(),\n    // Disclosure that the role is held as someone else's representative -- most often\n    // a fund whose board seat this is. Capped at the lexicon's 256 graphemes rather\n    // than the tighter limit used for `company`: a schema stricter than the lexicon\n    // would reject records other clients can legally write.\n    onBehalfOf: z.string().refine(maxGraphemes(256)).max(2560).optional(),\n    // May resolve to an organization or to a person (a family-office principal); a DID\n    // does not distinguish the two, so this stays permissive.\n    onBehalfOfDid: didSchema.optional(),\n    onBehalfOfEntityRef: entityRefField,\n    workplaceType: z.string().optional(),\n    location: z.unknown().optional(),\n    startedAt: partialDateSchema,\n    endedAt: partialDateSchema.optional(),\n    // id.sifa.defs#skillRef -- at-uri only, no cid. Skills are mutable records\n    // in the same repo, so the ref resolves live rather than pinning a version.\n    skills: z.array(skillRefSchema).max(50).optional(),\n    isPrimary: z.boolean().optional(),\n    labels: selfLabelsSchema.optional(),\n    createdAt: datetimeSchema,\n  })\n  .passthrough();\n\nexport type ProfilePositionRecord = z.infer<typeof ProfilePositionRecordSchema>;\n","import { z } from 'zod';\n\nimport { BlobRefSchema } from './blob-ref.js';\nimport { datetimeSchema, externalRecordRefSchema, maxGraphemes, uriSchema } from './shared.js';\n\n/**\n * Duration of a presentation, in minutes. Mirrors\n * `id.sifa.profile.presentation#duration`: a fixed length (minMinutes only) or\n * a range (minMinutes to maxMinutes).\n */\nexport const PresentationDurationSchema = 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\nexport type PresentationDuration = z.infer<typeof PresentationDurationSchema>;\n\n/**\n * A related link for a presentation or one of its deliveries. Mirrors\n * `id.sifa.defs#presentationLink`. `type` is an open enum (knownValues), so any\n * string is accepted.\n */\nexport const PresentationLinkSchema = z.object({\n  uri: uriSchema,\n  label: z.string().refine(maxGraphemes(64)).max(640).optional(),\n  type: z.string().optional(),\n});\n\nexport type PresentationLink = z.infer<typeof PresentationLinkSchema>;\n\n/** Zod schema for `id.sifa.profile.presentation` records (the reusable content). */\nexport const ProfilePresentationRecordSchema = z.object({\n  title: z.string().min(1).refine(maxGraphemes(300)).max(3000),\n  description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n  duration: PresentationDurationSchema.optional(),\n  intendedAudiences: z\n    .array(z.string().refine(maxGraphemes(100)).max(1000))\n    .max(20)\n    .optional(),\n  links: z.array(PresentationLinkSchema).max(20).optional(),\n  // Optional reference to a long-form write-up (pub.leaflet.document or\n  // site.standard.document). Plain at-uri + optional cid so it tracks edits.\n  writeupRef: externalRecordRefSchema.optional(),\n  // Optional uploaded cover image for the talk page.\n  coverImage: BlobRefSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfilePresentationRecord = z.infer<typeof ProfilePresentationRecordSchema>;\n","import { z } from 'zod';\n\nimport { PresentationLinkSchema } from './profile-presentation.js';\nimport { datetimeSchema, externalRecordRefSchema, maxGraphemes } from './shared.js';\n\n/**\n * Structured address for a delivery occasion. Mirrors\n * `community.lexicon.location.address` (all fields optional).\n */\nconst communityAddressSchema = z.object({\n  country: z.string().optional(),\n  postalCode: z.string().optional(),\n  region: z.string().optional(),\n  locality: z.string().optional(),\n  street: z.string().optional(),\n  name: z.string().optional(),\n});\n\n/**\n * Zod schema for `id.sifa.profile.presentationDelivery` records (one occasion\n * on which a presentation was delivered). Works standalone or linked to a\n * presentation and/or a calendar event. `role`, `mode`, and `status` are open\n * enums (knownValues); `mode`/`status` store the full\n * `community.lexicon.calendar.event` token.\n */\nexport const ProfilePresentationDeliveryRecordSchema = z.object({\n  // Optional reference to the id.sifa.profile.presentation delivered here.\n  presentationRef: externalRecordRefSchema.optional(),\n  // Fallback title used when there is no presentationRef.\n  title: z.string().refine(maxGraphemes(300)).max(3000).optional(),\n  role: z.string().refine(maxGraphemes(64)).max(640).optional(),\n  eventName: z.string().refine(maxGraphemes(300)).max(3000).optional(),\n  // Calendar date as YYYY-MM-DD (day only).\n  date: z\n    .string()\n    .regex(/^\\d{4}-\\d{2}-\\d{2}$/, 'date must be YYYY-MM-DD')\n    .optional(),\n  location: z.string().refine(maxGraphemes(256)).max(2560).optional(),\n  // Structured community.lexicon.location.address for the occasion. The\n  // free-text `location` string above stays as a legacy fallback.\n  address: communityAddressSchema.optional(),\n  mode: z.string().optional(),\n  status: z.string().optional(),\n  links: z.array(PresentationLinkSchema).max(20).optional(),\n  // Optional reference to a community.lexicon.calendar.event for this occasion.\n  eventRef: externalRecordRefSchema.optional(),\n  // DIDs of co-speakers who presented alongside the author at this occasion.\n  coSpeakers: z\n    .array(z.string().regex(/^did:[a-z]+:[^\\s]+$/, 'must be a DID'))\n    .max(20)\n    .optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfilePresentationDeliveryRecord = z.infer<\n  typeof ProfilePresentationDeliveryRecordSchema\n>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, didSchema, maxGraphemes, partialDateSchema, uriSchema } from './shared.js';\n\n/** Author shape from `id.sifa.profile.publication#author`. */\nexport const PublicationAuthorSchema = z.object({\n  name: z.string().min(1).refine(maxGraphemes(100)).max(1000),\n  did: didSchema.optional(),\n});\n\nexport type PublicationAuthor = z.infer<typeof PublicationAuthorSchema>;\n\n/** Zod schema for `id.sifa.profile.publication` records. */\nexport const ProfilePublicationRecordSchema = z.object({\n  title: z.string().min(1).refine(maxGraphemes(200)).max(2000),\n  subtitle: z.string().refine(maxGraphemes(200)).max(2000).optional(),\n  publisher: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  url: uriSchema.optional(),\n  description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n  authors: z.array(PublicationAuthorSchema).max(50).optional(),\n  publishedAt: partialDateSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfilePublicationRecord = z.infer<typeof ProfilePublicationRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, languageTagSchema, maxGraphemes, selfLabelsSchema } from './shared.js';\n\n/**\n * Zod schema for `id.sifa.profile.self` records. Singleton (record key `self`).\n *\n * `knownValues` on `openTo` and `preferredWorkplace` are advisory per the\n * lexicon spec -- unknown values are allowed, but documented options live\n * under the `id.sifa.defs#*` namespace.\n */\nexport const ProfileSelfRecordSchema = z.object({\n  headline: z.string().refine(maxGraphemes(120)).max(1200).optional(),\n  about: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n  industry: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  givenName: z.string().refine(maxGraphemes(64)).max(640).optional(),\n  familyName: z.string().refine(maxGraphemes(64)).max(640).optional(),\n  namePronunciation: z.string().refine(maxGraphemes(64)).max(640).optional(),\n  location: z.unknown().optional(),\n  openTo: z.array(z.string()).max(10).optional(),\n  preferredWorkplace: z.array(z.string()).max(3).optional(),\n  langs: z.array(languageTagSchema).max(3).optional(),\n  labels: selfLabelsSchema.optional(),\n  discoverable: z.boolean().optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileSelfRecord = z.infer<typeof ProfileSelfRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, maxGraphemes } from './shared.js';\n\n/**\n * Zod schema for `id.sifa.profile.skill` records.\n *\n * `category` is advisory (`knownValues` in the lexicon) -- known values live\n * under `id.sifa.defs#*` but unknown values are accepted. `subCategory` is a\n * freeform user-defined grouping label nested under `category` (no known\n * values); renderers decide its display label.\n */\nexport const ProfileSkillRecordSchema = z.object({\n  name: z.string().min(1).refine(maxGraphemes(64)).max(640),\n  category: z.string().optional(),\n  subCategory: z.string().refine(maxGraphemes(64)).max(640).optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileSkillRecord = z.infer<typeof ProfileSkillRecordSchema>;\n","import { z } from 'zod';\n\nimport { datetimeSchema, didSchema, maxGraphemes, partialDateSchema } from './shared.js';\n\n/** Zod schema for `id.sifa.profile.volunteering` records. */\nexport const ProfileVolunteeringRecordSchema = z.object({\n  organization: z.string().min(1).refine(maxGraphemes(100)).max(1000),\n  organizationDid: didSchema.optional(),\n  // Portable org entity identifier (Wikidata/ROR/LEI URI) from the typeahead.\n  // Constrained to http(s) so a script-bearing scheme is never a valid ref (#159).\n  entityRef: 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  role: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  cause: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n  description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n  startedAt: partialDateSchema.optional(),\n  endedAt: partialDateSchema.optional(),\n  createdAt: datetimeSchema,\n});\n\nexport type ProfileVolunteeringRecord = z.infer<typeof ProfileVolunteeringRecordSchema>;\n","import { z } from 'zod';\n\nimport { ArtifactLinkSchema } from './profile-involvement.js';\nimport {\n  datetimeSchema,\n  didSchema,\n  maxGraphemes,\n  partialDateSchema,\n  selfLabelsSchema,\n} from './shared.js';\n\n// Portable entity identifier (Wikidata/ROR/LEI URI) from the typeahead. Constrained\n// to http(s) so a script-bearing scheme is never a valid ref (#159). An investment\n// carries two of these -- the company and the vehicle -- so the check is shared.\nconst entityRefField = 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 * A deliberately structured amount. Free text was rejected here: an unparseable\n * money string is worse than no amount at all, and cannot be repaired once people\n * have written them.\n */\nexport const InvestmentAmountSchema = z.object({\n  /** Whole major currency units (euros, not cents). Cheque sizes are round numbers. */\n  value: z.number().int().min(0),\n  /** ISO 4217 three-letter code, uppercase. */\n  currency: z.string().length(3),\n});\n\n/** Collection NSID for investment records. */\nexport const PROFILE_INVESTMENT_NSID = 'id.sifa.profile.investment';\n\n/** Zod schema for `id.sifa.profile.investment` records. */\nexport const ProfileInvestmentRecordSchema = z\n  .object({\n    /** For a limited-partner entry this names the fund, not a portfolio company. */\n    company: z.string().min(1).refine(maxGraphemes(256)).max(2560),\n    companyDid: didSchema.optional(),\n    entityRef: entityRefField,\n    role: z.string().optional(),\n    stage: z.string().optional(),\n    status: z.string().optional(),\n    /** The vehicle the capital went through. Absent for a cheque in the person's own name. */\n    via: z.string().refine(maxGraphemes(256)).max(2560).optional(),\n    viaDid: didSchema.optional(),\n    viaEntityRef: entityRefField,\n    /**\n     * Optional and empty by default. Cheque size is a personal financial disclosure,\n     * and clients must not prompt for it.\n     */\n    amount: InvestmentAmountSchema.optional(),\n    startedAt: partialDateSchema.optional(),\n    endedAt: partialDateSchema.optional(),\n    description: z.string().refine(maxGraphemes(5000)).max(50000).optional(),\n    links: z.array(ArtifactLinkSchema).max(50).optional(),\n    labels: selfLabelsSchema.optional(),\n    createdAt: datetimeSchema,\n  })\n  .passthrough();\n\nexport type ProfileInvestmentRecord = z.infer<typeof ProfileInvestmentRecordSchema>;\n"]}