@singi-labs/sifa-sdk 0.19.46 → 0.19.47

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.
package/dist/index.d.cts CHANGED
@@ -1827,7 +1827,36 @@ interface ActivityItem {
1827
1827
  */
1828
1828
  declare const STREAM_VERBS: readonly ["posted", "reposted", "published", "presented", "endorsed", "joined", "shipped", "reviewed", "created", "commented", "replied", "rsvped", "liked", "followed", "bookmarked", "registered", "annotated", "streamed", "wrote", "wasAt", "metWith", "supported", "verified", "received", "styledCharacter"];
1829
1829
  type StreamVerb = (typeof STREAM_VERBS)[number];
1830
- /** Zod enum for a {@link StreamVerb}, shared with the view-model schema. */
1830
+ interface ActivityVerbMap {
1831
+ version: string;
1832
+ updated: string;
1833
+ /** Verb returned for any collection not present in `verbs`. */
1834
+ defaultVerb: StreamVerb;
1835
+ /** Verb keyed by lexicon NSID. */
1836
+ verbs: Record<string, StreamVerb>;
1837
+ }
1838
+ /**
1839
+ * The verb map, keyed by lexicon NSID. Versioned independently from
1840
+ * `activity-tiers.json` so tier and verb evolve on their own cadence.
1841
+ */
1842
+ declare const ACTIVITY_VERBS: Readonly<ActivityVerbMap>;
1843
+ /**
1844
+ * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown
1845
+ * or empty collections fall back to the map's `defaultVerb` (`created`).
1846
+ */
1847
+ declare function verbForCollection(collection: string): StreamVerb;
1848
+ /** Verb-map version + updated date, for diagnostics and version-skew checks. */
1849
+ declare function getActivityVerbsVersion(): {
1850
+ version: string;
1851
+ updated: string;
1852
+ };
1853
+
1854
+ /**
1855
+ * Zod enum for a {@link StreamVerb}, shared with the view-model schema.
1856
+ *
1857
+ * Kept apart from `verbs.ts` so code that only maps collections to verbs does
1858
+ * not load zod.
1859
+ */
1831
1860
  declare const streamVerbSchema: z.ZodEnum<{
1832
1861
  verified: "verified";
1833
1862
  created: "created";
@@ -1855,29 +1884,6 @@ declare const streamVerbSchema: z.ZodEnum<{
1855
1884
  liked: "liked";
1856
1885
  followed: "followed";
1857
1886
  }>;
1858
- interface ActivityVerbMap {
1859
- version: string;
1860
- updated: string;
1861
- /** Verb returned for any collection not present in `verbs`. */
1862
- defaultVerb: StreamVerb;
1863
- /** Verb keyed by lexicon NSID. */
1864
- verbs: Record<string, StreamVerb>;
1865
- }
1866
- /**
1867
- * The verb map, keyed by lexicon NSID. Versioned independently from
1868
- * `activity-tiers.json` so tier and verb evolve on their own cadence.
1869
- */
1870
- declare const ACTIVITY_VERBS: Readonly<ActivityVerbMap>;
1871
- /**
1872
- * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown
1873
- * or empty collections fall back to the map's `defaultVerb` (`created`).
1874
- */
1875
- declare function verbForCollection(collection: string): StreamVerb;
1876
- /** Verb-map version + updated date, for diagnostics and version-skew checks. */
1877
- declare function getActivityVerbsVersion(): {
1878
- version: string;
1879
- updated: string;
1880
- };
1881
1887
 
1882
1888
  /**
1883
1889
  * The app a stream item originated from, resolved from the app registry.
package/dist/index.d.ts CHANGED
@@ -1827,7 +1827,36 @@ interface ActivityItem {
1827
1827
  */
1828
1828
  declare const STREAM_VERBS: readonly ["posted", "reposted", "published", "presented", "endorsed", "joined", "shipped", "reviewed", "created", "commented", "replied", "rsvped", "liked", "followed", "bookmarked", "registered", "annotated", "streamed", "wrote", "wasAt", "metWith", "supported", "verified", "received", "styledCharacter"];
1829
1829
  type StreamVerb = (typeof STREAM_VERBS)[number];
1830
- /** Zod enum for a {@link StreamVerb}, shared with the view-model schema. */
1830
+ interface ActivityVerbMap {
1831
+ version: string;
1832
+ updated: string;
1833
+ /** Verb returned for any collection not present in `verbs`. */
1834
+ defaultVerb: StreamVerb;
1835
+ /** Verb keyed by lexicon NSID. */
1836
+ verbs: Record<string, StreamVerb>;
1837
+ }
1838
+ /**
1839
+ * The verb map, keyed by lexicon NSID. Versioned independently from
1840
+ * `activity-tiers.json` so tier and verb evolve on their own cadence.
1841
+ */
1842
+ declare const ACTIVITY_VERBS: Readonly<ActivityVerbMap>;
1843
+ /**
1844
+ * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown
1845
+ * or empty collections fall back to the map's `defaultVerb` (`created`).
1846
+ */
1847
+ declare function verbForCollection(collection: string): StreamVerb;
1848
+ /** Verb-map version + updated date, for diagnostics and version-skew checks. */
1849
+ declare function getActivityVerbsVersion(): {
1850
+ version: string;
1851
+ updated: string;
1852
+ };
1853
+
1854
+ /**
1855
+ * Zod enum for a {@link StreamVerb}, shared with the view-model schema.
1856
+ *
1857
+ * Kept apart from `verbs.ts` so code that only maps collections to verbs does
1858
+ * not load zod.
1859
+ */
1831
1860
  declare const streamVerbSchema: z.ZodEnum<{
1832
1861
  verified: "verified";
1833
1862
  created: "created";
@@ -1855,29 +1884,6 @@ declare const streamVerbSchema: z.ZodEnum<{
1855
1884
  liked: "liked";
1856
1885
  followed: "followed";
1857
1886
  }>;
1858
- interface ActivityVerbMap {
1859
- version: string;
1860
- updated: string;
1861
- /** Verb returned for any collection not present in `verbs`. */
1862
- defaultVerb: StreamVerb;
1863
- /** Verb keyed by lexicon NSID. */
1864
- verbs: Record<string, StreamVerb>;
1865
- }
1866
- /**
1867
- * The verb map, keyed by lexicon NSID. Versioned independently from
1868
- * `activity-tiers.json` so tier and verb evolve on their own cadence.
1869
- */
1870
- declare const ACTIVITY_VERBS: Readonly<ActivityVerbMap>;
1871
- /**
1872
- * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown
1873
- * or empty collections fall back to the map's `defaultVerb` (`created`).
1874
- */
1875
- declare function verbForCollection(collection: string): StreamVerb;
1876
- /** Verb-map version + updated date, for diagnostics and version-skew checks. */
1877
- declare function getActivityVerbsVersion(): {
1878
- version: string;
1879
- updated: string;
1880
- };
1881
1887
 
1882
1888
  /**
1883
1889
  * The app a stream item originated from, resolved from the app registry.
package/dist/index.js CHANGED
@@ -346,7 +346,7 @@ import {
346
346
  roadmapIssueUrl
347
347
  } from "./roadmap/index.js";
348
348
  import { SIFA_REPO_GROUPS, describeSifaRecord, repoGroupForCollection } from "./repo/index.js";
349
- var SIFA_SDK_VERSION = "0.19.46";
349
+ var SIFA_SDK_VERSION = "0.19.47";
350
350
  export {
351
351
  ACTIVITY_TIERS,
352
352
  ACTIVITY_VERBS,
@@ -3,9 +3,9 @@ import {
3
3
  ACTIVITY_VERBS,
4
4
  STREAM_VERBS,
5
5
  getActivityVerbsVersion,
6
- streamVerbSchema,
7
6
  verbForCollection
8
7
  } from "./verbs.js";
8
+ import { streamVerbSchema } from "./verb-schema.js";
9
9
  import {
10
10
  streamAddressSchema,
11
11
  streamCardBodySchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/stream/index.ts"],"sourcesContent":["export type { ActivityItem } from './activity-item.js';\nexport {\n ACTIVITY_VERBS,\n STREAM_VERBS,\n getActivityVerbsVersion,\n streamVerbSchema,\n verbForCollection,\n type ActivityVerbMap,\n type StreamVerb,\n} from './verbs.js';\nexport type {\n StreamAddress,\n StreamAuthor,\n StreamCardBody,\n StreamCardSubject,\n StreamCardVM,\n StreamExternalLink,\n StreamGeo,\n StreamMedia,\n StreamMediaBase,\n StreamMediaBlob,\n StreamMediaResolved,\n StreamRichSegment,\n StreamSource,\n StreamTheme,\n} from './stream-card-vm.js';\nexport {\n streamAddressSchema,\n streamCardBodySchema,\n streamCardSubjectSchema,\n streamCardVMSchema,\n streamExternalLinkSchema,\n streamGeoSchema,\n streamMediaSchema,\n streamAuthorSchema,\n streamRichSegmentSchema,\n streamSourceSchema,\n streamThemeSchema,\n} from './stream-card-vm-schema.js';\nexport {\n toStreamCardVM,\n toStreamCardVMs,\n type ToStreamCardVMOptions,\n} from './to-stream-card-vm.js';\nexport { isSelfAuthoredRich, renderAsLine } from './two-tier.js';\n"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAiBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,oBAAoB,oBAAoB;","names":[]}
1
+ {"version":3,"sources":["../../src/stream/index.ts"],"sourcesContent":["export type { ActivityItem } from './activity-item.js';\nexport {\n ACTIVITY_VERBS,\n STREAM_VERBS,\n getActivityVerbsVersion,\n verbForCollection,\n type ActivityVerbMap,\n type StreamVerb,\n} from './verbs.js';\nexport { streamVerbSchema } from './verb-schema.js';\nexport type {\n StreamAddress,\n StreamAuthor,\n StreamCardBody,\n StreamCardSubject,\n StreamCardVM,\n StreamExternalLink,\n StreamGeo,\n StreamMedia,\n StreamMediaBase,\n StreamMediaBlob,\n StreamMediaResolved,\n StreamRichSegment,\n StreamSource,\n StreamTheme,\n} from './stream-card-vm.js';\nexport {\n streamAddressSchema,\n streamCardBodySchema,\n streamCardSubjectSchema,\n streamCardVMSchema,\n streamExternalLinkSchema,\n streamGeoSchema,\n streamMediaSchema,\n streamAuthorSchema,\n streamRichSegmentSchema,\n streamSourceSchema,\n streamThemeSchema,\n} from './stream-card-vm-schema.js';\nexport {\n toStreamCardVM,\n toStreamCardVMs,\n type ToStreamCardVMOptions,\n} from './to-stream-card-vm.js';\nexport { isSelfAuthoredRich, renderAsLine } from './two-tier.js';\n"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,wBAAwB;AAiBjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,oBAAoB,oBAAoB;","names":[]}
@@ -1,6 +1,6 @@
1
1
  // src/stream/stream-card-vm-schema.ts
2
2
  import { z } from "zod";
3
- import { streamVerbSchema } from "./verbs.js";
3
+ import { streamVerbSchema } from "./verb-schema.js";
4
4
  var rgbChannelSchema = z.number().min(0).max(255);
5
5
  var rgbColorSchema = z.object({
6
6
  r: rgbChannelSchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/stream/stream-card-vm-schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport type {\n StreamAddress,\n StreamAuthor,\n StreamCardBody,\n StreamCardSubject,\n StreamCardVM,\n StreamExternalLink,\n StreamGeo,\n StreamMedia,\n StreamRichSegment,\n StreamSource,\n StreamTheme,\n} from './stream-card-vm.js';\nimport { streamVerbSchema } from './verbs.js';\n\n/** RGB channel: finite number in [0, 255] (mirrors `isValidRgbColor`). */\nconst rgbChannelSchema = z.number().min(0).max(255);\nconst rgbColorSchema = z.object({\n r: rgbChannelSchema,\n g: rgbChannelSchema,\n b: rgbChannelSchema,\n});\n\nconst aspectRatioSchema = z.object({\n width: z.number(),\n height: z.number(),\n});\n\nexport const streamSourceSchema: z.ZodType<StreamSource> = z.object({\n appId: z.string(),\n label: z.string(),\n color: z.string(),\n});\n\nexport const streamAuthorSchema: z.ZodType<StreamAuthor> = z.object({\n did: z.string().optional(),\n handle: z.string().optional(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n});\n\nexport const streamThemeSchema: z.ZodType<StreamTheme> = z.object({\n background: rgbColorSchema,\n foreground: rgbColorSchema,\n accent: rgbColorSchema,\n});\n\nconst streamMediaResolvedSchema = z.object({\n url: z.string(),\n alt: z.string(),\n aspectRatio: aspectRatioSchema.optional(),\n mimeType: z.string().optional(),\n});\n\nconst streamMediaBlobSchema = z.object({\n did: z.string(),\n cid: z.string(),\n alt: z.string(),\n aspectRatio: aspectRatioSchema.optional(),\n mimeType: z.string().optional(),\n});\n\nexport const streamMediaSchema: z.ZodType<StreamMedia> = z.union([\n streamMediaResolvedSchema,\n streamMediaBlobSchema,\n]);\n\nexport const streamExternalLinkSchema: z.ZodType<StreamExternalLink> = z.object({\n url: z.string(),\n title: z.string().optional(),\n thumb: z.string().optional(),\n});\n\nexport const streamGeoSchema: z.ZodType<StreamGeo> = z.object({\n latitude: z.number(),\n longitude: z.number(),\n});\n\nexport const streamAddressSchema: z.ZodType<StreamAddress> = z.object({\n name: z.string().optional(),\n street: z.string().optional(),\n locality: z.string().optional(),\n region: z.string().optional(),\n country: z.string().optional(),\n postalCode: z.string().optional(),\n});\n\nexport const streamRichSegmentSchema: z.ZodType<StreamRichSegment> = z.object({\n text: z.string(),\n link: z.string().optional(),\n mention: z.string().optional(),\n tag: z.string().optional(),\n});\n\nexport const streamCardBodySchema: z.ZodType<StreamCardBody> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('text'),\n text: z.string(),\n richSegments: z.array(streamRichSegmentSchema).optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('media'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('link'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('track'),\n text: z.string().optional(),\n trackTitle: z.string().optional(),\n artist: z.string().optional(),\n }),\n z.object({\n kind: z.literal('generic'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('github-pr'),\n repoOwner: z.string(),\n repoName: z.string(),\n prNumber: z.number(),\n title: z.string(),\n url: z.string().optional(),\n language: z.string().optional(),\n additions: z.number(),\n deletions: z.number(),\n mergedAt: z.string().optional(),\n }),\n z.object({\n kind: z.literal('book'),\n title: z.string(),\n authors: z.array(z.string()),\n stars: z.number().optional(),\n status: z.string().optional(),\n review: z.string().optional(),\n }),\n z.object({\n kind: z.literal('media-review'),\n reviewKind: z.enum(['review', 'post', 'note', 'other']),\n title: z.string().optional(),\n mediaType: z.string().optional(),\n rating: z.number().optional(),\n mainCredit: z.string().optional(),\n reviewText: z.string().optional(),\n isRevisit: z.boolean(),\n }),\n z.object({\n kind: z.literal('event-rsvp'),\n rsvpStatus: z.enum(['going', 'interested', 'notgoing', 'unknown']),\n eventName: z.string().optional(),\n startsAt: z.string().optional(),\n endsAt: z.string().optional(),\n mode: z.enum(['inperson', 'virtual', 'hybrid']).optional(),\n locationName: z.string().optional(),\n locationLocality: z.string().optional(),\n locationCountry: z.string().optional(),\n }),\n z.object({\n kind: z.literal('verification'),\n platform: z.string(),\n verified: z.boolean(),\n subjectLabel: z.string().optional(),\n handle: z.string().optional(),\n profileUrl: z.string().optional(),\n }),\n z.object({\n kind: z.literal('membership'),\n communityName: z.string().optional(),\n description: z.string().optional(),\n communityUri: z.string().optional(),\n }),\n z.object({\n kind: z.literal('location'),\n venueName: z.string().optional(),\n shout: z.string().optional(),\n address: streamAddressSchema.optional(),\n geo: streamGeoSchema.optional(),\n }),\n z.object({\n kind: z.literal('travel'),\n origin: z.string().optional(),\n destination: z.string().optional(),\n transportation: z.string().optional(),\n carrier: z.string().optional(),\n carrierCode: z.string().optional(),\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n }),\n z.object({\n kind: z.literal('standard-site'),\n title: z.string().optional(),\n description: z.string().optional(),\n siteUrl: z.string().optional(),\n path: z.string().optional(),\n publisherName: z.string().optional(),\n icon: z.string().optional(),\n coverImageUrl: z.string().optional(),\n readingTime: z.number().optional(),\n publishedAt: z.string().optional(),\n }),\n]);\n\n/**\n * A stream item's repost / reply / quote target. The `post` variant nests a\n * full {@link streamCardVMSchema} (deferred via `z.lazy` for recursion).\n */\nexport const streamCardSubjectSchema: z.ZodType<StreamCardSubject> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('post'),\n post: z.lazy(() => streamCardVMSchema),\n }),\n z.object({\n kind: z.literal('person'),\n did: z.string(),\n handle: z.string().optional(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n }),\n z.object({\n kind: z.literal('record'),\n uri: z.string(),\n title: z.string().optional(),\n url: z.string().optional(),\n }),\n]);\n\n/** Hypercert credit roll + outbound links, hydrated by sifa-api. */\nconst hypercertDetailsSchema = z.object({\n contributors: z.array(\n z.object({\n displayName: z.string(),\n imageUrl: z.string().optional(),\n identifier: z.string().optional(),\n weight: z.number().optional(),\n }),\n ),\n contributorCount: z.number(),\n attachments: z.array(z.object({ title: z.string().optional(), url: z.string() })),\n});\n\n/** An account a Certified record points at. */\nconst certifiedActorSchema = z.object({\n did: z.string(),\n handle: z.string(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n});\n\n/** Certified badge + resolved accounts, hydrated by sifa-api. */\nconst certifiedDetailsSchema = z.object({\n badge: z\n .object({\n title: z.string(),\n description: z.string().optional(),\n icon: z.string().optional(),\n badgeType: z.string().optional(),\n })\n .optional(),\n recipient: certifiedActorSchema.optional(),\n issuer: certifiedActorSchema.optional(),\n group: certifiedActorSchema.optional(),\n role: z.string().optional(),\n});\n\n/** Zod schema for a {@link StreamCardVM}. Recursive through `subject.post`. */\nexport const streamCardVMSchema: z.ZodType<StreamCardVM> = z.lazy(() =>\n z.object({\n uri: z.string(),\n cid: z.string(),\n verb: streamVerbSchema,\n source: streamSourceSchema,\n author: streamAuthorSchema.optional(),\n tier: z.enum(['creation', 'action', 'filtered']),\n timestamp: z.string(),\n title: z.string(),\n sourceUrl: z.string().optional(),\n body: streamCardBodySchema.optional(),\n media: z.array(streamMediaSchema).optional(),\n externalLink: streamExternalLinkSchema.optional(),\n theme: streamThemeSchema.optional(),\n subject: z.lazy(() => streamCardSubjectSchema).optional(),\n hypercertDetails: hypercertDetailsSchema.optional(),\n certifiedDetails: certifiedDetailsSchema.optional(),\n }),\n);\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/stream/stream-card-vm-schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport type {\n StreamAddress,\n StreamAuthor,\n StreamCardBody,\n StreamCardSubject,\n StreamCardVM,\n StreamExternalLink,\n StreamGeo,\n StreamMedia,\n StreamRichSegment,\n StreamSource,\n StreamTheme,\n} from './stream-card-vm.js';\nimport { streamVerbSchema } from './verb-schema.js';\n\n/** RGB channel: finite number in [0, 255] (mirrors `isValidRgbColor`). */\nconst rgbChannelSchema = z.number().min(0).max(255);\nconst rgbColorSchema = z.object({\n r: rgbChannelSchema,\n g: rgbChannelSchema,\n b: rgbChannelSchema,\n});\n\nconst aspectRatioSchema = z.object({\n width: z.number(),\n height: z.number(),\n});\n\nexport const streamSourceSchema: z.ZodType<StreamSource> = z.object({\n appId: z.string(),\n label: z.string(),\n color: z.string(),\n});\n\nexport const streamAuthorSchema: z.ZodType<StreamAuthor> = z.object({\n did: z.string().optional(),\n handle: z.string().optional(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n});\n\nexport const streamThemeSchema: z.ZodType<StreamTheme> = z.object({\n background: rgbColorSchema,\n foreground: rgbColorSchema,\n accent: rgbColorSchema,\n});\n\nconst streamMediaResolvedSchema = z.object({\n url: z.string(),\n alt: z.string(),\n aspectRatio: aspectRatioSchema.optional(),\n mimeType: z.string().optional(),\n});\n\nconst streamMediaBlobSchema = z.object({\n did: z.string(),\n cid: z.string(),\n alt: z.string(),\n aspectRatio: aspectRatioSchema.optional(),\n mimeType: z.string().optional(),\n});\n\nexport const streamMediaSchema: z.ZodType<StreamMedia> = z.union([\n streamMediaResolvedSchema,\n streamMediaBlobSchema,\n]);\n\nexport const streamExternalLinkSchema: z.ZodType<StreamExternalLink> = z.object({\n url: z.string(),\n title: z.string().optional(),\n thumb: z.string().optional(),\n});\n\nexport const streamGeoSchema: z.ZodType<StreamGeo> = z.object({\n latitude: z.number(),\n longitude: z.number(),\n});\n\nexport const streamAddressSchema: z.ZodType<StreamAddress> = z.object({\n name: z.string().optional(),\n street: z.string().optional(),\n locality: z.string().optional(),\n region: z.string().optional(),\n country: z.string().optional(),\n postalCode: z.string().optional(),\n});\n\nexport const streamRichSegmentSchema: z.ZodType<StreamRichSegment> = z.object({\n text: z.string(),\n link: z.string().optional(),\n mention: z.string().optional(),\n tag: z.string().optional(),\n});\n\nexport const streamCardBodySchema: z.ZodType<StreamCardBody> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('text'),\n text: z.string(),\n richSegments: z.array(streamRichSegmentSchema).optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('media'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('link'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('track'),\n text: z.string().optional(),\n trackTitle: z.string().optional(),\n artist: z.string().optional(),\n }),\n z.object({\n kind: z.literal('generic'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('github-pr'),\n repoOwner: z.string(),\n repoName: z.string(),\n prNumber: z.number(),\n title: z.string(),\n url: z.string().optional(),\n language: z.string().optional(),\n additions: z.number(),\n deletions: z.number(),\n mergedAt: z.string().optional(),\n }),\n z.object({\n kind: z.literal('book'),\n title: z.string(),\n authors: z.array(z.string()),\n stars: z.number().optional(),\n status: z.string().optional(),\n review: z.string().optional(),\n }),\n z.object({\n kind: z.literal('media-review'),\n reviewKind: z.enum(['review', 'post', 'note', 'other']),\n title: z.string().optional(),\n mediaType: z.string().optional(),\n rating: z.number().optional(),\n mainCredit: z.string().optional(),\n reviewText: z.string().optional(),\n isRevisit: z.boolean(),\n }),\n z.object({\n kind: z.literal('event-rsvp'),\n rsvpStatus: z.enum(['going', 'interested', 'notgoing', 'unknown']),\n eventName: z.string().optional(),\n startsAt: z.string().optional(),\n endsAt: z.string().optional(),\n mode: z.enum(['inperson', 'virtual', 'hybrid']).optional(),\n locationName: z.string().optional(),\n locationLocality: z.string().optional(),\n locationCountry: z.string().optional(),\n }),\n z.object({\n kind: z.literal('verification'),\n platform: z.string(),\n verified: z.boolean(),\n subjectLabel: z.string().optional(),\n handle: z.string().optional(),\n profileUrl: z.string().optional(),\n }),\n z.object({\n kind: z.literal('membership'),\n communityName: z.string().optional(),\n description: z.string().optional(),\n communityUri: z.string().optional(),\n }),\n z.object({\n kind: z.literal('location'),\n venueName: z.string().optional(),\n shout: z.string().optional(),\n address: streamAddressSchema.optional(),\n geo: streamGeoSchema.optional(),\n }),\n z.object({\n kind: z.literal('travel'),\n origin: z.string().optional(),\n destination: z.string().optional(),\n transportation: z.string().optional(),\n carrier: z.string().optional(),\n carrierCode: z.string().optional(),\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n }),\n z.object({\n kind: z.literal('standard-site'),\n title: z.string().optional(),\n description: z.string().optional(),\n siteUrl: z.string().optional(),\n path: z.string().optional(),\n publisherName: z.string().optional(),\n icon: z.string().optional(),\n coverImageUrl: z.string().optional(),\n readingTime: z.number().optional(),\n publishedAt: z.string().optional(),\n }),\n]);\n\n/**\n * A stream item's repost / reply / quote target. The `post` variant nests a\n * full {@link streamCardVMSchema} (deferred via `z.lazy` for recursion).\n */\nexport const streamCardSubjectSchema: z.ZodType<StreamCardSubject> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('post'),\n post: z.lazy(() => streamCardVMSchema),\n }),\n z.object({\n kind: z.literal('person'),\n did: z.string(),\n handle: z.string().optional(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n }),\n z.object({\n kind: z.literal('record'),\n uri: z.string(),\n title: z.string().optional(),\n url: z.string().optional(),\n }),\n]);\n\n/** Hypercert credit roll + outbound links, hydrated by sifa-api. */\nconst hypercertDetailsSchema = z.object({\n contributors: z.array(\n z.object({\n displayName: z.string(),\n imageUrl: z.string().optional(),\n identifier: z.string().optional(),\n weight: z.number().optional(),\n }),\n ),\n contributorCount: z.number(),\n attachments: z.array(z.object({ title: z.string().optional(), url: z.string() })),\n});\n\n/** An account a Certified record points at. */\nconst certifiedActorSchema = z.object({\n did: z.string(),\n handle: z.string(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n});\n\n/** Certified badge + resolved accounts, hydrated by sifa-api. */\nconst certifiedDetailsSchema = z.object({\n badge: z\n .object({\n title: z.string(),\n description: z.string().optional(),\n icon: z.string().optional(),\n badgeType: z.string().optional(),\n })\n .optional(),\n recipient: certifiedActorSchema.optional(),\n issuer: certifiedActorSchema.optional(),\n group: certifiedActorSchema.optional(),\n role: z.string().optional(),\n});\n\n/** Zod schema for a {@link StreamCardVM}. Recursive through `subject.post`. */\nexport const streamCardVMSchema: z.ZodType<StreamCardVM> = z.lazy(() =>\n z.object({\n uri: z.string(),\n cid: z.string(),\n verb: streamVerbSchema,\n source: streamSourceSchema,\n author: streamAuthorSchema.optional(),\n tier: z.enum(['creation', 'action', 'filtered']),\n timestamp: z.string(),\n title: z.string(),\n sourceUrl: z.string().optional(),\n body: streamCardBodySchema.optional(),\n media: z.array(streamMediaSchema).optional(),\n externalLink: streamExternalLinkSchema.optional(),\n theme: streamThemeSchema.optional(),\n subject: z.lazy(() => streamCardSubjectSchema).optional(),\n hypercertDetails: hypercertDetailsSchema.optional(),\n certifiedDetails: certifiedDetailsSchema.optional(),\n }),\n);\n"],"mappings":"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","names":[]}
@@ -0,0 +1,8 @@
1
+ // src/stream/verb-schema.ts
2
+ import { z } from "zod";
3
+ import { STREAM_VERBS } from "./verbs.js";
4
+ var streamVerbSchema = z.enum(STREAM_VERBS);
5
+ export {
6
+ streamVerbSchema
7
+ };
8
+ //# sourceMappingURL=verb-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/stream/verb-schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { STREAM_VERBS } from './verbs.js';\n\n/**\n * Zod enum for a {@link StreamVerb}, shared with the view-model schema.\n *\n * Kept apart from `verbs.ts` so code that only maps collections to verbs does\n * not load zod.\n */\nexport const streamVerbSchema = z.enum(STREAM_VERBS);\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,SAAS,oBAAoB;AAQtB,IAAM,mBAAmB,EAAE,KAAK,YAAY;","names":[]}
@@ -1,6 +1,3 @@
1
- // src/stream/verbs.ts
2
- import { z } from "zod";
3
-
4
1
  // src/stream/verbs.json
5
2
  var verbs_default = {
6
3
  $schema: "https://sifa.id/schemas/activity-verbs/v1.json",
@@ -94,14 +91,12 @@ var STREAM_VERBS = [
94
91
  "received",
95
92
  "styledCharacter"
96
93
  ];
97
- var streamVerbSchema = z.enum(STREAM_VERBS);
98
- var verbMapSchema = z.object({
99
- version: z.string(),
100
- updated: z.string(),
101
- defaultVerb: streamVerbSchema,
102
- verbs: z.record(z.string(), streamVerbSchema)
103
- });
104
- var parsed = verbMapSchema.parse(verbs_default);
94
+ var parsed = {
95
+ version: verbs_default.version,
96
+ updated: verbs_default.updated,
97
+ defaultVerb: verbs_default.defaultVerb,
98
+ verbs: verbs_default.verbs
99
+ };
105
100
  var ACTIVITY_VERBS = Object.freeze(parsed);
106
101
  function verbForCollection(collection) {
107
102
  if (!collection) return ACTIVITY_VERBS.defaultVerb;
@@ -114,7 +109,6 @@ export {
114
109
  ACTIVITY_VERBS,
115
110
  STREAM_VERBS,
116
111
  getActivityVerbsVersion,
117
- streamVerbSchema,
118
112
  verbForCollection
119
113
  };
120
114
  //# sourceMappingURL=verbs.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/stream/verbs.ts","../../src/stream/verbs.json"],"sourcesContent":["import { z } from 'zod';\n\nimport rawVerbs from './verbs.json' with { type: 'json' };\n\n/**\n * The human action a stream item represents — a layer on top of `collection`\n * + `tier`. Groups semantically across apps (\"published\" spans WhiteWind and\n * standard-site; \"posted\" spans Bluesky and Picosky) so a day-grouped feed\n * reads like sentences.\n */\nexport const STREAM_VERBS = [\n 'posted',\n 'reposted',\n 'published',\n 'presented',\n 'endorsed',\n 'joined',\n 'shipped',\n 'reviewed',\n 'created',\n // Relational verbs: a reaction or reference to someone else's thing. These\n // read with the subject the two-tier line renders after them (\"Commented on\n // {doc}\", \"Followed {person}\").\n 'commented',\n 'replied',\n 'rsvped',\n 'liked',\n 'followed',\n 'bookmarked',\n 'registered',\n 'annotated',\n 'streamed',\n 'wrote',\n 'wasAt',\n 'metWith',\n 'supported',\n 'verified',\n // rpg.actor: accepting an equipment item, and (re)composing the character's\n // pixel-art sprite.\n 'received',\n 'styledCharacter',\n] as const;\n\nexport type StreamVerb = (typeof STREAM_VERBS)[number];\n\n/** Zod enum for a {@link StreamVerb}, shared with the view-model schema. */\nexport const streamVerbSchema = z.enum(STREAM_VERBS);\n\nexport interface ActivityVerbMap {\n version: string;\n updated: string;\n /** Verb returned for any collection not present in `verbs`. */\n defaultVerb: StreamVerb;\n /** Verb keyed by lexicon NSID. */\n verbs: Record<string, StreamVerb>;\n}\n\nconst verbMapSchema = z.object({\n version: z.string(),\n updated: z.string(),\n defaultVerb: streamVerbSchema,\n verbs: z.record(z.string(), streamVerbSchema),\n});\n\nconst parsed: ActivityVerbMap = verbMapSchema.parse(rawVerbs);\n\n/**\n * The verb map, keyed by lexicon NSID. Versioned independently from\n * `activity-tiers.json` so tier and verb evolve on their own cadence.\n */\nexport const ACTIVITY_VERBS: Readonly<ActivityVerbMap> = Object.freeze(parsed);\n\n/**\n * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown\n * or empty collections fall back to the map's `defaultVerb` (`created`).\n */\nexport function verbForCollection(collection: string): StreamVerb {\n if (!collection) return ACTIVITY_VERBS.defaultVerb;\n return ACTIVITY_VERBS.verbs[collection] ?? ACTIVITY_VERBS.defaultVerb;\n}\n\n/** Verb-map version + updated date, for diagnostics and version-skew checks. */\nexport function getActivityVerbsVersion(): { version: string; updated: string } {\n return { version: ACTIVITY_VERBS.version, updated: ACTIVITY_VERBS.updated };\n}\n","{\n \"$schema\": \"https://sifa.id/schemas/activity-verbs/v1.json\",\n \"version\": \"1.7.0\",\n \"updated\": \"2026-09-26\",\n \"defaultVerb\": \"created\",\n \"verbs\": {\n \"actor.rpg.sprite\": \"styledCharacter\",\n \"agency.portable.membership\": \"joined\",\n \"app.beaconbits.beacon\": \"wasAt\",\n \"app.atmobb.discussion.reply\": \"replied\",\n \"app.bsky.feed.post\": \"posted\",\n \"app.bsky.feed.repost\": \"reposted\",\n \"app.sidetrail.trail\": \"shipped\",\n \"app.sidetrail.walk\": \"shipped\",\n \"app.userinput.reply\": \"replied\",\n \"at.margin.annotation\": \"annotated\",\n \"at.margin.bookmark\": \"bookmarked\",\n \"at.margin.note\": \"annotated\",\n \"at.marque.domain\": \"registered\",\n \"at.youandme.connection\": \"metWith\",\n \"blog.pckt.mini.post\": \"wrote\",\n \"blue.flashes.feed.post\": \"posted\",\n \"buzz.bookhive.book\": \"reviewed\",\n \"com.whtwnd.blog.entry\": \"published\",\n \"community.lexicon.calendar.rsvp\": \"rsvped\",\n \"community.nooki.comments\": \"commented\",\n \"community.nooki.membership\": \"joined\",\n \"community.opensocial.membership\": \"joined\",\n \"computer.aetheros.page\": \"published\",\n \"dev.keytrace.claim\": \"verified\",\n \"equipment.rpg.item\": \"received\",\n \"eu.atcommons.member\": \"joined\",\n \"fm.plyr.comment\": \"commented\",\n \"forum.barazo.post\": \"posted\",\n \"fund.at.graph.endorse\": \"supported\",\n \"fyi.atstore.listing.review\": \"reviewed\",\n \"fyi.unravel.frontpage.post\": \"posted\",\n \"id.sifa.endorsement\": \"endorsed\",\n \"id.sifa.graph.connection\": \"joined\",\n \"id.sifa.profile.presentation\": \"presented\",\n \"id.sifa.profile.presentationDelivery\": \"presented\",\n \"link.pastesphere.snippet\": \"published\",\n \"org.impactindexer.review.comment\": \"commented\",\n \"pub.leaflet.comment\": \"commented\",\n \"sh.tangled.repo\": \"shipped\",\n \"sh.tangled.repo.issue\": \"shipped\",\n \"sh.tangled.repo.pull\": \"shipped\",\n \"site.standard.document\": \"published\",\n \"social.colibri.membership\": \"joined\",\n \"social.grain.gallery\": \"posted\",\n \"place.stream.livestream\": \"streamed\",\n \"social.kut.community.membership\": \"joined\",\n \"social.popfeed.feed.note\": \"posted\",\n \"social.popfeed.feed.post\": \"posted\",\n \"social.popfeed.feed.review\": \"reviewed\",\n \"social.psky.feed.post\": \"posted\"\n }\n}\n"],"mappings":";AAAA,SAAS,SAAS;;;ACAlB;AAAA,EACE,SAAW;AAAA,EACX,SAAW;AAAA,EACX,SAAW;AAAA,EACX,aAAe;AAAA,EACf,OAAS;AAAA,IACP,oBAAoB;AAAA,IACpB,8BAA8B;AAAA,IAC9B,yBAAyB;AAAA,IACzB,+BAA+B;AAAA,IAC/B,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,IACxB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IACvB,wBAAwB;AAAA,IACxB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,oBAAoB;AAAA,IACpB,0BAA0B;AAAA,IAC1B,uBAAuB;AAAA,IACvB,0BAA0B;AAAA,IAC1B,sBAAsB;AAAA,IACtB,yBAAyB;AAAA,IACzB,mCAAmC;AAAA,IACnC,4BAA4B;AAAA,IAC5B,8BAA8B;AAAA,IAC9B,mCAAmC;AAAA,IACnC,0BAA0B;AAAA,IAC1B,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,yBAAyB;AAAA,IACzB,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,IAC9B,uBAAuB;AAAA,IACvB,4BAA4B;AAAA,IAC5B,gCAAgC;AAAA,IAChC,wCAAwC;AAAA,IACxC,4BAA4B;AAAA,IAC5B,oCAAoC;AAAA,IACpC,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,IACnB,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,0BAA0B;AAAA,IAC1B,6BAA6B;AAAA,IAC7B,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,mCAAmC;AAAA,IACnC,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,IAC5B,8BAA8B;AAAA,IAC9B,yBAAyB;AAAA,EAC3B;AACF;;;AD/CO,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AACF;AAKO,IAAM,mBAAmB,EAAE,KAAK,YAAY;AAWnD,IAAM,gBAAgB,EAAE,OAAO;AAAA,EAC7B,SAAS,EAAE,OAAO;AAAA,EAClB,SAAS,EAAE,OAAO;AAAA,EAClB,aAAa;AAAA,EACb,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB;AAC9C,CAAC;AAED,IAAM,SAA0B,cAAc,MAAM,aAAQ;AAMrD,IAAM,iBAA4C,OAAO,OAAO,MAAM;AAMtE,SAAS,kBAAkB,YAAgC;AAChE,MAAI,CAAC,WAAY,QAAO,eAAe;AACvC,SAAO,eAAe,MAAM,UAAU,KAAK,eAAe;AAC5D;AAGO,SAAS,0BAAgE;AAC9E,SAAO,EAAE,SAAS,eAAe,SAAS,SAAS,eAAe,QAAQ;AAC5E;","names":[]}
1
+ {"version":3,"sources":["../../src/stream/verbs.json","../../src/stream/verbs.ts"],"sourcesContent":["{\n \"$schema\": \"https://sifa.id/schemas/activity-verbs/v1.json\",\n \"version\": \"1.7.0\",\n \"updated\": \"2026-09-26\",\n \"defaultVerb\": \"created\",\n \"verbs\": {\n \"actor.rpg.sprite\": \"styledCharacter\",\n \"agency.portable.membership\": \"joined\",\n \"app.beaconbits.beacon\": \"wasAt\",\n \"app.atmobb.discussion.reply\": \"replied\",\n \"app.bsky.feed.post\": \"posted\",\n \"app.bsky.feed.repost\": \"reposted\",\n \"app.sidetrail.trail\": \"shipped\",\n \"app.sidetrail.walk\": \"shipped\",\n \"app.userinput.reply\": \"replied\",\n \"at.margin.annotation\": \"annotated\",\n \"at.margin.bookmark\": \"bookmarked\",\n \"at.margin.note\": \"annotated\",\n \"at.marque.domain\": \"registered\",\n \"at.youandme.connection\": \"metWith\",\n \"blog.pckt.mini.post\": \"wrote\",\n \"blue.flashes.feed.post\": \"posted\",\n \"buzz.bookhive.book\": \"reviewed\",\n \"com.whtwnd.blog.entry\": \"published\",\n \"community.lexicon.calendar.rsvp\": \"rsvped\",\n \"community.nooki.comments\": \"commented\",\n \"community.nooki.membership\": \"joined\",\n \"community.opensocial.membership\": \"joined\",\n \"computer.aetheros.page\": \"published\",\n \"dev.keytrace.claim\": \"verified\",\n \"equipment.rpg.item\": \"received\",\n \"eu.atcommons.member\": \"joined\",\n \"fm.plyr.comment\": \"commented\",\n \"forum.barazo.post\": \"posted\",\n \"fund.at.graph.endorse\": \"supported\",\n \"fyi.atstore.listing.review\": \"reviewed\",\n \"fyi.unravel.frontpage.post\": \"posted\",\n \"id.sifa.endorsement\": \"endorsed\",\n \"id.sifa.graph.connection\": \"joined\",\n \"id.sifa.profile.presentation\": \"presented\",\n \"id.sifa.profile.presentationDelivery\": \"presented\",\n \"link.pastesphere.snippet\": \"published\",\n \"org.impactindexer.review.comment\": \"commented\",\n \"pub.leaflet.comment\": \"commented\",\n \"sh.tangled.repo\": \"shipped\",\n \"sh.tangled.repo.issue\": \"shipped\",\n \"sh.tangled.repo.pull\": \"shipped\",\n \"site.standard.document\": \"published\",\n \"social.colibri.membership\": \"joined\",\n \"social.grain.gallery\": \"posted\",\n \"place.stream.livestream\": \"streamed\",\n \"social.kut.community.membership\": \"joined\",\n \"social.popfeed.feed.note\": \"posted\",\n \"social.popfeed.feed.post\": \"posted\",\n \"social.popfeed.feed.review\": \"reviewed\",\n \"social.psky.feed.post\": \"posted\"\n }\n}\n","import rawVerbs from './verbs.json' with { type: 'json' };\n\n/**\n * The human action a stream item represents — a layer on top of `collection`\n * + `tier`. Groups semantically across apps (\"published\" spans WhiteWind and\n * standard-site; \"posted\" spans Bluesky and Picosky) so a day-grouped feed\n * reads like sentences.\n */\nexport const STREAM_VERBS = [\n 'posted',\n 'reposted',\n 'published',\n 'presented',\n 'endorsed',\n 'joined',\n 'shipped',\n 'reviewed',\n 'created',\n // Relational verbs: a reaction or reference to someone else's thing. These\n // read with the subject the two-tier line renders after them (\"Commented on\n // {doc}\", \"Followed {person}\").\n 'commented',\n 'replied',\n 'rsvped',\n 'liked',\n 'followed',\n 'bookmarked',\n 'registered',\n 'annotated',\n 'streamed',\n 'wrote',\n 'wasAt',\n 'metWith',\n 'supported',\n 'verified',\n // rpg.actor: accepting an equipment item, and (re)composing the character's\n // pixel-art sprite.\n 'received',\n 'styledCharacter',\n] as const;\n\nexport type StreamVerb = (typeof STREAM_VERBS)[number];\n\nexport interface ActivityVerbMap {\n version: string;\n updated: string;\n /** Verb returned for any collection not present in `verbs`. */\n defaultVerb: StreamVerb;\n /** Verb keyed by lexicon NSID. */\n verbs: Record<string, StreamVerb>;\n}\n\n// verbs.json is checked against this shape in verbs.test.ts. Only the map\n// fields are copied, so the file's `$schema` key stays out.\nconst parsed: ActivityVerbMap = {\n version: rawVerbs.version,\n updated: rawVerbs.updated,\n defaultVerb: rawVerbs.defaultVerb as StreamVerb,\n verbs: rawVerbs.verbs as Record<string, StreamVerb>,\n};\n\n/**\n * The verb map, keyed by lexicon NSID. Versioned independently from\n * `activity-tiers.json` so tier and verb evolve on their own cadence.\n */\nexport const ACTIVITY_VERBS: Readonly<ActivityVerbMap> = Object.freeze(parsed);\n\n/**\n * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown\n * or empty collections fall back to the map's `defaultVerb` (`created`).\n */\nexport function verbForCollection(collection: string): StreamVerb {\n if (!collection) return ACTIVITY_VERBS.defaultVerb;\n return ACTIVITY_VERBS.verbs[collection] ?? ACTIVITY_VERBS.defaultVerb;\n}\n\n/** Verb-map version + updated date, for diagnostics and version-skew checks. */\nexport function getActivityVerbsVersion(): { version: string; updated: string } {\n return { version: ACTIVITY_VERBS.version, updated: ACTIVITY_VERBS.updated };\n}\n"],"mappings":";AAAA;AAAA,EACE,SAAW;AAAA,EACX,SAAW;AAAA,EACX,SAAW;AAAA,EACX,aAAe;AAAA,EACf,OAAS;AAAA,IACP,oBAAoB;AAAA,IACpB,8BAA8B;AAAA,IAC9B,yBAAyB;AAAA,IACzB,+BAA+B;AAAA,IAC/B,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,IACxB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IACvB,wBAAwB;AAAA,IACxB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,oBAAoB;AAAA,IACpB,0BAA0B;AAAA,IAC1B,uBAAuB;AAAA,IACvB,0BAA0B;AAAA,IAC1B,sBAAsB;AAAA,IACtB,yBAAyB;AAAA,IACzB,mCAAmC;AAAA,IACnC,4BAA4B;AAAA,IAC5B,8BAA8B;AAAA,IAC9B,mCAAmC;AAAA,IACnC,0BAA0B;AAAA,IAC1B,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,yBAAyB;AAAA,IACzB,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,IAC9B,uBAAuB;AAAA,IACvB,4BAA4B;AAAA,IAC5B,gCAAgC;AAAA,IAChC,wCAAwC;AAAA,IACxC,4BAA4B;AAAA,IAC5B,oCAAoC;AAAA,IACpC,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,IACnB,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,0BAA0B;AAAA,IAC1B,6BAA6B;AAAA,IAC7B,wBAAwB;AAAA,IACxB,2BAA2B;AAAA,IAC3B,mCAAmC;AAAA,IACnC,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,IAC5B,8BAA8B;AAAA,IAC9B,yBAAyB;AAAA,EAC3B;AACF;;;ACjDO,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AACF;AAeA,IAAM,SAA0B;AAAA,EAC9B,SAAS,cAAS;AAAA,EAClB,SAAS,cAAS;AAAA,EAClB,aAAa,cAAS;AAAA,EACtB,OAAO,cAAS;AAClB;AAMO,IAAM,iBAA4C,OAAO,OAAO,MAAM;AAMtE,SAAS,kBAAkB,YAAgC;AAChE,MAAI,CAAC,WAAY,QAAO,eAAe;AACvC,SAAO,eAAe,MAAM,UAAU,KAAK,eAAe;AAC5D;AAGO,SAAS,0BAAgE;AAC9E,SAAO,EAAE,SAAS,eAAe,SAAS,SAAS,eAAe,QAAQ;AAC5E;","names":[]}
@@ -1,6 +1,3 @@
1
- // src/taxonomy/activity-tiers.ts
2
- import { z } from "zod";
3
-
4
1
  // src/taxonomy/activity-tiers.json
5
2
  var activity_tiers_default = {
6
3
  $schema: "https://sifa.id/schemas/activity-tiers/v1.json",
@@ -908,27 +905,12 @@ var activity_tiers_default = {
908
905
  };
909
906
 
910
907
  // src/taxonomy/activity-tiers.ts
911
- var tierMetaSchema = z.object({
912
- label: z.string().nullable(),
913
- description: z.string(),
914
- shownOnPublicProfile: z.boolean()
915
- });
916
- var lexiconEntrySchema = z.object({
917
- tier: z.enum(["creation", "action", "filtered"]),
918
- app: z.string().optional(),
919
- notes: z.string().optional()
920
- });
921
- var taxonomySchema = z.object({
922
- version: z.string(),
923
- updated: z.string(),
924
- tiers: z.object({
925
- creation: tierMetaSchema,
926
- action: tierMetaSchema,
927
- filtered: tierMetaSchema
928
- }),
929
- lexicons: z.record(z.string(), lexiconEntrySchema)
930
- });
931
- var parsed = taxonomySchema.parse(activity_tiers_default);
908
+ var parsed = {
909
+ version: activity_tiers_default.version,
910
+ updated: activity_tiers_default.updated,
911
+ tiers: activity_tiers_default.tiers,
912
+ lexicons: activity_tiers_default.lexicons
913
+ };
932
914
  var ACTIVITY_TIERS = Object.freeze(parsed);
933
915
  function getActivityTier(nsid) {
934
916
  if (!nsid) return "filtered";