@singi-labs/sifa-sdk 0.19.109 → 0.19.111
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/cards/app-url-patterns.js +37 -1
- package/dist/cards/app-url-patterns.js.map +1 -1
- package/dist/cards/resolve-card-url.js +15 -0
- package/dist/cards/resolve-card-url.js.map +1 -1
- package/dist/index.cjs +122 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -4
- package/dist/index.d.ts +12 -4
- package/dist/index.js +1 -1
- package/dist/{network-map-DsxrigjL.d.cts → network-map-BwM-Wvxt.d.cts} +9 -4
- package/dist/{network-map-DVzGiX2h.d.ts → network-map-CrkLq2Gz.d.ts} +9 -4
- package/dist/{profile-summary-0T0VS7Rz.d.ts → profile-summary-CwJymH9d.d.ts} +1 -1
- package/dist/{profile-summary-C5LlxPKK.d.cts → profile-summary-TkVxvll4.d.cts} +1 -1
- package/dist/query/fetchers/germ.js +3 -3
- package/dist/query/fetchers/germ.js.map +1 -1
- package/dist/query/fetchers/index.cjs +3 -3
- package/dist/query/fetchers/index.cjs.map +1 -1
- package/dist/query/fetchers/index.d.cts +5 -5
- package/dist/query/fetchers/index.d.ts +5 -5
- package/dist/query/hooks/index.d.cts +3 -3
- package/dist/query/hooks/index.d.ts +3 -3
- package/dist/query/index.cjs +3 -3
- package/dist/query/index.cjs.map +1 -1
- package/dist/query/index.d.cts +8 -8
- package/dist/query/index.d.ts +8 -8
- package/dist/stream/to-stream-card-vm.js +26 -0
- package/dist/stream/to-stream-card-vm.js.map +1 -1
- package/dist/stream/verbs.js +5 -3
- package/dist/stream/verbs.js.map +1 -1
- package/dist/taxonomy/activity-tiers.js +25 -0
- package/dist/taxonomy/activity-tiers.js.map +1 -1
- package/dist/taxonomy/app-categories.js +1 -0
- package/dist/taxonomy/app-categories.js.map +1 -1
- package/dist/taxonomy/app-category-map.js +12 -1
- package/dist/taxonomy/app-category-map.js.map +1 -1
- package/dist/{types-B0zZiWDH.d.ts → types-CQA_vO39.d.ts} +1 -1
- package/dist/{types-jE1ofoPI.d.cts → types-DMTHqi2m.d.cts} +1 -1
- package/dist/{use-user-settings-CCAw3_Q2.d.ts → use-user-settings-1zgi6qwl.d.ts} +2 -2
- package/dist/{use-user-settings-DjnTECGe.d.cts → use-user-settings-BmuAd8D4.d.cts} +2 -2
- package/dist/{user-settings-D_DjukR6.d.ts → user-settings-Btvrox4G.d.ts} +1 -1
- package/dist/{user-settings-C5sOgvhL.d.cts → user-settings-D4vdBf0A.d.cts} +1 -1
- package/package.json +1 -1
package/dist/stream/verbs.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/stream/verbs.json
|
|
2
2
|
var verbs_default = {
|
|
3
3
|
$schema: "https://sifa.id/schemas/activity-verbs/v1.json",
|
|
4
|
-
version: "1.
|
|
5
|
-
updated: "2026-
|
|
4
|
+
version: "1.8.0",
|
|
5
|
+
updated: "2026-10-20",
|
|
6
6
|
defaultVerb: "created",
|
|
7
7
|
verbs: {
|
|
8
8
|
"actor.rpg.sprite": "styledCharacter",
|
|
@@ -14,6 +14,7 @@ var verbs_default = {
|
|
|
14
14
|
"app.sidetrail.trail": "shipped",
|
|
15
15
|
"app.sidetrail.walk": "shipped",
|
|
16
16
|
"app.userinput.reply": "replied",
|
|
17
|
+
"at.isnot.review": "reviewed",
|
|
17
18
|
"at.margin.annotation": "annotated",
|
|
18
19
|
"at.margin.bookmark": "bookmarked",
|
|
19
20
|
"at.margin.note": "annotated",
|
|
@@ -54,7 +55,8 @@ var verbs_default = {
|
|
|
54
55
|
"social.popfeed.feed.note": "posted",
|
|
55
56
|
"social.popfeed.feed.post": "posted",
|
|
56
57
|
"social.popfeed.feed.review": "reviewed",
|
|
57
|
-
"social.psky.feed.post": "posted"
|
|
58
|
+
"social.psky.feed.post": "posted",
|
|
59
|
+
"space.atbb.post": "posted"
|
|
58
60
|
}
|
|
59
61
|
};
|
|
60
62
|
|
package/dist/stream/verbs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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.
|
|
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.8.0\",\n \"updated\": \"2026-10-20\",\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.isnot.review\": \"reviewed\",\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 \"space.atbb.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,mBAAmB;AAAA,IACnB,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,IACzB,mBAAmB;AAAA,EACrB;AACF;;;ACnDO,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":[]}
|
|
@@ -930,6 +930,31 @@ var activity_tiers_default = {
|
|
|
930
930
|
tier: "creation",
|
|
931
931
|
app: "skymap",
|
|
932
932
|
notes: "An authored map with inline point features (title, description, tags)."
|
|
933
|
+
},
|
|
934
|
+
"space.opendeck.deck": {
|
|
935
|
+
tier: "creation",
|
|
936
|
+
app: "opendeck",
|
|
937
|
+
notes: "An authored language-flashcard deck (title, summary, source and target language)."
|
|
938
|
+
},
|
|
939
|
+
"com.chive.recipe": {
|
|
940
|
+
tier: "creation",
|
|
941
|
+
app: "chiverecipes",
|
|
942
|
+
notes: "An authored recipe with ingredients, steps, and an image."
|
|
943
|
+
},
|
|
944
|
+
"space.atbb.post": {
|
|
945
|
+
tier: "creation",
|
|
946
|
+
app: "atbb",
|
|
947
|
+
notes: "A forum post or reply on an atBB forum."
|
|
948
|
+
},
|
|
949
|
+
"org.passingreads.book.note": {
|
|
950
|
+
tier: "creation",
|
|
951
|
+
app: "passingreads",
|
|
952
|
+
notes: "A free-text note on a registered physical book that is passed on."
|
|
953
|
+
},
|
|
954
|
+
"at.isnot.review": {
|
|
955
|
+
tier: "creation",
|
|
956
|
+
app: "isnot",
|
|
957
|
+
notes: "A micro-review of a subject (e.g. a game) as weighted is / is-not adjectives."
|
|
933
958
|
}
|
|
934
959
|
}
|
|
935
960
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/taxonomy/activity-tiers.json","../../src/taxonomy/activity-tiers.ts"],"sourcesContent":["{\n \"$schema\": \"https://sifa.id/schemas/activity-tiers/v1.json\",\n \"version\": \"1.4.0\",\n \"updated\": \"2026-09-04\",\n \"tiers\": {\n \"creation\": {\n \"label\": \"Made\",\n \"description\": \"Substantive records the actor authored: posts, articles, repos, galleries, livestreams, RSVPs, CV entries. Surfaced on the public profile and in the network timeline.\",\n \"shownOnPublicProfile\": true\n },\n \"action\": {\n \"label\": \"Did\",\n \"description\": \"Engagement records (likes, reposts, follows, votes, stars, reactions). Visible to the actor on the 'What is public about me' page and on the originating app, but not surfaced on the Sifa public profile.\",\n \"shownOnPublicProfile\": false\n },\n \"filtered\": {\n \"label\": null,\n \"description\": \"Configuration, infrastructure, moderation, game state, ephemeral consumption signals (bookmarks, highlights), and other records Sifa does not display anywhere. The records remain public on the actor's PDS regardless.\",\n \"shownOnPublicProfile\": false\n }\n },\n \"lexicons\": {\n \"actor.rpg.sprite\": {\n \"tier\": \"creation\",\n \"app\": \"rpgactor\",\n \"notes\": \"The player's pixel-art RPG character sprite sheet (rkey self), portable across games.\"\n },\n \"equipment.rpg.item\": {\n \"tier\": \"creation\",\n \"app\": \"rpgactor\",\n \"notes\": \"An equipment item the player accepted from a provider, in the player's own repo. The provider-side equipment.rpg.give stays filtered.\"\n },\n \"agency.portable.membership\": {\n \"tier\": \"creation\",\n \"app\": \"portable\",\n \"notes\": \"Joining a community (a commitment), attested by another actor.\"\n },\n \"in.atmob.paste.document\": {\n \"tier\": \"creation\",\n \"app\": \"atmob\"\n },\n \"in.atmob.paste.bundle\": {\n \"tier\": \"creation\",\n \"app\": \"atmob\"\n },\n \"ma.tokono.byov.video\": {\n \"tier\": \"creation\",\n \"app\": \"tokono\"\n },\n \"app.atmobb.discussion.reply\": {\n \"tier\": \"creation\",\n \"app\": \"atmobb\",\n \"notes\": \"Replies are authored text, consistent with app.bsky.feed.post covering replies.\"\n },\n \"app.atmobb.discussion.thread\": {\n \"tier\": \"creation\",\n \"app\": \"atmobb\"\n },\n \"app.beaconbits.beacon\": {\n \"tier\": \"creation\",\n \"app\": \"beaconbits\"\n },\n \"app.bsky.actor.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Profile metadata record.\"\n },\n \"app.bsky.feed.generator\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Feed generator definition record, not personal activity.\"\n },\n \"app.bsky.feed.like\": {\n \"tier\": \"action\",\n \"app\": \"bluesky\"\n },\n \"app.bsky.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"bluesky\",\n \"notes\": \"Ambiguous: many posts are casual, but the lexicon also carries long-form posts and threads. Treated as creation; empty quote-posts (no text + record embed) are filtered at the consumer layer, not here.\"\n },\n \"app.bsky.feed.repost\": {\n \"tier\": \"action\",\n \"app\": \"bluesky\"\n },\n \"app.bsky.graph.block\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Moderation record.\"\n },\n \"app.bsky.graph.follow\": {\n \"tier\": \"action\",\n \"app\": \"bluesky\"\n },\n \"app.bsky.graph.list\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"User-curated list metadata; not surfaced as profile activity.\"\n },\n \"app.bsky.graph.listblock\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Moderation record.\"\n },\n \"app.bsky.graph.listitem\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"List membership; rendered via the parent list, not as standalone activity.\"\n },\n \"app.bsky.graph.mute\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Moderation record.\"\n },\n \"app.bsky.graph.starterpack\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\"\n },\n \"app.bsky.graph.verification\": {\n \"tier\": \"creation\",\n \"app\": \"bluesky\",\n \"notes\": \"Diverges from app.bsky.graph.follow (action) on purpose: verifying another account's handle is a deliberate trust statement the actor authors, not a tap. Sifa renders it with its own card.\"\n },\n \"app.certified.actor.membership\": {\n \"tier\": \"creation\",\n \"app\": \"certified\",\n \"notes\": \"Joining a group is a commitment, same shape as a Colibri or Open Social membership.\"\n },\n \"app.certified.badge.award\": {\n \"tier\": \"creation\",\n \"app\": \"certified\",\n \"notes\": \"An endorsement issued to another DID. A trust signal the actor contributes, like a Bluesky verification.\"\n },\n \"app.certified.badge.response\": {\n \"tier\": \"creation\",\n \"app\": \"certified\",\n \"notes\": \"The recipient's acceptance of a badge someone else awarded them. An accepted badge is a credential the person holds; rejected ones are hidden by an ACTIVITY_VISIBILITY_RULES predicate.\"\n },\n \"app.collectivesocial.feed.list\": {\n \"tier\": \"creation\",\n \"app\": \"collectivesocial\",\n \"notes\": \"Auto-created default Inbox lists are filtered at the consumer layer via isDefault=true predicate.\"\n },\n \"app.dropanchor.checkin\": {\n \"tier\": \"creation\",\n \"app\": \"dropanchor\",\n \"notes\": \"A location check-in (place, geo, category, optional review text). Authored, so creation. app.dropanchor.like is excluded backend-side.\"\n },\n \"app.askeverything.feed.answer\": {\n \"tier\": \"creation\",\n \"app\": \"askeverything\",\n \"notes\": \"An authored answer to a community question (opinion with body text). app.askeverything.actor.* and graph.follow are excluded backend-side.\"\n },\n \"app.greengale.blog.entry\": {\n \"tier\": \"creation\",\n \"app\": \"greengale\",\n \"notes\": \"An authored blog post (title, subtitle, Markdown body, visibility). app.greengale.document and app.greengale.publication (drafts/containers) are excluded backend-side.\"\n },\n \"social.kut.community.membership\": {\n \"tier\": \"creation\",\n \"app\": \"kut\",\n \"notes\": \"Joining a Kut community, a commitment. Mirrors Colibri/OpenSocial memberships, which are creation-tier.\"\n },\n \"app.mcp.server\": {\n \"tier\": \"creation\",\n \"app\": \"mcp\"\n },\n \"app.photosky.collection\": {\n \"tier\": \"creation\",\n \"app\": \"zeens\",\n \"notes\": \"A curated photo collection on Zeens (still the app.photosky namespace).\"\n },\n \"app.sidetrail.trail\": {\n \"tier\": \"creation\",\n \"app\": \"semble\"\n },\n \"app.sidetrail.walk\": {\n \"tier\": \"creation\",\n \"app\": \"semble\"\n },\n \"app.userinput.discussion\": {\n \"tier\": \"creation\",\n \"app\": \"userinput\"\n },\n \"app.userinput.reply\": {\n \"tier\": \"creation\",\n \"app\": \"userinput\",\n \"notes\": \"Replies are authored text, consistent with app.bsky.feed.post covering replies.\"\n },\n \"at.locale.project\": {\n \"tier\": \"creation\",\n \"app\": \"locale\",\n \"notes\": \"A localization project the actor owns: git source, source and target locales.\"\n },\n \"at.locale.translation\": {\n \"tier\": \"creation\",\n \"app\": \"locale\",\n \"notes\": \"One authored translated string for a message key in a target locale.\"\n },\n \"at.margin.annotation\": {\n \"tier\": \"creation\",\n \"app\": \"margin\",\n \"notes\": \"An annotation on someone else's text is still authored writing.\"\n },\n \"at.margin.bookmark\": {\n \"tier\": \"filtered\",\n \"notes\": \"Bookmark \\u2014 consumption signal, not creation.\",\n \"app\": \"margin\"\n },\n \"at.margin.highlight\": {\n \"tier\": \"filtered\",\n \"notes\": \"Highlight \\u2014 consumption signal, not creation.\",\n \"app\": \"margin\"\n },\n \"at.margin.note\": {\n \"tier\": \"creation\",\n \"app\": \"margin\"\n },\n \"at.marque.domain\": {\n \"tier\": \"creation\",\n \"app\": \"marque\"\n },\n \"at.youandme.connection\": {\n \"tier\": \"creation\",\n \"app\": \"youandme\"\n },\n \"blog.pckt.mini.post\": {\n \"tier\": \"creation\",\n \"app\": \"pckt\",\n \"notes\": \"A pckt microblog post. Long-form pckt posts are site.standard.document instead.\"\n },\n \"blue.flashes.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"flashes\"\n },\n \"blue.linkat.board\": {\n \"tier\": \"filtered\",\n \"notes\": \"Link-in-bio board; consumption signal.\",\n \"app\": \"linkat\"\n },\n \"buzz.bookhive.book\": {\n \"tier\": \"creation\",\n \"app\": \"bookhive\"\n },\n \"com.minomobi.music.composition\": {\n \"tier\": \"creation\",\n \"app\": \"minomobi\"\n },\n \"com.shinolabs.pinksea.oekaki\": {\n \"tier\": \"creation\",\n \"app\": \"pinksea\",\n \"notes\": \"A drawing made in PinkSea's canvas, stored as an image blob with alt text and tags.\"\n },\n \"com.voxport.podcast.series\": {\n \"tier\": \"creation\",\n \"app\": \"voxport\"\n },\n \"com.whtwnd.blog.entry\": {\n \"tier\": \"creation\",\n \"app\": \"whitewind\"\n },\n \"community.lexicon.badge.award\": {\n \"tier\": \"creation\",\n \"app\": \"badges\",\n \"notes\": \"The award record is authored by the giver, so it is their attestation about someone else.\"\n },\n \"community.lexicon.bookmarks.bookmark\": {\n \"tier\": \"filtered\",\n \"notes\": \"Bookmark \\u2014 consumption signal.\",\n \"app\": \"kipclip\"\n },\n \"community.lexicon.calendar.rsvp\": {\n \"tier\": \"creation\",\n \"app\": \"smokesignal\",\n \"notes\": \"Ambiguous: RSVPs are reactions to events, but they are public commitments and the only Smoke Signal record Sifa scans today. Classified as creation.\"\n },\n \"community.nooki.comments\": {\n \"tier\": \"creation\",\n \"app\": \"nooki\",\n \"notes\": \"Comments are authored text.\"\n },\n \"community.nooki.membership\": {\n \"tier\": \"creation\",\n \"app\": \"nooki\",\n \"notes\": \"Joining a community, classified like social.colibri.membership (creation).\"\n },\n \"community.opensocial.membership\": {\n \"tier\": \"creation\",\n \"app\": \"opensocial\",\n \"notes\": \"Joining a community, classified like social.colibri.membership (creation).\"\n },\n \"computer.aetheros.page\": {\n \"tier\": \"creation\",\n \"app\": \"aetheros\"\n },\n \"dev.atvouch.graph.vouch\": {\n \"tier\": \"creation\",\n \"app\": \"atvouch\",\n \"notes\": \"Vouching for someone. Authored attestation, same reasoning as fund.at.graph.endorse.\"\n },\n \"dev.baileytownsend.guestbook.entry\": {\n \"tier\": \"creation\",\n \"app\": \"guestbook\",\n \"notes\": \"Signing someone else's guestbook is a short authored message.\"\n },\n \"dev.keytrace.claim\": {\n \"tier\": \"creation\",\n \"app\": \"keytrace\"\n },\n \"dev.skyboard.board\": {\n \"tier\": \"filtered\",\n \"notes\": \"Skyboard task-board metadata.\",\n \"app\": \"skyboard\"\n },\n \"dev.skyboard.op\": {\n \"tier\": \"filtered\",\n \"notes\": \"Skyboard operation log.\",\n \"app\": \"skyboard\"\n },\n \"dev.skyboard.task\": {\n \"tier\": \"filtered\",\n \"notes\": \"Skyboard task record.\",\n \"app\": \"skyboard\"\n },\n \"eu.atcommons.member\": {\n \"tier\": \"creation\",\n \"app\": \"atcommons\",\n \"notes\": \"Joining a national AT Protocol community commons, classified like community.opensocial.membership (creation).\"\n },\n \"events.smokesignal.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"smokesignal\",\n \"notes\": \"Profile metadata record.\"\n },\n \"exchange.recipe.recipe\": {\n \"tier\": \"creation\",\n \"app\": \"recipe\"\n },\n \"fm.plyr.comment\": {\n \"tier\": \"creation\",\n \"app\": \"plyr\",\n \"notes\": \"Comments are authored text.\"\n },\n \"forum.barazo.community.member\": {\n \"tier\": \"creation\",\n \"app\": \"barazo\"\n },\n \"forum.barazo.flag\": {\n \"tier\": \"filtered\",\n \"app\": \"barazo\",\n \"notes\": \"Moderation flag.\"\n },\n \"forum.barazo.post\": {\n \"tier\": \"creation\",\n \"app\": \"barazo\"\n },\n \"forum.barazo.reaction\": {\n \"tier\": \"action\",\n \"app\": \"barazo\"\n },\n \"forum.barazo.reply\": {\n \"tier\": \"action\",\n \"app\": \"barazo\",\n \"notes\": \"Short conversational reply \\u2014 engagement signal.\"\n },\n \"forum.barazo.reputation.event\": {\n \"tier\": \"creation\",\n \"app\": \"barazo\"\n },\n \"fund.at.graph.endorse\": {\n \"tier\": \"creation\",\n \"app\": \"atfund\",\n \"notes\": \"Endorsing someone. Authored attestation, not engagement.\"\n },\n \"fyi.asq.answer\": {\n \"tier\": \"creation\",\n \"app\": \"asq\"\n },\n \"fyi.asq.question\": {\n \"tier\": \"creation\",\n \"app\": \"asq\"\n },\n \"fyi.atstore.listing.review\": {\n \"tier\": \"creation\",\n \"app\": \"atstore\"\n },\n \"fyi.unravel.frontpage.post\": {\n \"tier\": \"creation\",\n \"app\": \"frontpage\"\n },\n \"fyi.unravel.frontpage.vote\": {\n \"tier\": \"action\",\n \"app\": \"frontpage\"\n },\n \"id.sifa.authConnection\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth scope record.\"\n },\n \"id.sifa.authMeet\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth scope record.\"\n },\n \"id.sifa.authProfile\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth scope record.\"\n },\n \"id.sifa.authProfileAccess\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth profile-access record.\"\n },\n \"id.sifa.authProject\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth scope record.\"\n },\n \"id.sifa.confirmation\": {\n \"tier\": \"action\",\n \"app\": \"sifa\",\n \"notes\": \"Confirmation that a record naming the actor is accurate (co-speaker credit, project membership).\"\n },\n \"id.sifa.endorsement\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Endorsement authored by the actor about another profile.\"\n },\n \"id.sifa.endorsement.confirmation\": {\n \"tier\": \"action\",\n \"app\": \"sifa\",\n \"notes\": \"Confirmation/acceptance of an endorsement received.\"\n },\n \"id.sifa.graph.connection\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Mutual professional connection record.\"\n },\n \"id.sifa.graph.follow\": {\n \"tier\": \"action\",\n \"app\": \"sifa\"\n },\n \"id.sifa.meeting\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.certification\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.course\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.education\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.externalAccount\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.honor\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.language\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.location\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.position\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.presentation\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.presentationDelivery\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.project\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.publication\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.self\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Sifa professional profile root.\"\n },\n \"id.sifa.profile.skill\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.volunteering\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.project.member\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Deprecated, never implemented. Superseded by id.sifa.confirmation.\"\n },\n \"id.sifa.project.membership\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Deprecated, never implemented. Superseded by id.sifa.confirmation.\"\n },\n \"id.sifa.project.self\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"io.atcr.repo.page\": {\n \"tier\": \"creation\",\n \"app\": \"atcr\"\n },\n \"io.calabro.watsm.program\": {\n \"tier\": \"creation\",\n \"app\": \"watsm\"\n },\n \"io.kich.recipe.recipe\": {\n \"tier\": \"creation\",\n \"app\": \"kich\"\n },\n \"is.kevara.directory.speaker\": {\n \"tier\": \"creation\",\n \"app\": \"kevara\"\n },\n \"li.plonk.paste\": {\n \"tier\": \"creation\",\n \"app\": \"plonk\"\n },\n \"link.pastesphere.snippet\": {\n \"tier\": \"creation\",\n \"app\": \"pastesphere\"\n },\n \"net.alternativeproto.submission\": {\n \"tier\": \"creation\",\n \"app\": \"alternativeproto\"\n },\n \"net.alternativeproto.vote\": {\n \"tier\": \"action\",\n \"notes\": \"Vote record on a third-party protocol.\",\n \"app\": \"alternativeproto\"\n },\n \"net.anisota.feed.list\": {\n \"tier\": \"creation\",\n \"app\": \"anisota\"\n },\n \"net.anisota.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"anisota\"\n },\n \"net.anisota.player.state\": {\n \"tier\": \"filtered\",\n \"notes\": \"Anisota game player state.\",\n \"app\": \"anisota\"\n },\n \"network.cosmik.card\": {\n \"tier\": \"filtered\",\n \"notes\": \"Link-in-bio card; consumption signal.\",\n \"app\": \"cosmik\"\n },\n \"network.cosmik.collection\": {\n \"tier\": \"filtered\",\n \"notes\": \"Stale registry id \\u2014 Cosmik formerly in app registry.\",\n \"app\": \"cosmik\"\n },\n \"network.cosmik.collectionLink\": {\n \"tier\": \"filtered\",\n \"app\": \"cosmik\"\n },\n \"network.cosmik.connection\": {\n \"tier\": \"filtered\",\n \"app\": \"cosmik\"\n },\n \"network.cosmik.follow\": {\n \"tier\": \"filtered\",\n \"app\": \"cosmik\"\n },\n \"one.papili.post\": {\n \"tier\": \"creation\",\n \"app\": \"papili\"\n },\n \"org.hypercerts.claim.activity\": {\n \"tier\": \"creation\",\n \"app\": \"hypercerts\",\n \"notes\": \"A hypercert: an authored claim of work done, with title, description, and weighted contributors.\"\n },\n \"org.hypercerts.claim.collection\": {\n \"tier\": \"creation\",\n \"app\": \"hypercerts\",\n \"notes\": \"Older shape of the project container that groups claims. Superseded by org.hypercerts.collection.\"\n },\n \"org.hypercerts.claim.evaluation\": {\n \"tier\": \"creation\",\n \"app\": \"hypercerts\",\n \"notes\": \"An assessment of a claim carrying a score and a written summary. An opinion with a body.\"\n },\n \"org.hypercerts.collection\": {\n \"tier\": \"creation\",\n \"app\": \"hypercerts\",\n \"notes\": \"An authored project container grouping hypercert claims, with its own title, banner, and description.\"\n },\n \"org.impactindexer.review.comment\": {\n \"tier\": \"creation\",\n \"app\": \"impactindexer\",\n \"notes\": \"A written review of a hypercert claim, like a Popfeed or BookHive review.\"\n },\n \"org.v-it.skill\": {\n \"tier\": \"creation\",\n \"app\": \"vit\"\n },\n \"os.aether.docs.presentation\": {\n \"tier\": \"creation\",\n \"app\": \"aetherdocs\"\n },\n \"pics.pixl.image\": {\n \"tier\": \"creation\",\n \"app\": \"pixl\"\n },\n \"place.stream.broadcast.origin\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Broadcast origin/infrastructure record.\"\n },\n \"place.stream.chat.message\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Ephemeral chat message.\"\n },\n \"place.stream.chat.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Chat profile metadata.\"\n },\n \"place.stream.key\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Stream key \\u2014 sensitive infrastructure record.\"\n },\n \"place.stream.livestream\": {\n \"tier\": \"creation\",\n \"app\": \"streamplace\"\n },\n \"place.stream.metadata.configuration\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Stream configuration metadata.\"\n },\n \"pub.chive.eprint.submission\": {\n \"tier\": \"creation\",\n \"app\": \"chive\",\n \"notes\": \"An authored preprint: title, ordered authors with affiliations, abstract.\"\n },\n \"pub.leaflet.authFullPermissions\": {\n \"tier\": \"filtered\",\n \"app\": \"leaflet\",\n \"notes\": \"OAuth permission record.\"\n },\n \"pub.leaflet.comment\": {\n \"tier\": \"creation\",\n \"app\": \"leaflet\"\n },\n \"pub.leaflet.interactions.recommend\": {\n \"tier\": \"action\",\n \"app\": \"leaflet\"\n },\n \"quest.atmo.checkin\": {\n \"tier\": \"creation\",\n \"app\": \"atmorsvp\",\n \"notes\": \"Attendance, classified like community.lexicon.calendar.rsvp (creation) rather than as engagement. The creation tier description names RSVPs explicitly.\"\n },\n \"quest.atmo.event\": {\n \"tier\": \"creation\",\n \"app\": \"atmorsvp\"\n },\n \"sh.tangled.actor.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"tangled\",\n \"notes\": \"Profile metadata record.\"\n },\n \"sh.tangled.feed.star\": {\n \"tier\": \"action\",\n \"app\": \"tangled\"\n },\n \"sh.tangled.graph.follow\": {\n \"tier\": \"action\",\n \"app\": \"tangled\"\n },\n \"sh.tangled.repo\": {\n \"tier\": \"creation\",\n \"app\": \"tangled\"\n },\n \"sh.tangled.repo.issue\": {\n \"tier\": \"creation\",\n \"app\": \"tangled\"\n },\n \"sh.tangled.repo.pull\": {\n \"tier\": \"creation\",\n \"app\": \"tangled\"\n },\n \"site.standard.document\": {\n \"tier\": \"creation\",\n \"app\": \"standard\"\n },\n \"so.sprk.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"spark\"\n },\n \"so.sprk.story.post\": {\n \"tier\": \"creation\",\n \"app\": \"spark\"\n },\n \"social.colibri.actor.data\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Actor metadata.\"\n },\n \"social.colibri.approval\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Moderation approval record.\"\n },\n \"social.colibri.category\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Category metadata.\"\n },\n \"social.colibri.channel\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Channel definition.\"\n },\n \"social.colibri.channel.read\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Read-state marker.\"\n },\n \"social.colibri.community\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Community definition.\"\n },\n \"social.colibri.membership\": {\n \"tier\": \"creation\",\n \"app\": \"colibri\"\n },\n \"social.colibri.message\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Chat message \\u2014 high-volume conversational signal, not portfolio.\"\n },\n \"social.colibri.reaction\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Chat reaction.\"\n },\n \"social.colibri.richtext.facet\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Richtext facet sub-record.\"\n },\n \"social.crate.content\": {\n \"tier\": \"creation\",\n \"app\": \"crate\"\n },\n \"social.crate.note\": {\n \"tier\": \"creation\",\n \"app\": \"crate\"\n },\n \"social.grain.gallery\": {\n \"tier\": \"creation\",\n \"app\": \"grain\"\n },\n \"social.grain.gallery.item\": {\n \"tier\": \"filtered\",\n \"app\": \"grain\",\n \"notes\": \"Item-within-gallery; rendered via parent gallery.\"\n },\n \"social.grain.photo\": {\n \"tier\": \"filtered\",\n \"app\": \"grain\",\n \"notes\": \"Raw photo asset; surfaced via the gallery that references it.\"\n },\n \"social.grain.photo.exif\": {\n \"tier\": \"filtered\",\n \"app\": \"grain\",\n \"notes\": \"EXIF metadata for a photo.\"\n },\n \"social.grain.story\": {\n \"tier\": \"filtered\",\n \"app\": \"grain\",\n \"notes\": \"Ephemeral story format.\"\n },\n \"social.passports.fiftyStates.visit\": {\n \"tier\": \"creation\",\n \"app\": \"passports\"\n },\n \"social.passports.travel.leg\": {\n \"tier\": \"creation\",\n \"app\": \"passports\"\n },\n \"social.pinksky.app.preference\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Pinkleap (Bluesky client) app preferences.\"\n },\n \"social.popfeed.actor.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"popfeed\",\n \"notes\": \"Profile metadata record.\"\n },\n \"social.popfeed.challenge.participation\": {\n \"tier\": \"filtered\",\n \"app\": \"popfeed\",\n \"notes\": \"Challenge participation tracking.\"\n },\n \"social.popfeed.feed.like\": {\n \"tier\": \"action\",\n \"app\": \"popfeed\"\n },\n \"social.popfeed.feed.note\": {\n \"tier\": \"creation\",\n \"app\": \"popfeed\"\n },\n \"social.popfeed.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"popfeed\"\n },\n \"social.popfeed.feed.review\": {\n \"tier\": \"creation\",\n \"app\": \"popfeed\"\n },\n \"social.psky.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"picosky\"\n },\n \"space.roomy.space.personal\": {\n \"tier\": \"creation\",\n \"app\": \"roomy\"\n },\n \"st.lifepo.lifeEvent\": {\n \"tier\": \"creation\",\n \"app\": \"lifepo\"\n },\n \"stream.thought.blip\": {\n \"tier\": \"creation\",\n \"app\": \"streamthought\"\n },\n \"tech.waow.doodl.drawing\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.doodl.icon\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.doodl.iconset\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.doodl.logo\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.pollz.poll\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.slides.deck\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.slides.slide\": {\n \"tier\": \"creation\",\n \"app\": \"waow\",\n \"notes\": \"Individual slides are components of a deck. Both are kept; the consumer decides whether to collapse them.\"\n },\n \"wiki.lichen.note\": {\n \"tier\": \"creation\",\n \"app\": \"lichen\"\n },\n \"wiki.lichen.wiki\": {\n \"tier\": \"creation\",\n \"app\": \"lichen\"\n },\n \"xyz.statusphere.status\": {\n \"tier\": \"filtered\",\n \"notes\": \"Statusphere emoji status \\u2014 leisure signal.\",\n \"app\": \"statusphere\"\n },\n \"app.lexidraw.scene\": {\n \"tier\": \"creation\",\n \"app\": \"lexidraw\",\n \"notes\": \"A named whiteboard drawing, stored as a gzipped scene blob with a thumbnail.\"\n },\n \"fm.leadsheet.sheet\": {\n \"tier\": \"creation\",\n \"app\": \"leadsheet\",\n \"notes\": \"An authored chord sheet or tab (ChordPro) for a song.\"\n },\n \"at.brickster.creation\": {\n \"tier\": \"creation\",\n \"app\": \"brickster\",\n \"notes\": \"A 3D brick build saved from the Brickster editor.\"\n },\n \"supply.skillz.skill\": {\n \"tier\": \"creation\",\n \"app\": \"skillz\",\n \"notes\": \"An authored agent skill (SKILL.md body) published on skillz.supply.\"\n },\n \"place.birds.sighting\": {\n \"tier\": \"creation\",\n \"app\": \"birdsplace\",\n \"notes\": \"A logged bird sighting with species, count, photo, notes, and location.\"\n },\n \"blue.skymap.geo.map\": {\n \"tier\": \"creation\",\n \"app\": \"skymap\",\n \"notes\": \"An authored map with inline point features (title, description, tags).\"\n }\n }\n}\n","// This SDK is the source of truth for the activity taxonomy.\n//\n// It used to be synced from sifa-lexicons, but the taxonomy is editorial\n// rather than protocol: none of it is published to a PDS, and it governs how\n// Sifa renders records rather than what any record means. Keeping it in the\n// lexicon repo meant it lived where nobody edited it, and the two copies\n// drifted 60 entries apart before anything noticed.\n//\n// It is served publicly at https://sifa.id/.well-known/sifa-activity-tiers.json\n// so third-party clients and sibling AppViews can read Sifa's choices rather\n// than infer them.\nimport rawTaxonomy from './activity-tiers.json' with { type: 'json' };\n\nexport type ActivityTier = 'creation' | 'action' | 'filtered';\n\nexport interface TierMeta {\n label: string | null;\n description: string;\n shownOnPublicProfile: boolean;\n}\n\nexport interface LexiconEntry {\n tier: ActivityTier;\n app?: string;\n notes?: string;\n}\n\nexport interface ActivityTaxonomy {\n version: string;\n updated: string;\n tiers: Record<ActivityTier, TierMeta>;\n lexicons: Record<string, LexiconEntry>;\n}\n\n// activity-tiers.json is checked against this shape in activity-tiers.test.ts.\n// Only the taxonomy fields are copied, so the file's `$schema` key stays out.\nconst parsed: ActivityTaxonomy = {\n version: rawTaxonomy.version,\n updated: rawTaxonomy.updated,\n tiers: rawTaxonomy.tiers,\n lexicons: rawTaxonomy.lexicons as Record<string, LexiconEntry>,\n};\n\nexport const ACTIVITY_TIERS: Readonly<ActivityTaxonomy> = Object.freeze(parsed);\n\n/**\n * Returns the activity tier for a given AT Protocol NSID.\n * Returns 'filtered' for unknown/unclassified NSIDs (safe default — won't\n * leak unknown records to public profile surfaces).\n */\nexport function getActivityTier(nsid: string): ActivityTier {\n if (!nsid) return 'filtered';\n const entry = ACTIVITY_TIERS.lexicons[nsid];\n return entry ? entry.tier : 'filtered';\n}\n\n/**\n * Returns the full lexicon entry (tier + app + notes), or null if unknown.\n */\nexport function getLexiconEntry(nsid: string): LexiconEntry | null {\n if (!nsid) return null;\n const entry = ACTIVITY_TIERS.lexicons[nsid];\n return entry ?? null;\n}\n\n/**\n * Returns tier metadata (label, description, public visibility).\n */\nexport function getTierMeta(tier: ActivityTier): TierMeta {\n return ACTIVITY_TIERS.tiers[tier];\n}\n\n/**\n * Returns the taxonomy version + updated date for diagnostics and\n * version-skew detection between SDK consumers and the canonical taxonomy.\n */\nexport function getActivityTaxonomyVersion(): { version: string; updated: string } {\n return { version: ACTIVITY_TIERS.version, updated: ACTIVITY_TIERS.updated };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/taxonomy/activity-tiers.json","../../src/taxonomy/activity-tiers.ts"],"sourcesContent":["{\n \"$schema\": \"https://sifa.id/schemas/activity-tiers/v1.json\",\n \"version\": \"1.4.0\",\n \"updated\": \"2026-09-04\",\n \"tiers\": {\n \"creation\": {\n \"label\": \"Made\",\n \"description\": \"Substantive records the actor authored: posts, articles, repos, galleries, livestreams, RSVPs, CV entries. Surfaced on the public profile and in the network timeline.\",\n \"shownOnPublicProfile\": true\n },\n \"action\": {\n \"label\": \"Did\",\n \"description\": \"Engagement records (likes, reposts, follows, votes, stars, reactions). Visible to the actor on the 'What is public about me' page and on the originating app, but not surfaced on the Sifa public profile.\",\n \"shownOnPublicProfile\": false\n },\n \"filtered\": {\n \"label\": null,\n \"description\": \"Configuration, infrastructure, moderation, game state, ephemeral consumption signals (bookmarks, highlights), and other records Sifa does not display anywhere. The records remain public on the actor's PDS regardless.\",\n \"shownOnPublicProfile\": false\n }\n },\n \"lexicons\": {\n \"actor.rpg.sprite\": {\n \"tier\": \"creation\",\n \"app\": \"rpgactor\",\n \"notes\": \"The player's pixel-art RPG character sprite sheet (rkey self), portable across games.\"\n },\n \"equipment.rpg.item\": {\n \"tier\": \"creation\",\n \"app\": \"rpgactor\",\n \"notes\": \"An equipment item the player accepted from a provider, in the player's own repo. The provider-side equipment.rpg.give stays filtered.\"\n },\n \"agency.portable.membership\": {\n \"tier\": \"creation\",\n \"app\": \"portable\",\n \"notes\": \"Joining a community (a commitment), attested by another actor.\"\n },\n \"in.atmob.paste.document\": {\n \"tier\": \"creation\",\n \"app\": \"atmob\"\n },\n \"in.atmob.paste.bundle\": {\n \"tier\": \"creation\",\n \"app\": \"atmob\"\n },\n \"ma.tokono.byov.video\": {\n \"tier\": \"creation\",\n \"app\": \"tokono\"\n },\n \"app.atmobb.discussion.reply\": {\n \"tier\": \"creation\",\n \"app\": \"atmobb\",\n \"notes\": \"Replies are authored text, consistent with app.bsky.feed.post covering replies.\"\n },\n \"app.atmobb.discussion.thread\": {\n \"tier\": \"creation\",\n \"app\": \"atmobb\"\n },\n \"app.beaconbits.beacon\": {\n \"tier\": \"creation\",\n \"app\": \"beaconbits\"\n },\n \"app.bsky.actor.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Profile metadata record.\"\n },\n \"app.bsky.feed.generator\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Feed generator definition record, not personal activity.\"\n },\n \"app.bsky.feed.like\": {\n \"tier\": \"action\",\n \"app\": \"bluesky\"\n },\n \"app.bsky.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"bluesky\",\n \"notes\": \"Ambiguous: many posts are casual, but the lexicon also carries long-form posts and threads. Treated as creation; empty quote-posts (no text + record embed) are filtered at the consumer layer, not here.\"\n },\n \"app.bsky.feed.repost\": {\n \"tier\": \"action\",\n \"app\": \"bluesky\"\n },\n \"app.bsky.graph.block\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Moderation record.\"\n },\n \"app.bsky.graph.follow\": {\n \"tier\": \"action\",\n \"app\": \"bluesky\"\n },\n \"app.bsky.graph.list\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"User-curated list metadata; not surfaced as profile activity.\"\n },\n \"app.bsky.graph.listblock\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Moderation record.\"\n },\n \"app.bsky.graph.listitem\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"List membership; rendered via the parent list, not as standalone activity.\"\n },\n \"app.bsky.graph.mute\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Moderation record.\"\n },\n \"app.bsky.graph.starterpack\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\"\n },\n \"app.bsky.graph.verification\": {\n \"tier\": \"creation\",\n \"app\": \"bluesky\",\n \"notes\": \"Diverges from app.bsky.graph.follow (action) on purpose: verifying another account's handle is a deliberate trust statement the actor authors, not a tap. Sifa renders it with its own card.\"\n },\n \"app.certified.actor.membership\": {\n \"tier\": \"creation\",\n \"app\": \"certified\",\n \"notes\": \"Joining a group is a commitment, same shape as a Colibri or Open Social membership.\"\n },\n \"app.certified.badge.award\": {\n \"tier\": \"creation\",\n \"app\": \"certified\",\n \"notes\": \"An endorsement issued to another DID. A trust signal the actor contributes, like a Bluesky verification.\"\n },\n \"app.certified.badge.response\": {\n \"tier\": \"creation\",\n \"app\": \"certified\",\n \"notes\": \"The recipient's acceptance of a badge someone else awarded them. An accepted badge is a credential the person holds; rejected ones are hidden by an ACTIVITY_VISIBILITY_RULES predicate.\"\n },\n \"app.collectivesocial.feed.list\": {\n \"tier\": \"creation\",\n \"app\": \"collectivesocial\",\n \"notes\": \"Auto-created default Inbox lists are filtered at the consumer layer via isDefault=true predicate.\"\n },\n \"app.dropanchor.checkin\": {\n \"tier\": \"creation\",\n \"app\": \"dropanchor\",\n \"notes\": \"A location check-in (place, geo, category, optional review text). Authored, so creation. app.dropanchor.like is excluded backend-side.\"\n },\n \"app.askeverything.feed.answer\": {\n \"tier\": \"creation\",\n \"app\": \"askeverything\",\n \"notes\": \"An authored answer to a community question (opinion with body text). app.askeverything.actor.* and graph.follow are excluded backend-side.\"\n },\n \"app.greengale.blog.entry\": {\n \"tier\": \"creation\",\n \"app\": \"greengale\",\n \"notes\": \"An authored blog post (title, subtitle, Markdown body, visibility). app.greengale.document and app.greengale.publication (drafts/containers) are excluded backend-side.\"\n },\n \"social.kut.community.membership\": {\n \"tier\": \"creation\",\n \"app\": \"kut\",\n \"notes\": \"Joining a Kut community, a commitment. Mirrors Colibri/OpenSocial memberships, which are creation-tier.\"\n },\n \"app.mcp.server\": {\n \"tier\": \"creation\",\n \"app\": \"mcp\"\n },\n \"app.photosky.collection\": {\n \"tier\": \"creation\",\n \"app\": \"zeens\",\n \"notes\": \"A curated photo collection on Zeens (still the app.photosky namespace).\"\n },\n \"app.sidetrail.trail\": {\n \"tier\": \"creation\",\n \"app\": \"semble\"\n },\n \"app.sidetrail.walk\": {\n \"tier\": \"creation\",\n \"app\": \"semble\"\n },\n \"app.userinput.discussion\": {\n \"tier\": \"creation\",\n \"app\": \"userinput\"\n },\n \"app.userinput.reply\": {\n \"tier\": \"creation\",\n \"app\": \"userinput\",\n \"notes\": \"Replies are authored text, consistent with app.bsky.feed.post covering replies.\"\n },\n \"at.locale.project\": {\n \"tier\": \"creation\",\n \"app\": \"locale\",\n \"notes\": \"A localization project the actor owns: git source, source and target locales.\"\n },\n \"at.locale.translation\": {\n \"tier\": \"creation\",\n \"app\": \"locale\",\n \"notes\": \"One authored translated string for a message key in a target locale.\"\n },\n \"at.margin.annotation\": {\n \"tier\": \"creation\",\n \"app\": \"margin\",\n \"notes\": \"An annotation on someone else's text is still authored writing.\"\n },\n \"at.margin.bookmark\": {\n \"tier\": \"filtered\",\n \"notes\": \"Bookmark \\u2014 consumption signal, not creation.\",\n \"app\": \"margin\"\n },\n \"at.margin.highlight\": {\n \"tier\": \"filtered\",\n \"notes\": \"Highlight \\u2014 consumption signal, not creation.\",\n \"app\": \"margin\"\n },\n \"at.margin.note\": {\n \"tier\": \"creation\",\n \"app\": \"margin\"\n },\n \"at.marque.domain\": {\n \"tier\": \"creation\",\n \"app\": \"marque\"\n },\n \"at.youandme.connection\": {\n \"tier\": \"creation\",\n \"app\": \"youandme\"\n },\n \"blog.pckt.mini.post\": {\n \"tier\": \"creation\",\n \"app\": \"pckt\",\n \"notes\": \"A pckt microblog post. Long-form pckt posts are site.standard.document instead.\"\n },\n \"blue.flashes.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"flashes\"\n },\n \"blue.linkat.board\": {\n \"tier\": \"filtered\",\n \"notes\": \"Link-in-bio board; consumption signal.\",\n \"app\": \"linkat\"\n },\n \"buzz.bookhive.book\": {\n \"tier\": \"creation\",\n \"app\": \"bookhive\"\n },\n \"com.minomobi.music.composition\": {\n \"tier\": \"creation\",\n \"app\": \"minomobi\"\n },\n \"com.shinolabs.pinksea.oekaki\": {\n \"tier\": \"creation\",\n \"app\": \"pinksea\",\n \"notes\": \"A drawing made in PinkSea's canvas, stored as an image blob with alt text and tags.\"\n },\n \"com.voxport.podcast.series\": {\n \"tier\": \"creation\",\n \"app\": \"voxport\"\n },\n \"com.whtwnd.blog.entry\": {\n \"tier\": \"creation\",\n \"app\": \"whitewind\"\n },\n \"community.lexicon.badge.award\": {\n \"tier\": \"creation\",\n \"app\": \"badges\",\n \"notes\": \"The award record is authored by the giver, so it is their attestation about someone else.\"\n },\n \"community.lexicon.bookmarks.bookmark\": {\n \"tier\": \"filtered\",\n \"notes\": \"Bookmark \\u2014 consumption signal.\",\n \"app\": \"kipclip\"\n },\n \"community.lexicon.calendar.rsvp\": {\n \"tier\": \"creation\",\n \"app\": \"smokesignal\",\n \"notes\": \"Ambiguous: RSVPs are reactions to events, but they are public commitments and the only Smoke Signal record Sifa scans today. Classified as creation.\"\n },\n \"community.nooki.comments\": {\n \"tier\": \"creation\",\n \"app\": \"nooki\",\n \"notes\": \"Comments are authored text.\"\n },\n \"community.nooki.membership\": {\n \"tier\": \"creation\",\n \"app\": \"nooki\",\n \"notes\": \"Joining a community, classified like social.colibri.membership (creation).\"\n },\n \"community.opensocial.membership\": {\n \"tier\": \"creation\",\n \"app\": \"opensocial\",\n \"notes\": \"Joining a community, classified like social.colibri.membership (creation).\"\n },\n \"computer.aetheros.page\": {\n \"tier\": \"creation\",\n \"app\": \"aetheros\"\n },\n \"dev.atvouch.graph.vouch\": {\n \"tier\": \"creation\",\n \"app\": \"atvouch\",\n \"notes\": \"Vouching for someone. Authored attestation, same reasoning as fund.at.graph.endorse.\"\n },\n \"dev.baileytownsend.guestbook.entry\": {\n \"tier\": \"creation\",\n \"app\": \"guestbook\",\n \"notes\": \"Signing someone else's guestbook is a short authored message.\"\n },\n \"dev.keytrace.claim\": {\n \"tier\": \"creation\",\n \"app\": \"keytrace\"\n },\n \"dev.skyboard.board\": {\n \"tier\": \"filtered\",\n \"notes\": \"Skyboard task-board metadata.\",\n \"app\": \"skyboard\"\n },\n \"dev.skyboard.op\": {\n \"tier\": \"filtered\",\n \"notes\": \"Skyboard operation log.\",\n \"app\": \"skyboard\"\n },\n \"dev.skyboard.task\": {\n \"tier\": \"filtered\",\n \"notes\": \"Skyboard task record.\",\n \"app\": \"skyboard\"\n },\n \"eu.atcommons.member\": {\n \"tier\": \"creation\",\n \"app\": \"atcommons\",\n \"notes\": \"Joining a national AT Protocol community commons, classified like community.opensocial.membership (creation).\"\n },\n \"events.smokesignal.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"smokesignal\",\n \"notes\": \"Profile metadata record.\"\n },\n \"exchange.recipe.recipe\": {\n \"tier\": \"creation\",\n \"app\": \"recipe\"\n },\n \"fm.plyr.comment\": {\n \"tier\": \"creation\",\n \"app\": \"plyr\",\n \"notes\": \"Comments are authored text.\"\n },\n \"forum.barazo.community.member\": {\n \"tier\": \"creation\",\n \"app\": \"barazo\"\n },\n \"forum.barazo.flag\": {\n \"tier\": \"filtered\",\n \"app\": \"barazo\",\n \"notes\": \"Moderation flag.\"\n },\n \"forum.barazo.post\": {\n \"tier\": \"creation\",\n \"app\": \"barazo\"\n },\n \"forum.barazo.reaction\": {\n \"tier\": \"action\",\n \"app\": \"barazo\"\n },\n \"forum.barazo.reply\": {\n \"tier\": \"action\",\n \"app\": \"barazo\",\n \"notes\": \"Short conversational reply \\u2014 engagement signal.\"\n },\n \"forum.barazo.reputation.event\": {\n \"tier\": \"creation\",\n \"app\": \"barazo\"\n },\n \"fund.at.graph.endorse\": {\n \"tier\": \"creation\",\n \"app\": \"atfund\",\n \"notes\": \"Endorsing someone. Authored attestation, not engagement.\"\n },\n \"fyi.asq.answer\": {\n \"tier\": \"creation\",\n \"app\": \"asq\"\n },\n \"fyi.asq.question\": {\n \"tier\": \"creation\",\n \"app\": \"asq\"\n },\n \"fyi.atstore.listing.review\": {\n \"tier\": \"creation\",\n \"app\": \"atstore\"\n },\n \"fyi.unravel.frontpage.post\": {\n \"tier\": \"creation\",\n \"app\": \"frontpage\"\n },\n \"fyi.unravel.frontpage.vote\": {\n \"tier\": \"action\",\n \"app\": \"frontpage\"\n },\n \"id.sifa.authConnection\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth scope record.\"\n },\n \"id.sifa.authMeet\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth scope record.\"\n },\n \"id.sifa.authProfile\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth scope record.\"\n },\n \"id.sifa.authProfileAccess\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth profile-access record.\"\n },\n \"id.sifa.authProject\": {\n \"tier\": \"filtered\",\n \"app\": \"sifa\",\n \"notes\": \"OAuth scope record.\"\n },\n \"id.sifa.confirmation\": {\n \"tier\": \"action\",\n \"app\": \"sifa\",\n \"notes\": \"Confirmation that a record naming the actor is accurate (co-speaker credit, project membership).\"\n },\n \"id.sifa.endorsement\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Endorsement authored by the actor about another profile.\"\n },\n \"id.sifa.endorsement.confirmation\": {\n \"tier\": \"action\",\n \"app\": \"sifa\",\n \"notes\": \"Confirmation/acceptance of an endorsement received.\"\n },\n \"id.sifa.graph.connection\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Mutual professional connection record.\"\n },\n \"id.sifa.graph.follow\": {\n \"tier\": \"action\",\n \"app\": \"sifa\"\n },\n \"id.sifa.meeting\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.certification\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.course\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.education\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.externalAccount\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.honor\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.language\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.location\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.position\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.presentation\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.presentationDelivery\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.project\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.publication\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.self\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Sifa professional profile root.\"\n },\n \"id.sifa.profile.skill\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.profile.volunteering\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"id.sifa.project.member\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Deprecated, never implemented. Superseded by id.sifa.confirmation.\"\n },\n \"id.sifa.project.membership\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\",\n \"notes\": \"Deprecated, never implemented. Superseded by id.sifa.confirmation.\"\n },\n \"id.sifa.project.self\": {\n \"tier\": \"creation\",\n \"app\": \"sifa\"\n },\n \"io.atcr.repo.page\": {\n \"tier\": \"creation\",\n \"app\": \"atcr\"\n },\n \"io.calabro.watsm.program\": {\n \"tier\": \"creation\",\n \"app\": \"watsm\"\n },\n \"io.kich.recipe.recipe\": {\n \"tier\": \"creation\",\n \"app\": \"kich\"\n },\n \"is.kevara.directory.speaker\": {\n \"tier\": \"creation\",\n \"app\": \"kevara\"\n },\n \"li.plonk.paste\": {\n \"tier\": \"creation\",\n \"app\": \"plonk\"\n },\n \"link.pastesphere.snippet\": {\n \"tier\": \"creation\",\n \"app\": \"pastesphere\"\n },\n \"net.alternativeproto.submission\": {\n \"tier\": \"creation\",\n \"app\": \"alternativeproto\"\n },\n \"net.alternativeproto.vote\": {\n \"tier\": \"action\",\n \"notes\": \"Vote record on a third-party protocol.\",\n \"app\": \"alternativeproto\"\n },\n \"net.anisota.feed.list\": {\n \"tier\": \"creation\",\n \"app\": \"anisota\"\n },\n \"net.anisota.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"anisota\"\n },\n \"net.anisota.player.state\": {\n \"tier\": \"filtered\",\n \"notes\": \"Anisota game player state.\",\n \"app\": \"anisota\"\n },\n \"network.cosmik.card\": {\n \"tier\": \"filtered\",\n \"notes\": \"Link-in-bio card; consumption signal.\",\n \"app\": \"cosmik\"\n },\n \"network.cosmik.collection\": {\n \"tier\": \"filtered\",\n \"notes\": \"Stale registry id \\u2014 Cosmik formerly in app registry.\",\n \"app\": \"cosmik\"\n },\n \"network.cosmik.collectionLink\": {\n \"tier\": \"filtered\",\n \"app\": \"cosmik\"\n },\n \"network.cosmik.connection\": {\n \"tier\": \"filtered\",\n \"app\": \"cosmik\"\n },\n \"network.cosmik.follow\": {\n \"tier\": \"filtered\",\n \"app\": \"cosmik\"\n },\n \"one.papili.post\": {\n \"tier\": \"creation\",\n \"app\": \"papili\"\n },\n \"org.hypercerts.claim.activity\": {\n \"tier\": \"creation\",\n \"app\": \"hypercerts\",\n \"notes\": \"A hypercert: an authored claim of work done, with title, description, and weighted contributors.\"\n },\n \"org.hypercerts.claim.collection\": {\n \"tier\": \"creation\",\n \"app\": \"hypercerts\",\n \"notes\": \"Older shape of the project container that groups claims. Superseded by org.hypercerts.collection.\"\n },\n \"org.hypercerts.claim.evaluation\": {\n \"tier\": \"creation\",\n \"app\": \"hypercerts\",\n \"notes\": \"An assessment of a claim carrying a score and a written summary. An opinion with a body.\"\n },\n \"org.hypercerts.collection\": {\n \"tier\": \"creation\",\n \"app\": \"hypercerts\",\n \"notes\": \"An authored project container grouping hypercert claims, with its own title, banner, and description.\"\n },\n \"org.impactindexer.review.comment\": {\n \"tier\": \"creation\",\n \"app\": \"impactindexer\",\n \"notes\": \"A written review of a hypercert claim, like a Popfeed or BookHive review.\"\n },\n \"org.v-it.skill\": {\n \"tier\": \"creation\",\n \"app\": \"vit\"\n },\n \"os.aether.docs.presentation\": {\n \"tier\": \"creation\",\n \"app\": \"aetherdocs\"\n },\n \"pics.pixl.image\": {\n \"tier\": \"creation\",\n \"app\": \"pixl\"\n },\n \"place.stream.broadcast.origin\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Broadcast origin/infrastructure record.\"\n },\n \"place.stream.chat.message\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Ephemeral chat message.\"\n },\n \"place.stream.chat.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Chat profile metadata.\"\n },\n \"place.stream.key\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Stream key \\u2014 sensitive infrastructure record.\"\n },\n \"place.stream.livestream\": {\n \"tier\": \"creation\",\n \"app\": \"streamplace\"\n },\n \"place.stream.metadata.configuration\": {\n \"tier\": \"filtered\",\n \"app\": \"streamplace\",\n \"notes\": \"Stream configuration metadata.\"\n },\n \"pub.chive.eprint.submission\": {\n \"tier\": \"creation\",\n \"app\": \"chive\",\n \"notes\": \"An authored preprint: title, ordered authors with affiliations, abstract.\"\n },\n \"pub.leaflet.authFullPermissions\": {\n \"tier\": \"filtered\",\n \"app\": \"leaflet\",\n \"notes\": \"OAuth permission record.\"\n },\n \"pub.leaflet.comment\": {\n \"tier\": \"creation\",\n \"app\": \"leaflet\"\n },\n \"pub.leaflet.interactions.recommend\": {\n \"tier\": \"action\",\n \"app\": \"leaflet\"\n },\n \"quest.atmo.checkin\": {\n \"tier\": \"creation\",\n \"app\": \"atmorsvp\",\n \"notes\": \"Attendance, classified like community.lexicon.calendar.rsvp (creation) rather than as engagement. The creation tier description names RSVPs explicitly.\"\n },\n \"quest.atmo.event\": {\n \"tier\": \"creation\",\n \"app\": \"atmorsvp\"\n },\n \"sh.tangled.actor.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"tangled\",\n \"notes\": \"Profile metadata record.\"\n },\n \"sh.tangled.feed.star\": {\n \"tier\": \"action\",\n \"app\": \"tangled\"\n },\n \"sh.tangled.graph.follow\": {\n \"tier\": \"action\",\n \"app\": \"tangled\"\n },\n \"sh.tangled.repo\": {\n \"tier\": \"creation\",\n \"app\": \"tangled\"\n },\n \"sh.tangled.repo.issue\": {\n \"tier\": \"creation\",\n \"app\": \"tangled\"\n },\n \"sh.tangled.repo.pull\": {\n \"tier\": \"creation\",\n \"app\": \"tangled\"\n },\n \"site.standard.document\": {\n \"tier\": \"creation\",\n \"app\": \"standard\"\n },\n \"so.sprk.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"spark\"\n },\n \"so.sprk.story.post\": {\n \"tier\": \"creation\",\n \"app\": \"spark\"\n },\n \"social.colibri.actor.data\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Actor metadata.\"\n },\n \"social.colibri.approval\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Moderation approval record.\"\n },\n \"social.colibri.category\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Category metadata.\"\n },\n \"social.colibri.channel\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Channel definition.\"\n },\n \"social.colibri.channel.read\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Read-state marker.\"\n },\n \"social.colibri.community\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Community definition.\"\n },\n \"social.colibri.membership\": {\n \"tier\": \"creation\",\n \"app\": \"colibri\"\n },\n \"social.colibri.message\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Chat message \\u2014 high-volume conversational signal, not portfolio.\"\n },\n \"social.colibri.reaction\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Chat reaction.\"\n },\n \"social.colibri.richtext.facet\": {\n \"tier\": \"filtered\",\n \"app\": \"colibri\",\n \"notes\": \"Richtext facet sub-record.\"\n },\n \"social.crate.content\": {\n \"tier\": \"creation\",\n \"app\": \"crate\"\n },\n \"social.crate.note\": {\n \"tier\": \"creation\",\n \"app\": \"crate\"\n },\n \"social.grain.gallery\": {\n \"tier\": \"creation\",\n \"app\": \"grain\"\n },\n \"social.grain.gallery.item\": {\n \"tier\": \"filtered\",\n \"app\": \"grain\",\n \"notes\": \"Item-within-gallery; rendered via parent gallery.\"\n },\n \"social.grain.photo\": {\n \"tier\": \"filtered\",\n \"app\": \"grain\",\n \"notes\": \"Raw photo asset; surfaced via the gallery that references it.\"\n },\n \"social.grain.photo.exif\": {\n \"tier\": \"filtered\",\n \"app\": \"grain\",\n \"notes\": \"EXIF metadata for a photo.\"\n },\n \"social.grain.story\": {\n \"tier\": \"filtered\",\n \"app\": \"grain\",\n \"notes\": \"Ephemeral story format.\"\n },\n \"social.passports.fiftyStates.visit\": {\n \"tier\": \"creation\",\n \"app\": \"passports\"\n },\n \"social.passports.travel.leg\": {\n \"tier\": \"creation\",\n \"app\": \"passports\"\n },\n \"social.pinksky.app.preference\": {\n \"tier\": \"filtered\",\n \"app\": \"bluesky\",\n \"notes\": \"Pinkleap (Bluesky client) app preferences.\"\n },\n \"social.popfeed.actor.profile\": {\n \"tier\": \"filtered\",\n \"app\": \"popfeed\",\n \"notes\": \"Profile metadata record.\"\n },\n \"social.popfeed.challenge.participation\": {\n \"tier\": \"filtered\",\n \"app\": \"popfeed\",\n \"notes\": \"Challenge participation tracking.\"\n },\n \"social.popfeed.feed.like\": {\n \"tier\": \"action\",\n \"app\": \"popfeed\"\n },\n \"social.popfeed.feed.note\": {\n \"tier\": \"creation\",\n \"app\": \"popfeed\"\n },\n \"social.popfeed.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"popfeed\"\n },\n \"social.popfeed.feed.review\": {\n \"tier\": \"creation\",\n \"app\": \"popfeed\"\n },\n \"social.psky.feed.post\": {\n \"tier\": \"creation\",\n \"app\": \"picosky\"\n },\n \"space.roomy.space.personal\": {\n \"tier\": \"creation\",\n \"app\": \"roomy\"\n },\n \"st.lifepo.lifeEvent\": {\n \"tier\": \"creation\",\n \"app\": \"lifepo\"\n },\n \"stream.thought.blip\": {\n \"tier\": \"creation\",\n \"app\": \"streamthought\"\n },\n \"tech.waow.doodl.drawing\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.doodl.icon\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.doodl.iconset\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.doodl.logo\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.pollz.poll\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.slides.deck\": {\n \"tier\": \"creation\",\n \"app\": \"waow\"\n },\n \"tech.waow.slides.slide\": {\n \"tier\": \"creation\",\n \"app\": \"waow\",\n \"notes\": \"Individual slides are components of a deck. Both are kept; the consumer decides whether to collapse them.\"\n },\n \"wiki.lichen.note\": {\n \"tier\": \"creation\",\n \"app\": \"lichen\"\n },\n \"wiki.lichen.wiki\": {\n \"tier\": \"creation\",\n \"app\": \"lichen\"\n },\n \"xyz.statusphere.status\": {\n \"tier\": \"filtered\",\n \"notes\": \"Statusphere emoji status \\u2014 leisure signal.\",\n \"app\": \"statusphere\"\n },\n \"app.lexidraw.scene\": {\n \"tier\": \"creation\",\n \"app\": \"lexidraw\",\n \"notes\": \"A named whiteboard drawing, stored as a gzipped scene blob with a thumbnail.\"\n },\n \"fm.leadsheet.sheet\": {\n \"tier\": \"creation\",\n \"app\": \"leadsheet\",\n \"notes\": \"An authored chord sheet or tab (ChordPro) for a song.\"\n },\n \"at.brickster.creation\": {\n \"tier\": \"creation\",\n \"app\": \"brickster\",\n \"notes\": \"A 3D brick build saved from the Brickster editor.\"\n },\n \"supply.skillz.skill\": {\n \"tier\": \"creation\",\n \"app\": \"skillz\",\n \"notes\": \"An authored agent skill (SKILL.md body) published on skillz.supply.\"\n },\n \"place.birds.sighting\": {\n \"tier\": \"creation\",\n \"app\": \"birdsplace\",\n \"notes\": \"A logged bird sighting with species, count, photo, notes, and location.\"\n },\n \"blue.skymap.geo.map\": {\n \"tier\": \"creation\",\n \"app\": \"skymap\",\n \"notes\": \"An authored map with inline point features (title, description, tags).\"\n },\n \"space.opendeck.deck\": {\n \"tier\": \"creation\",\n \"app\": \"opendeck\",\n \"notes\": \"An authored language-flashcard deck (title, summary, source and target language).\"\n },\n \"com.chive.recipe\": {\n \"tier\": \"creation\",\n \"app\": \"chiverecipes\",\n \"notes\": \"An authored recipe with ingredients, steps, and an image.\"\n },\n \"space.atbb.post\": {\n \"tier\": \"creation\",\n \"app\": \"atbb\",\n \"notes\": \"A forum post or reply on an atBB forum.\"\n },\n \"org.passingreads.book.note\": {\n \"tier\": \"creation\",\n \"app\": \"passingreads\",\n \"notes\": \"A free-text note on a registered physical book that is passed on.\"\n },\n \"at.isnot.review\": {\n \"tier\": \"creation\",\n \"app\": \"isnot\",\n \"notes\": \"A micro-review of a subject (e.g. a game) as weighted is / is-not adjectives.\"\n }\n }\n}\n","// This SDK is the source of truth for the activity taxonomy.\n//\n// It used to be synced from sifa-lexicons, but the taxonomy is editorial\n// rather than protocol: none of it is published to a PDS, and it governs how\n// Sifa renders records rather than what any record means. Keeping it in the\n// lexicon repo meant it lived where nobody edited it, and the two copies\n// drifted 60 entries apart before anything noticed.\n//\n// It is served publicly at https://sifa.id/.well-known/sifa-activity-tiers.json\n// so third-party clients and sibling AppViews can read Sifa's choices rather\n// than infer them.\nimport rawTaxonomy from './activity-tiers.json' with { type: 'json' };\n\nexport type ActivityTier = 'creation' | 'action' | 'filtered';\n\nexport interface TierMeta {\n label: string | null;\n description: string;\n shownOnPublicProfile: boolean;\n}\n\nexport interface LexiconEntry {\n tier: ActivityTier;\n app?: string;\n notes?: string;\n}\n\nexport interface ActivityTaxonomy {\n version: string;\n updated: string;\n tiers: Record<ActivityTier, TierMeta>;\n lexicons: Record<string, LexiconEntry>;\n}\n\n// activity-tiers.json is checked against this shape in activity-tiers.test.ts.\n// Only the taxonomy fields are copied, so the file's `$schema` key stays out.\nconst parsed: ActivityTaxonomy = {\n version: rawTaxonomy.version,\n updated: rawTaxonomy.updated,\n tiers: rawTaxonomy.tiers,\n lexicons: rawTaxonomy.lexicons as Record<string, LexiconEntry>,\n};\n\nexport const ACTIVITY_TIERS: Readonly<ActivityTaxonomy> = Object.freeze(parsed);\n\n/**\n * Returns the activity tier for a given AT Protocol NSID.\n * Returns 'filtered' for unknown/unclassified NSIDs (safe default — won't\n * leak unknown records to public profile surfaces).\n */\nexport function getActivityTier(nsid: string): ActivityTier {\n if (!nsid) return 'filtered';\n const entry = ACTIVITY_TIERS.lexicons[nsid];\n return entry ? entry.tier : 'filtered';\n}\n\n/**\n * Returns the full lexicon entry (tier + app + notes), or null if unknown.\n */\nexport function getLexiconEntry(nsid: string): LexiconEntry | null {\n if (!nsid) return null;\n const entry = ACTIVITY_TIERS.lexicons[nsid];\n return entry ?? null;\n}\n\n/**\n * Returns tier metadata (label, description, public visibility).\n */\nexport function getTierMeta(tier: ActivityTier): TierMeta {\n return ACTIVITY_TIERS.tiers[tier];\n}\n\n/**\n * Returns the taxonomy version + updated date for diagnostics and\n * version-skew detection between SDK consumers and the canonical taxonomy.\n */\nexport function getActivityTaxonomyVersion(): { version: string; updated: string } {\n return { version: ACTIVITY_TIERS.version, updated: ACTIVITY_TIERS.updated };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -7,6 +7,7 @@ var APP_CATEGORIES = {
|
|
|
7
7
|
Domains: { phosphorIcon: "Globe" },
|
|
8
8
|
Endorsements: { phosphorIcon: "HandHeart" },
|
|
9
9
|
Events: { phosphorIcon: "CalendarBlank" },
|
|
10
|
+
Flashcards: { phosphorIcon: "Cards" },
|
|
10
11
|
Impact: { phosphorIcon: "Certificate" },
|
|
11
12
|
Links: { phosphorIcon: "LinkSimple" },
|
|
12
13
|
Lists: { phosphorIcon: "ListBullets" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/taxonomy/app-categories.ts"],"sourcesContent":["/**\n * App-category taxonomy for AT Protocol apps tracked by Sifa.\n *\n * Categories group apps by what kind of activity they produce (Posts, Photos,\n * Code, ...). They drive the pill-size icon shown in `<AppPill>` and the\n * fallback glyph used in activity-card headers when no app-specific logo\n * exists.\n *\n * This file is intentionally data-only -- icon mapping is renderer-specific\n * (React DOM Phosphor components on web, React Native components on mobile)\n * and lives in the consumer. The `phosphorIcon` field is the Phosphor icon\n * NAME, not a component reference.\n *\n * Categories are an internal grouping; we do not surface this taxonomy in\n * public-facing copy.\n */\n\nexport const APP_CATEGORIES = {\n Art: { phosphorIcon: 'PaintBrush' },\n Articles: { phosphorIcon: 'Article' },\n Chat: { phosphorIcon: 'ChatsCircle' },\n Code: { phosphorIcon: 'Code' },\n Domains: { phosphorIcon: 'Globe' },\n Endorsements: { phosphorIcon: 'HandHeart' },\n Events: { phosphorIcon: 'CalendarBlank' },\n Impact: { phosphorIcon: 'Certificate' },\n Links: { phosphorIcon: 'LinkSimple' },\n Lists: { phosphorIcon: 'ListBullets' },\n Music: { phosphorIcon: 'MusicNote' },\n Pages: { phosphorIcon: 'Browser' },\n Pastes: { phosphorIcon: 'Clipboard' },\n Photos: { phosphorIcon: 'Camera' },\n Places: { phosphorIcon: 'MapPin' },\n Posts: { phosphorIcon: 'ChatCircle' },\n 'Q&A': { phosphorIcon: 'Question' },\n Recipes: { phosphorIcon: 'CookingPot' },\n Research: { phosphorIcon: 'Path' },\n Reviews: { phosphorIcon: 'Star' },\n Slides: { phosphorIcon: 'Presentation' },\n Social: { phosphorIcon: 'UsersThree' },\n Translations: { phosphorIcon: 'Translate' },\n Verification: { phosphorIcon: 'Key' },\n Video: { phosphorIcon: 'VideoCamera' },\n} as const;\n\nexport type AppCategoryId = keyof typeof APP_CATEGORIES;\n\nexport const APP_CATEGORY_IDS = Object.keys(APP_CATEGORIES) as AppCategoryId[];\n\nexport function isAppCategory(value: string): value is AppCategoryId {\n return Object.prototype.hasOwnProperty.call(APP_CATEGORIES, value);\n}\n\nexport function getAppCategoryIcon(category: AppCategoryId): string {\n return APP_CATEGORIES[category].phosphorIcon;\n}\n"],"mappings":";AAiBO,IAAM,iBAAiB;AAAA,EAC5B,KAAK,EAAE,cAAc,aAAa;AAAA,EAClC,UAAU,EAAE,cAAc,UAAU;AAAA,EACpC,MAAM,EAAE,cAAc,cAAc;AAAA,EACpC,MAAM,EAAE,cAAc,OAAO;AAAA,EAC7B,SAAS,EAAE,cAAc,QAAQ;AAAA,EACjC,cAAc,EAAE,cAAc,YAAY;AAAA,EAC1C,QAAQ,EAAE,cAAc,gBAAgB;AAAA,EACxC,QAAQ,EAAE,cAAc,cAAc;AAAA,EACtC,OAAO,EAAE,cAAc,aAAa;AAAA,EACpC,OAAO,EAAE,cAAc,cAAc;AAAA,EACrC,OAAO,EAAE,cAAc,YAAY;AAAA,EACnC,OAAO,EAAE,cAAc,UAAU;AAAA,EACjC,QAAQ,EAAE,cAAc,YAAY;AAAA,EACpC,QAAQ,EAAE,cAAc,SAAS;AAAA,EACjC,QAAQ,EAAE,cAAc,SAAS;AAAA,EACjC,OAAO,EAAE,cAAc,aAAa;AAAA,EACpC,OAAO,EAAE,cAAc,WAAW;AAAA,EAClC,SAAS,EAAE,cAAc,aAAa;AAAA,EACtC,UAAU,EAAE,cAAc,OAAO;AAAA,EACjC,SAAS,EAAE,cAAc,OAAO;AAAA,EAChC,QAAQ,EAAE,cAAc,eAAe;AAAA,EACvC,QAAQ,EAAE,cAAc,aAAa;AAAA,EACrC,cAAc,EAAE,cAAc,YAAY;AAAA,EAC1C,cAAc,EAAE,cAAc,MAAM;AAAA,EACpC,OAAO,EAAE,cAAc,cAAc;AACvC;AAIO,IAAM,mBAAmB,OAAO,KAAK,cAAc;AAEnD,SAAS,cAAc,OAAuC;AACnE,SAAO,OAAO,UAAU,eAAe,KAAK,gBAAgB,KAAK;AACnE;AAEO,SAAS,mBAAmB,UAAiC;AAClE,SAAO,eAAe,QAAQ,EAAE;AAClC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/taxonomy/app-categories.ts"],"sourcesContent":["/**\n * App-category taxonomy for AT Protocol apps tracked by Sifa.\n *\n * Categories group apps by what kind of activity they produce (Posts, Photos,\n * Code, ...). They drive the pill-size icon shown in `<AppPill>` and the\n * fallback glyph used in activity-card headers when no app-specific logo\n * exists.\n *\n * This file is intentionally data-only -- icon mapping is renderer-specific\n * (React DOM Phosphor components on web, React Native components on mobile)\n * and lives in the consumer. The `phosphorIcon` field is the Phosphor icon\n * NAME, not a component reference.\n *\n * Categories are an internal grouping; we do not surface this taxonomy in\n * public-facing copy.\n */\n\nexport const APP_CATEGORIES = {\n Art: { phosphorIcon: 'PaintBrush' },\n Articles: { phosphorIcon: 'Article' },\n Chat: { phosphorIcon: 'ChatsCircle' },\n Code: { phosphorIcon: 'Code' },\n Domains: { phosphorIcon: 'Globe' },\n Endorsements: { phosphorIcon: 'HandHeart' },\n Events: { phosphorIcon: 'CalendarBlank' },\n Flashcards: { phosphorIcon: 'Cards' },\n Impact: { phosphorIcon: 'Certificate' },\n Links: { phosphorIcon: 'LinkSimple' },\n Lists: { phosphorIcon: 'ListBullets' },\n Music: { phosphorIcon: 'MusicNote' },\n Pages: { phosphorIcon: 'Browser' },\n Pastes: { phosphorIcon: 'Clipboard' },\n Photos: { phosphorIcon: 'Camera' },\n Places: { phosphorIcon: 'MapPin' },\n Posts: { phosphorIcon: 'ChatCircle' },\n 'Q&A': { phosphorIcon: 'Question' },\n Recipes: { phosphorIcon: 'CookingPot' },\n Research: { phosphorIcon: 'Path' },\n Reviews: { phosphorIcon: 'Star' },\n Slides: { phosphorIcon: 'Presentation' },\n Social: { phosphorIcon: 'UsersThree' },\n Translations: { phosphorIcon: 'Translate' },\n Verification: { phosphorIcon: 'Key' },\n Video: { phosphorIcon: 'VideoCamera' },\n} as const;\n\nexport type AppCategoryId = keyof typeof APP_CATEGORIES;\n\nexport const APP_CATEGORY_IDS = Object.keys(APP_CATEGORIES) as AppCategoryId[];\n\nexport function isAppCategory(value: string): value is AppCategoryId {\n return Object.prototype.hasOwnProperty.call(APP_CATEGORIES, value);\n}\n\nexport function getAppCategoryIcon(category: AppCategoryId): string {\n return APP_CATEGORIES[category].phosphorIcon;\n}\n"],"mappings":";AAiBO,IAAM,iBAAiB;AAAA,EAC5B,KAAK,EAAE,cAAc,aAAa;AAAA,EAClC,UAAU,EAAE,cAAc,UAAU;AAAA,EACpC,MAAM,EAAE,cAAc,cAAc;AAAA,EACpC,MAAM,EAAE,cAAc,OAAO;AAAA,EAC7B,SAAS,EAAE,cAAc,QAAQ;AAAA,EACjC,cAAc,EAAE,cAAc,YAAY;AAAA,EAC1C,QAAQ,EAAE,cAAc,gBAAgB;AAAA,EACxC,YAAY,EAAE,cAAc,QAAQ;AAAA,EACpC,QAAQ,EAAE,cAAc,cAAc;AAAA,EACtC,OAAO,EAAE,cAAc,aAAa;AAAA,EACpC,OAAO,EAAE,cAAc,cAAc;AAAA,EACrC,OAAO,EAAE,cAAc,YAAY;AAAA,EACnC,OAAO,EAAE,cAAc,UAAU;AAAA,EACjC,QAAQ,EAAE,cAAc,YAAY;AAAA,EACpC,QAAQ,EAAE,cAAc,SAAS;AAAA,EACjC,QAAQ,EAAE,cAAc,SAAS;AAAA,EACjC,OAAO,EAAE,cAAc,aAAa;AAAA,EACpC,OAAO,EAAE,cAAc,WAAW;AAAA,EAClC,SAAS,EAAE,cAAc,aAAa;AAAA,EACtC,UAAU,EAAE,cAAc,OAAO;AAAA,EACjC,SAAS,EAAE,cAAc,OAAO;AAAA,EAChC,QAAQ,EAAE,cAAc,eAAe;AAAA,EACvC,QAAQ,EAAE,cAAc,aAAa;AAAA,EACrC,cAAc,EAAE,cAAc,YAAY;AAAA,EAC1C,cAAc,EAAE,cAAc,MAAM;AAAA,EACpC,OAAO,EAAE,cAAc,cAAc;AACvC;AAIO,IAAM,mBAAmB,OAAO,KAAK,cAAc;AAEnD,SAAS,cAAc,OAAuC;AACnE,SAAO,OAAO,UAAU,eAAe,KAAK,gBAAgB,KAAK;AACnE;AAEO,SAAS,mBAAmB,UAAiC;AAClE,SAAO,eAAe,QAAQ,EAAE;AAClC;","names":[]}
|
|
@@ -163,8 +163,19 @@ var APP_CATEGORY_MAP = {
|
|
|
163
163
|
// supply.skillz.skill — authored agent skills (SKILL.md) on skillz.supply
|
|
164
164
|
birdsplace: "Places",
|
|
165
165
|
// place.birds.sighting — logged bird sightings with photo, notes, and location
|
|
166
|
-
skymap: "Places"
|
|
166
|
+
skymap: "Places",
|
|
167
167
|
// blue.skymap.geo.map — authored maps of places (features inline)
|
|
168
|
+
// 2026-10-20 profile-of-the-day queue onboards.
|
|
169
|
+
opendeck: "Flashcards",
|
|
170
|
+
// space.opendeck.deck — authored language-flashcard decks
|
|
171
|
+
chiverecipes: "Recipes",
|
|
172
|
+
// com.chive.recipe — authored recipes on chive.pages.dev
|
|
173
|
+
atbb: "Posts",
|
|
174
|
+
// space.atbb.post — forum posts and replies on atBB forums
|
|
175
|
+
passingreads: "Reviews",
|
|
176
|
+
// org.passingreads.book.note — notes on shared physical books
|
|
177
|
+
isnot: "Reviews"
|
|
178
|
+
// at.isnot.review — adjective-tag micro-reviews (is / is not)
|
|
168
179
|
};
|
|
169
180
|
function isKnownAppId(appId) {
|
|
170
181
|
return Object.prototype.hasOwnProperty.call(APP_CATEGORY_MAP, appId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/taxonomy/app-category-map.ts"],"sourcesContent":["/**\n * Maps every AT Protocol app Sifa tracks to its `AppCategoryId`. Single source\n * of truth for what category an app belongs to; sifa-api and sifa-web both\n * import from here.\n *\n * Add a new app: pick the category whose generic glyph best represents the\n * activity. If no existing category fits, add a new one to APP_CATEGORIES\n * rather than introducing a per-app override.\n */\n\nimport type { AppCategoryId } from './app-categories.js';\n\nexport const APP_CATEGORY_MAP = {\n // Backend-scanned (sifa-api APP_REGISTRY)\n bluesky: 'Posts',\n tangled: 'Code',\n github: 'Code',\n // Posts ingested from a verified Fediverse (ActivityPub) account. Like\n // github, there is no PDS collection behind it -- its own scanner owns the\n // app-stats row.\n fediverse: 'Posts',\n // Items ingested from a verified RSS or Atom feed: blogs, newsletters,\n // podcast and channel feeds. Categorized as Articles rather than Posts\n // because the common case is a long-form blog entry with a title.\n rss: 'Articles',\n smokesignal: 'Events',\n flashes: 'Photos',\n grain: 'Photos',\n pixl: 'Photos', // pics.pixl.image — photo posts on pixl.pics\n whitewind: 'Articles',\n frontpage: 'Links',\n pastesphere: 'Pastes',\n standard: 'Articles',\n aetheros: 'Pages',\n roomy: 'Social',\n keytrace: 'Verification',\n popfeed: 'Reviews',\n streamplace: 'Video',\n semble: 'Research',\n youandme: 'Social',\n leaflet: 'Articles',\n colibri: 'Social',\n collectivesocial: 'Lists',\n bookhive: 'Reviews',\n beaconbits: 'Places',\n passports: 'Places',\n asq: 'Q&A',\n spark: 'Posts',\n nooki: 'Social',\n atstore: 'Reviews',\n plyr: 'Music',\n anisota: 'Posts',\n atfund: 'Endorsements',\n crate: 'Articles',\n atmorsvp: 'Events',\n opensocial: 'Social',\n // eu.atcommons.member — a self-asserted declaration of belonging to a\n // national AT Protocol community commons (atproto.nl, atproto.eu, ...).\n // Same shape as the colibri / opensocial membership commitment.\n atcommons: 'Social',\n // Kevara speaker-directory listing — a professional speaking-availability\n // declaration (talk topics, formats like keynote/panel/conference-talk).\n // Grouped under Events as the closest fit (speaking engagements).\n kevara: 'Events',\n // Marque domain registrar — a domain registration record is a dated\n // identity/ownership action, surfaced as a \"registered a domain\" event.\n marque: 'Domains',\n // ATCR (io.atcr) — distributed OCI container registry. The portfolio entry\n // is io.atcr.repo.page (a published repository with a markdown README);\n // manifests and tags are low-level artifacts excluded backend-side.\n atcr: 'Code',\n // Batch onboard — apps surfaced on high-volume profiles. Each gives its\n // collections a named pill + category icon instead of a raw NSID.\n mcp: 'Code', // app.mcp.server — published MCP servers (name/tools/language)\n userinput: 'Social', // app.userinput — roadmap discussions + replies\n minomobi: 'Music', // com.minomobi.music.composition — authored music\n voxport: 'Video', // com.voxport.podcast.series — podcast series\n badges: 'Verification', // community.lexicon.badge.award — signed earned credentials\n atvouch: 'Endorsements', // dev.atvouch.graph.vouch — trust vouches\n watsm: 'Code', // io.calabro.watsm.program — published WASM programs\n plonk: 'Pastes', // li.plonk.paste — text pastes\n alternativeproto: 'Links', // net.alternativeproto.submission — app-directory listings\n papili: 'Links', // one.papili.post — link posts\n vit: 'Code', // org.v-it.skill — published agent skills\n lifepo: 'Social', // st.lifepo.lifeEvent — life-event timeline\n streamthought: 'Posts', // stream.thought.blip — microblog thoughts\n waow: 'Photos', // tech.waow.* — doodl drawings (dominant), polls, slides\n lichen: 'Pages', // wiki.lichen — wiki notes + wikis\n // Onboard from aramzs.xyz profile audit — new named pills.\n aetherdocs: 'Slides', // os.aether.docs.presentation — authored slide decks\n kich: 'Recipes', // io.kich.recipe.recipe — authored recipes\n margin: 'Research', // at.margin.{note,annotation} — web-annotation notes with a body\n // Onboard from moll.dev profile audit.\n recipe: 'Recipes', // exchange.recipe.recipe — authored recipes on recipe.exchange\n\n // Onboard from willow.sh profile audit.\n guestbook: 'Social', // dev.baileytownsend.guestbook.entry — a note left on someone's cross-site guestbook\n\n // Onboard from trezy.codes profile audit.\n atmobb: 'Social', // app.atmobb.discussion.{thread,reply} — federated forum threads + replies\n\n // Onboard from aaronstevenwhite.io profile audit.\n chive: 'Research', // pub.chive.eprint.submission — preprints on chive.pub\n\n // Onboard from helene-cook.eu profile audit.\n zeens: 'Photos', // app.photosky.collection — curated photo collections on zeens.app\n\n // Onboard from scanash.com profile audit.\n locale: 'Translations', // at.locale.{project,translation} — localization projects and authored translation strings on locale.at\n pckt: 'Posts', // blog.pckt.mini.post — microblog posts with no site.standard.document twin\n\n // Onboard from the holke.xyz profile audit (impact-funding ecosystem).\n hypercerts: 'Impact', // org.hypercerts.{claim.activity,collection} — authored claims of work done, and the project collections that group them\n certified: 'Endorsements', // app.certified.{badge.award,actor.membership} — endorsements issued to another DID, and group memberships\n impactindexer: 'Reviews', // org.impactindexer.review.comment — written reviews of a hypercert claim\n pinksea: 'Art', // com.shinolabs.pinksea.oekaki — hand-drawn artwork posted to the PinkSea oekaki BBS\n\n // Onboard from the tijs.org profile audit.\n dropanchor: 'Places', // app.dropanchor.checkin — location check-ins (place, geo, optional review text)\n\n // Onboard from the angrydutchman.houseofmadness.org profile audit.\n askeverything: 'Q&A', // app.askeverything.feed.answer — authored answers to community questions\n greengale: 'Articles', // app.greengale.blog.entry — authored blog posts (title, subtitle, Markdown body)\n kut: 'Social', // social.kut.community.membership — joining a Kut community (a commitment)\n\n // Onboard from the upcoming profile-of-the-day audit.\n atmob: 'Pastes', // in.atmob.paste.{document,bundle} — authored text/code pastes on atmob.in\n tokono: 'Video', // ma.tokono.byov.video — authored videos hosted via the tokono.ma \"bring your own video\" feature\n portable: 'Social', // agency.portable.membership — joining a community (a commitment), attested by another actor\n rpgactor: 'Art', // actor.rpg.sprite + equipment.rpg.item: a pixel-art RPG character and the equipment items it was given\n\n // Web-only (rendered in pills/cards via sifa-web atproto-apps.ts;\n // no backend scan collection yet)\n linkat: 'Links',\n kipclip: 'Links',\n statusphere: 'Social',\n // 2026-09-28 profile-of-the-day queue onboards.\n lexidraw: 'Art', // app.lexidraw.scene — named whiteboard drawings\n leadsheet: 'Music', // fm.leadsheet.sheet — authored chord sheets and tabs\n brickster: 'Art', // at.brickster.creation — 3D brick builds\n // 2026-10-06 profile-of-the-day queue onboards.\n skillz: 'Code', // supply.skillz.skill — authored agent skills (SKILL.md) on skillz.supply\n birdsplace: 'Places', // place.birds.sighting — logged bird sightings with photo, notes, and location\n skymap: 'Places', // blue.skymap.geo.map — authored maps of places (features inline)\n} as const satisfies Record<string, AppCategoryId>;\n\nexport type KnownAppId = keyof typeof APP_CATEGORY_MAP;\n\nexport function isKnownAppId(appId: string): appId is KnownAppId {\n return Object.prototype.hasOwnProperty.call(APP_CATEGORY_MAP, appId);\n}\n\nexport function categoryForApp(appId: string): AppCategoryId | undefined {\n return isKnownAppId(appId) ? APP_CATEGORY_MAP[appId] : undefined;\n}\n"],"mappings":";AAYO,IAAM,mBAAmB;AAAA;AAAA,EAE9B,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA;AAAA;AAAA,EAIR,WAAW;AAAA;AAAA;AAAA;AAAA,EAIX,KAAK;AAAA,EACL,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA;AAAA;AAAA;AAAA,EAIZ,WAAW;AAAA;AAAA;AAAA;AAAA,EAIX,QAAQ;AAAA;AAAA;AAAA,EAGR,QAAQ;AAAA;AAAA;AAAA;AAAA,EAIR,MAAM;AAAA;AAAA;AAAA,EAGN,KAAK;AAAA;AAAA,EACL,WAAW;AAAA;AAAA,EACX,UAAU;AAAA;AAAA,EACV,SAAS;AAAA;AAAA,EACT,QAAQ;AAAA;AAAA,EACR,SAAS;AAAA;AAAA,EACT,OAAO;AAAA;AAAA,EACP,OAAO;AAAA;AAAA,EACP,kBAAkB;AAAA;AAAA,EAClB,QAAQ;AAAA;AAAA,EACR,KAAK;AAAA;AAAA,EACL,QAAQ;AAAA;AAAA,EACR,eAAe;AAAA;AAAA,EACf,MAAM;AAAA;AAAA,EACN,QAAQ;AAAA;AAAA;AAAA,EAER,YAAY;AAAA;AAAA,EACZ,MAAM;AAAA;AAAA,EACN,QAAQ;AAAA;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA;AAAA,EAGR,WAAW;AAAA;AAAA;AAAA,EAGX,QAAQ;AAAA;AAAA;AAAA,EAGR,OAAO;AAAA;AAAA;AAAA,EAGP,OAAO;AAAA;AAAA;AAAA,EAGP,QAAQ;AAAA;AAAA,EACR,MAAM;AAAA;AAAA;AAAA,EAGN,YAAY;AAAA;AAAA,EACZ,WAAW;AAAA;AAAA,EACX,eAAe;AAAA;AAAA,EACf,SAAS;AAAA;AAAA;AAAA,EAGT,YAAY;AAAA;AAAA;AAAA,EAGZ,eAAe;AAAA;AAAA,EACf,WAAW;AAAA;AAAA,EACX,KAAK;AAAA;AAAA;AAAA,EAGL,OAAO;AAAA;AAAA,EACP,QAAQ;AAAA;AAAA,EACR,UAAU;AAAA;AAAA,EACV,UAAU;AAAA;AAAA;AAAA;AAAA,EAIV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,aAAa;AAAA;AAAA,EAEb,UAAU;AAAA;AAAA,EACV,WAAW;AAAA;AAAA,EACX,WAAW;AAAA;AAAA;AAAA,EAEX,QAAQ;AAAA;AAAA,EACR,YAAY;AAAA;AAAA,EACZ,QAAQ;AAAA;AACV;AAIO,SAAS,aAAa,OAAoC;AAC/D,SAAO,OAAO,UAAU,eAAe,KAAK,kBAAkB,KAAK;AACrE;AAEO,SAAS,eAAe,OAA0C;AACvE,SAAO,aAAa,KAAK,IAAI,iBAAiB,KAAK,IAAI;AACzD;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/taxonomy/app-category-map.ts"],"sourcesContent":["/**\n * Maps every AT Protocol app Sifa tracks to its `AppCategoryId`. Single source\n * of truth for what category an app belongs to; sifa-api and sifa-web both\n * import from here.\n *\n * Add a new app: pick the category whose generic glyph best represents the\n * activity. If no existing category fits, add a new one to APP_CATEGORIES\n * rather than introducing a per-app override.\n */\n\nimport type { AppCategoryId } from './app-categories.js';\n\nexport const APP_CATEGORY_MAP = {\n // Backend-scanned (sifa-api APP_REGISTRY)\n bluesky: 'Posts',\n tangled: 'Code',\n github: 'Code',\n // Posts ingested from a verified Fediverse (ActivityPub) account. Like\n // github, there is no PDS collection behind it -- its own scanner owns the\n // app-stats row.\n fediverse: 'Posts',\n // Items ingested from a verified RSS or Atom feed: blogs, newsletters,\n // podcast and channel feeds. Categorized as Articles rather than Posts\n // because the common case is a long-form blog entry with a title.\n rss: 'Articles',\n smokesignal: 'Events',\n flashes: 'Photos',\n grain: 'Photos',\n pixl: 'Photos', // pics.pixl.image — photo posts on pixl.pics\n whitewind: 'Articles',\n frontpage: 'Links',\n pastesphere: 'Pastes',\n standard: 'Articles',\n aetheros: 'Pages',\n roomy: 'Social',\n keytrace: 'Verification',\n popfeed: 'Reviews',\n streamplace: 'Video',\n semble: 'Research',\n youandme: 'Social',\n leaflet: 'Articles',\n colibri: 'Social',\n collectivesocial: 'Lists',\n bookhive: 'Reviews',\n beaconbits: 'Places',\n passports: 'Places',\n asq: 'Q&A',\n spark: 'Posts',\n nooki: 'Social',\n atstore: 'Reviews',\n plyr: 'Music',\n anisota: 'Posts',\n atfund: 'Endorsements',\n crate: 'Articles',\n atmorsvp: 'Events',\n opensocial: 'Social',\n // eu.atcommons.member — a self-asserted declaration of belonging to a\n // national AT Protocol community commons (atproto.nl, atproto.eu, ...).\n // Same shape as the colibri / opensocial membership commitment.\n atcommons: 'Social',\n // Kevara speaker-directory listing — a professional speaking-availability\n // declaration (talk topics, formats like keynote/panel/conference-talk).\n // Grouped under Events as the closest fit (speaking engagements).\n kevara: 'Events',\n // Marque domain registrar — a domain registration record is a dated\n // identity/ownership action, surfaced as a \"registered a domain\" event.\n marque: 'Domains',\n // ATCR (io.atcr) — distributed OCI container registry. The portfolio entry\n // is io.atcr.repo.page (a published repository with a markdown README);\n // manifests and tags are low-level artifacts excluded backend-side.\n atcr: 'Code',\n // Batch onboard — apps surfaced on high-volume profiles. Each gives its\n // collections a named pill + category icon instead of a raw NSID.\n mcp: 'Code', // app.mcp.server — published MCP servers (name/tools/language)\n userinput: 'Social', // app.userinput — roadmap discussions + replies\n minomobi: 'Music', // com.minomobi.music.composition — authored music\n voxport: 'Video', // com.voxport.podcast.series — podcast series\n badges: 'Verification', // community.lexicon.badge.award — signed earned credentials\n atvouch: 'Endorsements', // dev.atvouch.graph.vouch — trust vouches\n watsm: 'Code', // io.calabro.watsm.program — published WASM programs\n plonk: 'Pastes', // li.plonk.paste — text pastes\n alternativeproto: 'Links', // net.alternativeproto.submission — app-directory listings\n papili: 'Links', // one.papili.post — link posts\n vit: 'Code', // org.v-it.skill — published agent skills\n lifepo: 'Social', // st.lifepo.lifeEvent — life-event timeline\n streamthought: 'Posts', // stream.thought.blip — microblog thoughts\n waow: 'Photos', // tech.waow.* — doodl drawings (dominant), polls, slides\n lichen: 'Pages', // wiki.lichen — wiki notes + wikis\n // Onboard from aramzs.xyz profile audit — new named pills.\n aetherdocs: 'Slides', // os.aether.docs.presentation — authored slide decks\n kich: 'Recipes', // io.kich.recipe.recipe — authored recipes\n margin: 'Research', // at.margin.{note,annotation} — web-annotation notes with a body\n // Onboard from moll.dev profile audit.\n recipe: 'Recipes', // exchange.recipe.recipe — authored recipes on recipe.exchange\n\n // Onboard from willow.sh profile audit.\n guestbook: 'Social', // dev.baileytownsend.guestbook.entry — a note left on someone's cross-site guestbook\n\n // Onboard from trezy.codes profile audit.\n atmobb: 'Social', // app.atmobb.discussion.{thread,reply} — federated forum threads + replies\n\n // Onboard from aaronstevenwhite.io profile audit.\n chive: 'Research', // pub.chive.eprint.submission — preprints on chive.pub\n\n // Onboard from helene-cook.eu profile audit.\n zeens: 'Photos', // app.photosky.collection — curated photo collections on zeens.app\n\n // Onboard from scanash.com profile audit.\n locale: 'Translations', // at.locale.{project,translation} — localization projects and authored translation strings on locale.at\n pckt: 'Posts', // blog.pckt.mini.post — microblog posts with no site.standard.document twin\n\n // Onboard from the holke.xyz profile audit (impact-funding ecosystem).\n hypercerts: 'Impact', // org.hypercerts.{claim.activity,collection} — authored claims of work done, and the project collections that group them\n certified: 'Endorsements', // app.certified.{badge.award,actor.membership} — endorsements issued to another DID, and group memberships\n impactindexer: 'Reviews', // org.impactindexer.review.comment — written reviews of a hypercert claim\n pinksea: 'Art', // com.shinolabs.pinksea.oekaki — hand-drawn artwork posted to the PinkSea oekaki BBS\n\n // Onboard from the tijs.org profile audit.\n dropanchor: 'Places', // app.dropanchor.checkin — location check-ins (place, geo, optional review text)\n\n // Onboard from the angrydutchman.houseofmadness.org profile audit.\n askeverything: 'Q&A', // app.askeverything.feed.answer — authored answers to community questions\n greengale: 'Articles', // app.greengale.blog.entry — authored blog posts (title, subtitle, Markdown body)\n kut: 'Social', // social.kut.community.membership — joining a Kut community (a commitment)\n\n // Onboard from the upcoming profile-of-the-day audit.\n atmob: 'Pastes', // in.atmob.paste.{document,bundle} — authored text/code pastes on atmob.in\n tokono: 'Video', // ma.tokono.byov.video — authored videos hosted via the tokono.ma \"bring your own video\" feature\n portable: 'Social', // agency.portable.membership — joining a community (a commitment), attested by another actor\n rpgactor: 'Art', // actor.rpg.sprite + equipment.rpg.item: a pixel-art RPG character and the equipment items it was given\n\n // Web-only (rendered in pills/cards via sifa-web atproto-apps.ts;\n // no backend scan collection yet)\n linkat: 'Links',\n kipclip: 'Links',\n statusphere: 'Social',\n // 2026-09-28 profile-of-the-day queue onboards.\n lexidraw: 'Art', // app.lexidraw.scene — named whiteboard drawings\n leadsheet: 'Music', // fm.leadsheet.sheet — authored chord sheets and tabs\n brickster: 'Art', // at.brickster.creation — 3D brick builds\n // 2026-10-06 profile-of-the-day queue onboards.\n skillz: 'Code', // supply.skillz.skill — authored agent skills (SKILL.md) on skillz.supply\n birdsplace: 'Places', // place.birds.sighting — logged bird sightings with photo, notes, and location\n skymap: 'Places', // blue.skymap.geo.map — authored maps of places (features inline)\n // 2026-10-20 profile-of-the-day queue onboards.\n opendeck: 'Flashcards', // space.opendeck.deck — authored language-flashcard decks\n chiverecipes: 'Recipes', // com.chive.recipe — authored recipes on chive.pages.dev\n atbb: 'Posts', // space.atbb.post — forum posts and replies on atBB forums\n passingreads: 'Reviews', // org.passingreads.book.note — notes on shared physical books\n isnot: 'Reviews', // at.isnot.review — adjective-tag micro-reviews (is / is not)\n} as const satisfies Record<string, AppCategoryId>;\n\nexport type KnownAppId = keyof typeof APP_CATEGORY_MAP;\n\nexport function isKnownAppId(appId: string): appId is KnownAppId {\n return Object.prototype.hasOwnProperty.call(APP_CATEGORY_MAP, appId);\n}\n\nexport function categoryForApp(appId: string): AppCategoryId | undefined {\n return isKnownAppId(appId) ? APP_CATEGORY_MAP[appId] : undefined;\n}\n"],"mappings":";AAYO,IAAM,mBAAmB;AAAA;AAAA,EAE9B,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA;AAAA;AAAA,EAIR,WAAW;AAAA;AAAA;AAAA;AAAA,EAIX,KAAK;AAAA,EACL,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA;AAAA;AAAA;AAAA,EAIZ,WAAW;AAAA;AAAA;AAAA;AAAA,EAIX,QAAQ;AAAA;AAAA;AAAA,EAGR,QAAQ;AAAA;AAAA;AAAA;AAAA,EAIR,MAAM;AAAA;AAAA;AAAA,EAGN,KAAK;AAAA;AAAA,EACL,WAAW;AAAA;AAAA,EACX,UAAU;AAAA;AAAA,EACV,SAAS;AAAA;AAAA,EACT,QAAQ;AAAA;AAAA,EACR,SAAS;AAAA;AAAA,EACT,OAAO;AAAA;AAAA,EACP,OAAO;AAAA;AAAA,EACP,kBAAkB;AAAA;AAAA,EAClB,QAAQ;AAAA;AAAA,EACR,KAAK;AAAA;AAAA,EACL,QAAQ;AAAA;AAAA,EACR,eAAe;AAAA;AAAA,EACf,MAAM;AAAA;AAAA,EACN,QAAQ;AAAA;AAAA;AAAA,EAER,YAAY;AAAA;AAAA,EACZ,MAAM;AAAA;AAAA,EACN,QAAQ;AAAA;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA;AAAA,EAGR,WAAW;AAAA;AAAA;AAAA,EAGX,QAAQ;AAAA;AAAA;AAAA,EAGR,OAAO;AAAA;AAAA;AAAA,EAGP,OAAO;AAAA;AAAA;AAAA,EAGP,QAAQ;AAAA;AAAA,EACR,MAAM;AAAA;AAAA;AAAA,EAGN,YAAY;AAAA;AAAA,EACZ,WAAW;AAAA;AAAA,EACX,eAAe;AAAA;AAAA,EACf,SAAS;AAAA;AAAA;AAAA,EAGT,YAAY;AAAA;AAAA;AAAA,EAGZ,eAAe;AAAA;AAAA,EACf,WAAW;AAAA;AAAA,EACX,KAAK;AAAA;AAAA;AAAA,EAGL,OAAO;AAAA;AAAA,EACP,QAAQ;AAAA;AAAA,EACR,UAAU;AAAA;AAAA,EACV,UAAU;AAAA;AAAA;AAAA;AAAA,EAIV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,aAAa;AAAA;AAAA,EAEb,UAAU;AAAA;AAAA,EACV,WAAW;AAAA;AAAA,EACX,WAAW;AAAA;AAAA;AAAA,EAEX,QAAQ;AAAA;AAAA,EACR,YAAY;AAAA;AAAA,EACZ,QAAQ;AAAA;AAAA;AAAA,EAER,UAAU;AAAA;AAAA,EACV,cAAc;AAAA;AAAA,EACd,MAAM;AAAA;AAAA,EACN,cAAc;AAAA;AAAA,EACd,OAAO;AAAA;AACT;AAIO,SAAS,aAAa,OAAoC;AAC/D,SAAO,OAAO,UAAU,eAAe,KAAK,kBAAkB,KAAK;AACrE;AAEO,SAAS,eAAe,OAA0C;AACvE,SAAO,aAAa,KAAK,IAAI,iBAAiB,KAAK,IAAI;AACzD;","names":[]}
|
|
@@ -761,7 +761,7 @@ declare function matchesSiteActivityPreset(item: PresetItem, preset: SiteActivit
|
|
|
761
761
|
* tags are normalized and de-duplicated. Replaces the whole stored preset.
|
|
762
762
|
*/
|
|
763
763
|
declare const siteActivityPresetUpdateSchema: z.ZodObject<{
|
|
764
|
-
categories: z.ZodPipe<z.ZodArray<z.ZodString & z.ZodType<"Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video", string, z.core.$ZodTypeInternals<"Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video", string>>>, z.ZodTransform<("Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video")[], ("Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video")[]>>;
|
|
764
|
+
categories: z.ZodPipe<z.ZodArray<z.ZodString & z.ZodType<"Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Flashcards" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video", string, z.core.$ZodTypeInternals<"Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Flashcards" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video", string>>>, z.ZodTransform<("Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Flashcards" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video")[], ("Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Flashcards" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video")[]>>;
|
|
765
765
|
tags: z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>;
|
|
766
766
|
}, z.core.$strip>;
|
|
767
767
|
|
|
@@ -761,7 +761,7 @@ declare function matchesSiteActivityPreset(item: PresetItem, preset: SiteActivit
|
|
|
761
761
|
* tags are normalized and de-duplicated. Replaces the whole stored preset.
|
|
762
762
|
*/
|
|
763
763
|
declare const siteActivityPresetUpdateSchema: z.ZodObject<{
|
|
764
|
-
categories: z.ZodPipe<z.ZodArray<z.ZodString & z.ZodType<"Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video", string, z.core.$ZodTypeInternals<"Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video", string>>>, z.ZodTransform<("Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video")[], ("Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video")[]>>;
|
|
764
|
+
categories: z.ZodPipe<z.ZodArray<z.ZodString & z.ZodType<"Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Flashcards" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video", string, z.core.$ZodTypeInternals<"Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Flashcards" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video", string>>>, z.ZodTransform<("Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Flashcards" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video")[], ("Code" | "Art" | "Articles" | "Chat" | "Domains" | "Endorsements" | "Events" | "Flashcards" | "Impact" | "Links" | "Lists" | "Music" | "Pages" | "Pastes" | "Photos" | "Places" | "Posts" | "Q&A" | "Recipes" | "Research" | "Reviews" | "Slides" | "Social" | "Translations" | "Verification" | "Video")[]>>;
|
|
765
765
|
tags: z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>;
|
|
766
766
|
}, z.core.$strip>;
|
|
767
767
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { a1 as SifaApiConfig, a0 as ApiFetchOptions, a2 as WriteResult, o as ProfileView, a3 as CreateResult, a5 as FilterOptions, S as SearchFilters, a8 as SearchResponse, a9 as SkillSearchResult, ai as CompanySearchFilters, aj as CompanySearchResponse, u as RepoDeleteResult, x as RepoInventory } from './types-
|
|
3
|
+
import { a1 as SifaApiConfig, a0 as ApiFetchOptions, a2 as WriteResult, o as ProfileView, a3 as CreateResult, a5 as FilterOptions, S as SearchFilters, a8 as SearchResponse, a9 as SkillSearchResult, ai as CompanySearchFilters, aj as CompanySearchResponse, u as RepoDeleteResult, x as RepoInventory } from './types-CQA_vO39.js';
|
|
4
4
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
5
5
|
import { UseQueryOptions, UseMutationOptions, UseInfiniteQueryOptions, InfiniteData } from '@tanstack/react-query';
|
|
6
6
|
import { c as Profile, d as ProfilePosition, Y as SkillRef, p as ExternalAccount, Z as SkillSuggestion, s as OrgFloorVerdict } from './index-DDh2RLvx.js';
|
|
7
|
-
import { s as sifaQueryKeys, aJ as RefreshPdsResult, b6 as UpdateProfileOverrideInput, b7 as UpdateProfileSelfInput, b8 as UploadAvatarResult, b9 as UploadPronunciationAudioResult, at as PrimarySection, a$ as SubCategoryBulkResult, ay as ProfileLocationInput, q as ExternalAccountInput, n as CreateExternalAccountResult, bd as VerifyExternalAccountResult, E as EndorsementInput, l as ConfirmationInput, m as ConfirmationSubjectInput, a3 as GivenConfirmation, as as PendingConfirmationsPage, ae as InboxCounts, p as DismissUnlinkedPositionInput, b4 as UnlinkedPositionsResult, o as DismissCompletenessSignalInput, au as ProfileCompleteness, aR as RpgClaimableResponse, aV as RpgStatusResponse, aI as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, ad as HideProfileItemInput, a8 as HiddenActivityItem, ac as HideActivityItemInput, b2 as UnhideActivityItemInput, f as ActivityPreferences, aZ as SiteActivityPresetResponse, b5 as UpdateActivityPreferencesInput, a_ as StatsResponse, i as AppRegistryEntry, a9 as HiddenApp, b as AccountSummary, r as FeaturedProfile, aY as SimilarProfile, Q as FetchSuggestionsOptions, b1 as SuggestionsResponse, W as FollowUserResult, y as FetchFollowListOptions, T as FollowListPage, a0 as FollowingResponse, G as FetchFollowingFeedOptions, _ as FollowingFeedResponse, $ as FollowingFeedVersion, z as FetchFollowProfilePageOptions, V as FollowProfilePageResponse, F as FeatureAllowlistResponse, h as AdminReviewQueues, u as FetchActivityFeedOptions, c as ActivityFeedResponse, g as ActivityTeaserResponse, a7 as HeatmapResponse, ag as MyGithubPullRequestsResponse, A as AccountCheckResult, aH as ReactionStatus, aG as ReactionResult, aF as ReactionError, aQ as RoadmapVotesResponse, j as CastRoadmapVoteResult, D as DeleteAccountResult, aL as ResetProfileResult, be as WipePreview, aK as RepoDeleteInput, ai as OrgClaimResult, ao as OrgProfileUpdateResult, aj as OrgDomainChallengeResult, ak as OrgDomainVerifyResult, al as OrgNotificationEmailAddResult, am as OrgNotificationEmailRemoveResult, ba as UserSettings } from './user-settings-
|
|
7
|
+
import { s as sifaQueryKeys, aJ as RefreshPdsResult, b6 as UpdateProfileOverrideInput, b7 as UpdateProfileSelfInput, b8 as UploadAvatarResult, b9 as UploadPronunciationAudioResult, at as PrimarySection, a$ as SubCategoryBulkResult, ay as ProfileLocationInput, q as ExternalAccountInput, n as CreateExternalAccountResult, bd as VerifyExternalAccountResult, E as EndorsementInput, l as ConfirmationInput, m as ConfirmationSubjectInput, a3 as GivenConfirmation, as as PendingConfirmationsPage, ae as InboxCounts, p as DismissUnlinkedPositionInput, b4 as UnlinkedPositionsResult, o as DismissCompletenessSignalInput, au as ProfileCompleteness, aR as RpgClaimableResponse, aV as RpgStatusResponse, aI as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, ad as HideProfileItemInput, a8 as HiddenActivityItem, ac as HideActivityItemInput, b2 as UnhideActivityItemInput, f as ActivityPreferences, aZ as SiteActivityPresetResponse, b5 as UpdateActivityPreferencesInput, a_ as StatsResponse, i as AppRegistryEntry, a9 as HiddenApp, b as AccountSummary, r as FeaturedProfile, aY as SimilarProfile, Q as FetchSuggestionsOptions, b1 as SuggestionsResponse, W as FollowUserResult, y as FetchFollowListOptions, T as FollowListPage, a0 as FollowingResponse, G as FetchFollowingFeedOptions, _ as FollowingFeedResponse, $ as FollowingFeedVersion, z as FetchFollowProfilePageOptions, V as FollowProfilePageResponse, F as FeatureAllowlistResponse, h as AdminReviewQueues, u as FetchActivityFeedOptions, c as ActivityFeedResponse, g as ActivityTeaserResponse, a7 as HeatmapResponse, ag as MyGithubPullRequestsResponse, A as AccountCheckResult, aH as ReactionStatus, aG as ReactionResult, aF as ReactionError, aQ as RoadmapVotesResponse, j as CastRoadmapVoteResult, D as DeleteAccountResult, aL as ResetProfileResult, be as WipePreview, aK as RepoDeleteInput, ai as OrgClaimResult, ao as OrgProfileUpdateResult, aj as OrgDomainChallengeResult, ak as OrgDomainVerifyResult, al as OrgNotificationEmailAddResult, am as OrgNotificationEmailRemoveResult, ba as UserSettings } from './user-settings-Btvrox4G.js';
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
import { i as EntitySearchResponse, E as EntitySearchResult, c as EntityMintDomainResponse, g as EntityResolveDomainResponse, n as EntitySelectResponse, l as EntitySelectRequest, r as FeatureFlag } from './follow-profile-CVcA2w1v.js';
|
|
10
10
|
import { O as OrgClaimRequestInput, h as OrgProfileUpdateRequestInput, b as OrgDomainChallengeRequestInput, d as OrgDomainVerifyRequestInput, f as OrgNotificationEmailRequestInput } from './org-settings-BShvhyFp.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { a1 as SifaApiConfig, a0 as ApiFetchOptions, a2 as WriteResult, o as ProfileView, a3 as CreateResult, a5 as FilterOptions, S as SearchFilters, a8 as SearchResponse, a9 as SkillSearchResult, ai as CompanySearchFilters, aj as CompanySearchResponse, u as RepoDeleteResult, x as RepoInventory } from './types-
|
|
3
|
+
import { a1 as SifaApiConfig, a0 as ApiFetchOptions, a2 as WriteResult, o as ProfileView, a3 as CreateResult, a5 as FilterOptions, S as SearchFilters, a8 as SearchResponse, a9 as SkillSearchResult, ai as CompanySearchFilters, aj as CompanySearchResponse, u as RepoDeleteResult, x as RepoInventory } from './types-DMTHqi2m.cjs';
|
|
4
4
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
5
5
|
import { UseQueryOptions, UseMutationOptions, UseInfiniteQueryOptions, InfiniteData } from '@tanstack/react-query';
|
|
6
6
|
import { c as Profile, d as ProfilePosition, Y as SkillRef, p as ExternalAccount, Z as SkillSuggestion, s as OrgFloorVerdict } from './index-BQAKeEoj.cjs';
|
|
7
|
-
import { s as sifaQueryKeys, aJ as RefreshPdsResult, b6 as UpdateProfileOverrideInput, b7 as UpdateProfileSelfInput, b8 as UploadAvatarResult, b9 as UploadPronunciationAudioResult, at as PrimarySection, a$ as SubCategoryBulkResult, ay as ProfileLocationInput, q as ExternalAccountInput, n as CreateExternalAccountResult, bd as VerifyExternalAccountResult, E as EndorsementInput, l as ConfirmationInput, m as ConfirmationSubjectInput, a3 as GivenConfirmation, as as PendingConfirmationsPage, ae as InboxCounts, p as DismissUnlinkedPositionInput, b4 as UnlinkedPositionsResult, o as DismissCompletenessSignalInput, au as ProfileCompleteness, aR as RpgClaimableResponse, aV as RpgStatusResponse, aI as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, ad as HideProfileItemInput, a8 as HiddenActivityItem, ac as HideActivityItemInput, b2 as UnhideActivityItemInput, f as ActivityPreferences, aZ as SiteActivityPresetResponse, b5 as UpdateActivityPreferencesInput, a_ as StatsResponse, i as AppRegistryEntry, a9 as HiddenApp, b as AccountSummary, r as FeaturedProfile, aY as SimilarProfile, Q as FetchSuggestionsOptions, b1 as SuggestionsResponse, W as FollowUserResult, y as FetchFollowListOptions, T as FollowListPage, a0 as FollowingResponse, G as FetchFollowingFeedOptions, _ as FollowingFeedResponse, $ as FollowingFeedVersion, z as FetchFollowProfilePageOptions, V as FollowProfilePageResponse, F as FeatureAllowlistResponse, h as AdminReviewQueues, u as FetchActivityFeedOptions, c as ActivityFeedResponse, g as ActivityTeaserResponse, a7 as HeatmapResponse, ag as MyGithubPullRequestsResponse, A as AccountCheckResult, aH as ReactionStatus, aG as ReactionResult, aF as ReactionError, aQ as RoadmapVotesResponse, j as CastRoadmapVoteResult, D as DeleteAccountResult, aL as ResetProfileResult, be as WipePreview, aK as RepoDeleteInput, ai as OrgClaimResult, ao as OrgProfileUpdateResult, aj as OrgDomainChallengeResult, ak as OrgDomainVerifyResult, al as OrgNotificationEmailAddResult, am as OrgNotificationEmailRemoveResult, ba as UserSettings } from './user-settings-
|
|
7
|
+
import { s as sifaQueryKeys, aJ as RefreshPdsResult, b6 as UpdateProfileOverrideInput, b7 as UpdateProfileSelfInput, b8 as UploadAvatarResult, b9 as UploadPronunciationAudioResult, at as PrimarySection, a$ as SubCategoryBulkResult, ay as ProfileLocationInput, q as ExternalAccountInput, n as CreateExternalAccountResult, bd as VerifyExternalAccountResult, E as EndorsementInput, l as ConfirmationInput, m as ConfirmationSubjectInput, a3 as GivenConfirmation, as as PendingConfirmationsPage, ae as InboxCounts, p as DismissUnlinkedPositionInput, b4 as UnlinkedPositionsResult, o as DismissCompletenessSignalInput, au as ProfileCompleteness, aR as RpgClaimableResponse, aV as RpgStatusResponse, aI as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, ad as HideProfileItemInput, a8 as HiddenActivityItem, ac as HideActivityItemInput, b2 as UnhideActivityItemInput, f as ActivityPreferences, aZ as SiteActivityPresetResponse, b5 as UpdateActivityPreferencesInput, a_ as StatsResponse, i as AppRegistryEntry, a9 as HiddenApp, b as AccountSummary, r as FeaturedProfile, aY as SimilarProfile, Q as FetchSuggestionsOptions, b1 as SuggestionsResponse, W as FollowUserResult, y as FetchFollowListOptions, T as FollowListPage, a0 as FollowingResponse, G as FetchFollowingFeedOptions, _ as FollowingFeedResponse, $ as FollowingFeedVersion, z as FetchFollowProfilePageOptions, V as FollowProfilePageResponse, F as FeatureAllowlistResponse, h as AdminReviewQueues, u as FetchActivityFeedOptions, c as ActivityFeedResponse, g as ActivityTeaserResponse, a7 as HeatmapResponse, ag as MyGithubPullRequestsResponse, A as AccountCheckResult, aH as ReactionStatus, aG as ReactionResult, aF as ReactionError, aQ as RoadmapVotesResponse, j as CastRoadmapVoteResult, D as DeleteAccountResult, aL as ResetProfileResult, be as WipePreview, aK as RepoDeleteInput, ai as OrgClaimResult, ao as OrgProfileUpdateResult, aj as OrgDomainChallengeResult, ak as OrgDomainVerifyResult, al as OrgNotificationEmailAddResult, am as OrgNotificationEmailRemoveResult, ba as UserSettings } from './user-settings-D4vdBf0A.cjs';
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
import { i as EntitySearchResponse, E as EntitySearchResult, c as EntityMintDomainResponse, g as EntityResolveDomainResponse, n as EntitySelectResponse, l as EntitySelectRequest, r as FeatureFlag } from './follow-profile-CgLLLQtJ.cjs';
|
|
10
10
|
import { O as OrgClaimRequestInput, a as OrgProfileUpdateRequestInput, b as OrgDomainChallengeRequestInput, c as OrgDomainVerifyRequestInput, d as OrgNotificationEmailRequestInput } from './org-settings-C73Sin5E.cjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a2 as WriteResult, a1 as SifaApiConfig, a0 as ApiFetchOptions, a3 as CreateResult, K as SiteActivityPreset, b as ActivityLabel, u as RepoDeleteResult, x as RepoInventory } from './types-
|
|
1
|
+
import { a2 as WriteResult, a1 as SifaApiConfig, a0 as ApiFetchOptions, a3 as CreateResult, K as SiteActivityPreset, b as ActivityLabel, u as RepoDeleteResult, x as RepoInventory } from './types-CQA_vO39.js';
|
|
2
2
|
import { p as ExternalAccount, B as PositionViewerConfirmation } from './index-DDh2RLvx.js';
|
|
3
3
|
import { a as AccountVerification } from './verification-providers-DeyGqaoC.js';
|
|
4
4
|
import { s as FollowProfileItem, p as FeatureAllowlistEntry, r as FeatureFlag } from './follow-profile-CVcA2w1v.js';
|