@singi-labs/sifa-sdk 0.19.44 → 0.19.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/dist/atproto/index.js +9 -3
  2. package/dist/atproto/index.js.map +1 -1
  3. package/dist/badge/index.js +5 -141
  4. package/dist/badge/index.js.map +1 -1
  5. package/dist/cards/adult-content.js +14 -0
  6. package/dist/cards/adult-content.js.map +1 -0
  7. package/dist/cards/app-url-patterns.js +369 -0
  8. package/dist/cards/app-url-patterns.js.map +1 -0
  9. package/dist/cards/index.js +24 -0
  10. package/dist/cards/index.js.map +1 -0
  11. package/dist/cards/resolve-card-url.js +198 -0
  12. package/dist/cards/resolve-card-url.js.map +1 -0
  13. package/dist/cards/visibility.js +45 -0
  14. package/dist/cards/visibility.js.map +1 -0
  15. package/dist/flags/index.js +4 -3
  16. package/dist/flags/index.js.map +1 -1
  17. package/dist/format/collapse-contributors.js +19 -0
  18. package/dist/format/collapse-contributors.js.map +1 -0
  19. package/dist/format/company-name.js +61 -0
  20. package/dist/format/company-name.js.map +1 -0
  21. package/dist/format/compare-text.js +9 -0
  22. package/dist/format/compare-text.js.map +1 -0
  23. package/dist/format/doi.js +8 -0
  24. package/dist/format/doi.js.map +1 -0
  25. package/dist/format/embed.js +131 -0
  26. package/dist/format/embed.js.map +1 -0
  27. package/dist/format/endorsement-context.js +35 -0
  28. package/dist/format/endorsement-context.js.map +1 -0
  29. package/dist/format/format-display-url.js +42 -0
  30. package/dist/format/format-display-url.js.map +1 -0
  31. package/dist/format/format-duration.js +13 -0
  32. package/dist/format/format-duration.js.map +1 -0
  33. package/dist/format/format-time.js +30 -0
  34. package/dist/format/format-time.js.map +1 -0
  35. package/dist/format/handle-utils.js +19 -0
  36. package/dist/format/handle-utils.js.map +1 -0
  37. package/dist/format/index.js +100 -0
  38. package/dist/format/index.js.map +1 -0
  39. package/dist/format/location-segments.js +29 -0
  40. package/dist/format/location-segments.js.map +1 -0
  41. package/dist/format/location-utils.js +42 -0
  42. package/dist/format/location-utils.js.map +1 -0
  43. package/dist/format/meta-description.js +35 -0
  44. package/dist/format/meta-description.js.map +1 -0
  45. package/dist/format/normalize-company-key.js +12 -0
  46. package/dist/format/normalize-company-key.js.map +1 -0
  47. package/dist/format/normalize-legal-form.js +71 -0
  48. package/dist/format/normalize-legal-form.js.map +1 -0
  49. package/dist/format/pds-utils.js +73 -0
  50. package/dist/format/pds-utils.js.map +1 -0
  51. package/dist/format/sort-by-date.js +39 -0
  52. package/dist/format/sort-by-date.js.map +1 -0
  53. package/dist/format/summarize-deliveries.js +37 -0
  54. package/dist/format/summarize-deliveries.js.map +1 -0
  55. package/dist/format/talk-slug.js +21 -0
  56. package/dist/format/talk-slug.js.map +1 -0
  57. package/dist/format/text-sanitize.js +29 -0
  58. package/dist/format/text-sanitize.js.map +1 -0
  59. package/dist/format/text-truncate.js +14 -0
  60. package/dist/format/text-truncate.js.map +1 -0
  61. package/dist/format/time-utils.js +19 -0
  62. package/dist/format/time-utils.js.map +1 -0
  63. package/dist/format/timeline.js +29 -0
  64. package/dist/format/timeline.js.map +1 -0
  65. package/dist/format/wcag-contrast.js +34 -0
  66. package/dist/format/wcag-contrast.js.map +1 -0
  67. package/dist/import/index.js +22 -0
  68. package/dist/import/index.js.map +1 -0
  69. package/dist/import/presentation-csv.js +116 -0
  70. package/dist/import/presentation-csv.js.map +1 -0
  71. package/dist/index.cjs +1 -1
  72. package/dist/index.js +675 -7086
  73. package/dist/index.js.map +1 -1
  74. package/dist/jev/index.js +18 -5
  75. package/dist/jev/index.js.map +1 -1
  76. package/dist/jsonld/index.js +30 -987
  77. package/dist/jsonld/index.js.map +1 -1
  78. package/dist/jsonld/profile.js +222 -0
  79. package/dist/jsonld/profile.js.map +1 -0
  80. package/dist/jsonld/terms.js +496 -0
  81. package/dist/jsonld/terms.js.map +1 -0
  82. package/dist/jsonld/url.js +17 -0
  83. package/dist/jsonld/url.js.map +1 -0
  84. package/dist/jsonld/works-graph.js +41 -0
  85. package/dist/jsonld/works-graph.js.map +1 -0
  86. package/dist/jsonld/works.js +178 -0
  87. package/dist/jsonld/works.js.map +1 -0
  88. package/dist/logic/actor-identity.js +8 -0
  89. package/dist/logic/actor-identity.js.map +1 -0
  90. package/dist/logic/agent-ref.js +24 -0
  91. package/dist/logic/agent-ref.js.map +1 -0
  92. package/dist/logic/company-page-indexable.js +23 -0
  93. package/dist/logic/company-page-indexable.js.map +1 -0
  94. package/dist/logic/date-lookahead.js +31 -0
  95. package/dist/logic/date-lookahead.js.map +1 -0
  96. package/dist/logic/domain-detect.js +43 -0
  97. package/dist/logic/domain-detect.js.map +1 -0
  98. package/dist/logic/entity-disambiguation.js +24 -0
  99. package/dist/logic/entity-disambiguation.js.map +1 -0
  100. package/dist/logic/entity-ref-anchor.js +33 -0
  101. package/dist/logic/entity-ref-anchor.js.map +1 -0
  102. package/dist/logic/index.js +91 -0
  103. package/dist/logic/index.js.map +1 -0
  104. package/dist/logic/org-floor.js +66 -0
  105. package/dist/logic/org-floor.js.map +1 -0
  106. package/dist/logic/primary-item.js +9 -0
  107. package/dist/logic/primary-item.js.map +1 -0
  108. package/dist/logic/primary-position.js +16 -0
  109. package/dist/logic/primary-position.js.map +1 -0
  110. package/dist/logic/profile-completeness.js +21 -0
  111. package/dist/logic/profile-completeness.js.map +1 -0
  112. package/dist/logic/profile-dimensions.js +50 -0
  113. package/dist/logic/profile-dimensions.js.map +1 -0
  114. package/dist/logic/profile-summary.js +23 -0
  115. package/dist/logic/profile-summary.js.map +1 -0
  116. package/dist/logic/pseudo-employer.js +34 -0
  117. package/dist/logic/pseudo-employer.js.map +1 -0
  118. package/dist/logic/recent-activity.js +10 -0
  119. package/dist/logic/recent-activity.js.map +1 -0
  120. package/dist/logic/self-app.js +10 -0
  121. package/dist/logic/self-app.js.map +1 -0
  122. package/dist/{org-BCrvebcf.d.ts → org-CxTEjjrm.d.ts} +1 -1
  123. package/dist/{org-settings-C73Sin5E.d.ts → org-settings-BShvhyFp.d.ts} +1 -1
  124. package/dist/profile/headline-role-dedupe.js +12 -0
  125. package/dist/profile/headline-role-dedupe.js.map +1 -0
  126. package/dist/profile/highlights.js +200 -0
  127. package/dist/profile/highlights.js.map +1 -0
  128. package/dist/profile/index.js +66 -0
  129. package/dist/profile/index.js.map +1 -0
  130. package/dist/profile/involvement-grouping.js +31 -0
  131. package/dist/profile/involvement-grouping.js.map +1 -0
  132. package/dist/profile/language-sort.js +24 -0
  133. package/dist/profile/language-sort.js.map +1 -0
  134. package/dist/profile/publication-versions.js +98 -0
  135. package/dist/profile/publication-versions.js.map +1 -0
  136. package/dist/profile/range-sort.js +14 -0
  137. package/dist/profile/range-sort.js.map +1 -0
  138. package/dist/profile/section-model.js +122 -0
  139. package/dist/profile/section-model.js.map +1 -0
  140. package/dist/profile/section-sorts.js +33 -0
  141. package/dist/profile/section-sorts.js.map +1 -0
  142. package/dist/publishers/index.js +16 -0
  143. package/dist/publishers/index.js.map +1 -0
  144. package/dist/publishers/registry.js +87 -0
  145. package/dist/publishers/registry.js.map +1 -0
  146. package/dist/publishing/index.js +46 -184
  147. package/dist/publishing/index.js.map +1 -1
  148. package/dist/publishing/linkblog.js +42 -0
  149. package/dist/publishing/linkblog.js.map +1 -0
  150. package/dist/publishing/registry.js +32 -0
  151. package/dist/publishing/registry.js.map +1 -0
  152. package/dist/publishing/schemas.js +74 -0
  153. package/dist/publishing/schemas.js.map +1 -0
  154. package/dist/publishing/types.js +32 -0
  155. package/dist/publishing/types.js.map +1 -0
  156. package/dist/query/client.js +119 -0
  157. package/dist/query/client.js.map +1 -0
  158. package/dist/query/config.js +23 -0
  159. package/dist/query/config.js.map +1 -0
  160. package/dist/query/fetchers/accounts.js +29 -0
  161. package/dist/query/fetchers/accounts.js.map +1 -0
  162. package/dist/query/fetchers/activity-items-hide.js +31 -0
  163. package/dist/query/fetchers/activity-items-hide.js.map +1 -0
  164. package/dist/query/fetchers/activity.js +61 -0
  165. package/dist/query/fetchers/activity.js.map +1 -0
  166. package/dist/query/fetchers/actor.js +30 -0
  167. package/dist/query/fetchers/actor.js.map +1 -0
  168. package/dist/query/fetchers/admin-feature-allowlists.js +41 -0
  169. package/dist/query/fetchers/admin-feature-allowlists.js.map +1 -0
  170. package/dist/query/fetchers/admin-review-queues.js +30 -0
  171. package/dist/query/fetchers/admin-review-queues.js.map +1 -0
  172. package/dist/query/fetchers/apps.js +31 -0
  173. package/dist/query/fetchers/apps.js.map +1 -0
  174. package/dist/query/fetchers/bsky-preferences.js +55 -0
  175. package/dist/query/fetchers/bsky-preferences.js.map +1 -0
  176. package/dist/query/fetchers/confirmations.js +55 -0
  177. package/dist/query/fetchers/confirmations.js.map +1 -0
  178. package/dist/query/fetchers/destructive.js +34 -0
  179. package/dist/query/fetchers/destructive.js.map +1 -0
  180. package/dist/query/fetchers/discovery.js +67 -0
  181. package/dist/query/fetchers/discovery.js.map +1 -0
  182. package/dist/query/fetchers/education.js +23 -0
  183. package/dist/query/fetchers/education.js.map +1 -0
  184. package/dist/query/fetchers/endorsement-inbox.js +36 -0
  185. package/dist/query/fetchers/endorsement-inbox.js.map +1 -0
  186. package/dist/query/fetchers/endorsement.js +23 -0
  187. package/dist/query/fetchers/endorsement.js.map +1 -0
  188. package/dist/query/fetchers/endorsements.js +20 -0
  189. package/dist/query/fetchers/endorsements.js.map +1 -0
  190. package/dist/query/fetchers/entities.js +65 -0
  191. package/dist/query/fetchers/entities.js.map +1 -0
  192. package/dist/query/fetchers/external-accounts.js +74 -0
  193. package/dist/query/fetchers/external-accounts.js.map +1 -0
  194. package/dist/query/fetchers/follow-extras.js +38 -0
  195. package/dist/query/fetchers/follow-extras.js.map +1 -0
  196. package/dist/query/fetchers/follow.js +105 -0
  197. package/dist/query/fetchers/follow.js.map +1 -0
  198. package/dist/query/fetchers/get-profile-view.js +21 -0
  199. package/dist/query/fetchers/get-profile-view.js.map +1 -0
  200. package/dist/query/fetchers/github-prs.js +45 -0
  201. package/dist/query/fetchers/github-prs.js.map +1 -0
  202. package/dist/query/fetchers/inbox.js +29 -0
  203. package/dist/query/fetchers/inbox.js.map +1 -0
  204. package/dist/query/fetchers/index.d.ts +2 -2
  205. package/dist/query/fetchers/index.js +360 -2045
  206. package/dist/query/fetchers/index.js.map +1 -1
  207. package/dist/query/fetchers/investments.js +18 -0
  208. package/dist/query/fetchers/investments.js.map +1 -0
  209. package/dist/query/fetchers/keytrace-claims.js +23 -0
  210. package/dist/query/fetchers/keytrace-claims.js.map +1 -0
  211. package/dist/query/fetchers/marque-domains.js +23 -0
  212. package/dist/query/fetchers/marque-domains.js.map +1 -0
  213. package/dist/query/fetchers/network-map.js +36 -0
  214. package/dist/query/fetchers/network-map.js.map +1 -0
  215. package/dist/query/fetchers/org.js +48 -0
  216. package/dist/query/fetchers/org.js.map +1 -0
  217. package/dist/query/fetchers/positions.js +77 -0
  218. package/dist/query/fetchers/positions.js.map +1 -0
  219. package/dist/query/fetchers/profile-completeness.js +45 -0
  220. package/dist/query/fetchers/profile-completeness.js.map +1 -0
  221. package/dist/query/fetchers/profile-items-hide.js +36 -0
  222. package/dist/query/fetchers/profile-items-hide.js.map +1 -0
  223. package/dist/query/fetchers/profile-locations.js +23 -0
  224. package/dist/query/fetchers/profile-locations.js.map +1 -0
  225. package/dist/query/fetchers/profile-mutations.js +82 -0
  226. package/dist/query/fetchers/profile-mutations.js.map +1 -0
  227. package/dist/query/fetchers/profile-summary.js +14 -0
  228. package/dist/query/fetchers/profile-summary.js.map +1 -0
  229. package/dist/query/fetchers/profile.js +31 -0
  230. package/dist/query/fetchers/profile.js.map +1 -0
  231. package/dist/query/fetchers/publications.js +66 -0
  232. package/dist/query/fetchers/publications.js.map +1 -0
  233. package/dist/query/fetchers/quoted-posts.js +40 -0
  234. package/dist/query/fetchers/quoted-posts.js.map +1 -0
  235. package/dist/query/fetchers/reactions.js +85 -0
  236. package/dist/query/fetchers/reactions.js.map +1 -0
  237. package/dist/query/fetchers/received-endorsements.js +20 -0
  238. package/dist/query/fetchers/received-endorsements.js.map +1 -0
  239. package/dist/query/fetchers/reciprocity.js +23 -0
  240. package/dist/query/fetchers/reciprocity.js.map +1 -0
  241. package/dist/query/fetchers/records.js +27 -0
  242. package/dist/query/fetchers/records.js.map +1 -0
  243. package/dist/query/fetchers/repo-inventory.js +23 -0
  244. package/dist/query/fetchers/repo-inventory.js.map +1 -0
  245. package/dist/query/fetchers/roadmap.js +73 -0
  246. package/dist/query/fetchers/roadmap.js.map +1 -0
  247. package/dist/query/fetchers/rpg.js +36 -0
  248. package/dist/query/fetchers/rpg.js.map +1 -0
  249. package/dist/query/fetchers/search.js +78 -0
  250. package/dist/query/fetchers/search.js.map +1 -0
  251. package/dist/query/fetchers/section-primary.js +23 -0
  252. package/dist/query/fetchers/section-primary.js.map +1 -0
  253. package/dist/query/fetchers/skills.js +30 -0
  254. package/dist/query/fetchers/skills.js.map +1 -0
  255. package/dist/query/fetchers/speakers.js +42 -0
  256. package/dist/query/fetchers/speakers.js.map +1 -0
  257. package/dist/query/fetchers/stats.js +16 -0
  258. package/dist/query/fetchers/stats.js.map +1 -0
  259. package/dist/query/fetchers/stream.js +30 -0
  260. package/dist/query/fetchers/stream.js.map +1 -0
  261. package/dist/query/fetchers/unlinked-positions.js +30 -0
  262. package/dist/query/fetchers/unlinked-positions.js.map +1 -0
  263. package/dist/query/hooks/index.d.ts +3 -3
  264. package/dist/query/hooks/index.js +283 -3555
  265. package/dist/query/hooks/index.js.map +1 -1
  266. package/dist/query/hooks/use-accounts.js +19 -0
  267. package/dist/query/hooks/use-accounts.js.map +1 -0
  268. package/dist/query/hooks/use-activity-items-hide.js +52 -0
  269. package/dist/query/hooks/use-activity-items-hide.js.map +1 -0
  270. package/dist/query/hooks/use-activity.js +44 -0
  271. package/dist/query/hooks/use-activity.js.map +1 -0
  272. package/dist/query/hooks/use-admin-review-queues.js +21 -0
  273. package/dist/query/hooks/use-admin-review-queues.js.map +1 -0
  274. package/dist/query/hooks/use-apps.js +31 -0
  275. package/dist/query/hooks/use-apps.js.map +1 -0
  276. package/dist/query/hooks/use-bsky-content-prefs.js +45 -0
  277. package/dist/query/hooks/use-bsky-content-prefs.js.map +1 -0
  278. package/dist/query/hooks/use-confirmations.js +121 -0
  279. package/dist/query/hooks/use-confirmations.js.map +1 -0
  280. package/dist/query/hooks/use-create-position.js +28 -0
  281. package/dist/query/hooks/use-create-position.js.map +1 -0
  282. package/dist/query/hooks/use-destructive.js +63 -0
  283. package/dist/query/hooks/use-destructive.js.map +1 -0
  284. package/dist/query/hooks/use-discovery.js +53 -0
  285. package/dist/query/hooks/use-discovery.js.map +1 -0
  286. package/dist/query/hooks/use-education-mutations.js +67 -0
  287. package/dist/query/hooks/use-education-mutations.js.map +1 -0
  288. package/dist/query/hooks/use-endorsement-inbox.js +80 -0
  289. package/dist/query/hooks/use-endorsement-inbox.js.map +1 -0
  290. package/dist/query/hooks/use-endorsement-mutations.js +33 -0
  291. package/dist/query/hooks/use-endorsement-mutations.js.map +1 -0
  292. package/dist/query/hooks/use-endorsement.js +20 -0
  293. package/dist/query/hooks/use-endorsement.js.map +1 -0
  294. package/dist/query/hooks/use-entity-search.js +73 -0
  295. package/dist/query/hooks/use-entity-search.js.map +1 -0
  296. package/dist/query/hooks/use-external-accounts.js +143 -0
  297. package/dist/query/hooks/use-external-accounts.js.map +1 -0
  298. package/dist/query/hooks/use-feature-allowlist.js +104 -0
  299. package/dist/query/hooks/use-feature-allowlist.js.map +1 -0
  300. package/dist/query/hooks/use-follow-extras.js +38 -0
  301. package/dist/query/hooks/use-follow-extras.js.map +1 -0
  302. package/dist/query/hooks/use-follow.js +113 -0
  303. package/dist/query/hooks/use-follow.js.map +1 -0
  304. package/dist/query/hooks/use-get-profile-view.js +20 -0
  305. package/dist/query/hooks/use-get-profile-view.js.map +1 -0
  306. package/dist/query/hooks/use-github-prs.js +21 -0
  307. package/dist/query/hooks/use-github-prs.js.map +1 -0
  308. package/dist/query/hooks/use-inbox.js +19 -0
  309. package/dist/query/hooks/use-inbox.js.map +1 -0
  310. package/dist/query/hooks/use-investment-mutations.js +65 -0
  311. package/dist/query/hooks/use-investment-mutations.js.map +1 -0
  312. package/dist/query/hooks/use-keytrace-claims.js +50 -0
  313. package/dist/query/hooks/use-keytrace-claims.js.map +1 -0
  314. package/dist/query/hooks/use-location-mutations.js +71 -0
  315. package/dist/query/hooks/use-location-mutations.js.map +1 -0
  316. package/dist/query/hooks/use-marque-domains.js +50 -0
  317. package/dist/query/hooks/use-marque-domains.js.map +1 -0
  318. package/dist/query/hooks/use-org-claim.js +29 -0
  319. package/dist/query/hooks/use-org-claim.js.map +1 -0
  320. package/dist/query/hooks/use-org-domains.js +28 -0
  321. package/dist/query/hooks/use-org-domains.js.map +1 -0
  322. package/dist/query/hooks/use-org-notification-emails.js +28 -0
  323. package/dist/query/hooks/use-org-notification-emails.js.map +1 -0
  324. package/dist/query/hooks/use-org-profile-settings.js +29 -0
  325. package/dist/query/hooks/use-org-profile-settings.js.map +1 -0
  326. package/dist/query/hooks/use-org-profile.js +21 -0
  327. package/dist/query/hooks/use-org-profile.js.map +1 -0
  328. package/dist/query/hooks/use-position-mutations.js +128 -0
  329. package/dist/query/hooks/use-position-mutations.js.map +1 -0
  330. package/dist/query/hooks/use-profile-completeness.js +21 -0
  331. package/dist/query/hooks/use-profile-completeness.js.map +1 -0
  332. package/dist/query/hooks/use-profile-items-hide.js +53 -0
  333. package/dist/query/hooks/use-profile-items-hide.js.map +1 -0
  334. package/dist/query/hooks/use-profile-mutations.js +143 -0
  335. package/dist/query/hooks/use-profile-mutations.js.map +1 -0
  336. package/dist/query/hooks/use-profile.js +30 -0
  337. package/dist/query/hooks/use-profile.js.map +1 -0
  338. package/dist/query/hooks/use-publication-mutations.js +90 -0
  339. package/dist/query/hooks/use-publication-mutations.js.map +1 -0
  340. package/dist/query/hooks/use-reaction-mutations.js +48 -0
  341. package/dist/query/hooks/use-reaction-mutations.js.map +1 -0
  342. package/dist/query/hooks/use-reactions.js +32 -0
  343. package/dist/query/hooks/use-reactions.js.map +1 -0
  344. package/dist/query/hooks/use-received-endorsements.js +23 -0
  345. package/dist/query/hooks/use-received-endorsements.js.map +1 -0
  346. package/dist/query/hooks/use-reciprocity.js +19 -0
  347. package/dist/query/hooks/use-reciprocity.js.map +1 -0
  348. package/dist/query/hooks/use-record-mutations.js +67 -0
  349. package/dist/query/hooks/use-record-mutations.js.map +1 -0
  350. package/dist/query/hooks/use-repo-inventory.js +43 -0
  351. package/dist/query/hooks/use-repo-inventory.js.map +1 -0
  352. package/dist/query/hooks/use-roadmap-mutations.js +51 -0
  353. package/dist/query/hooks/use-roadmap-mutations.js.map +1 -0
  354. package/dist/query/hooks/use-roadmap.js +31 -0
  355. package/dist/query/hooks/use-roadmap.js.map +1 -0
  356. package/dist/query/hooks/use-search.js +63 -0
  357. package/dist/query/hooks/use-search.js.map +1 -0
  358. package/dist/query/hooks/use-section-primary-mutations.js +53 -0
  359. package/dist/query/hooks/use-section-primary-mutations.js.map +1 -0
  360. package/dist/query/hooks/use-skill-mutations.js +91 -0
  361. package/dist/query/hooks/use-skill-mutations.js.map +1 -0
  362. package/dist/query/hooks/use-stats.js +19 -0
  363. package/dist/query/hooks/use-stats.js.map +1 -0
  364. package/dist/query/hooks/use-stream.js +20 -0
  365. package/dist/query/hooks/use-stream.js.map +1 -0
  366. package/dist/query/hooks/use-unlinked-positions.js +45 -0
  367. package/dist/query/hooks/use-unlinked-positions.js.map +1 -0
  368. package/dist/query/index.d.ts +4 -4
  369. package/dist/query/index.js +685 -3744
  370. package/dist/query/index.js.map +1 -1
  371. package/dist/query/keys.js +138 -0
  372. package/dist/query/keys.js.map +1 -0
  373. package/dist/repo/groups.js +81 -0
  374. package/dist/repo/groups.js.map +1 -0
  375. package/dist/repo/index.js +9 -0
  376. package/dist/repo/index.js.map +1 -0
  377. package/dist/repo/labels.js +121 -0
  378. package/dist/repo/labels.js.map +1 -0
  379. package/dist/repo/types.js +1 -0
  380. package/dist/repo/types.js.map +1 -0
  381. package/dist/resume/index.js +5 -179
  382. package/dist/resume/index.js.map +1 -1
  383. package/dist/resume/json-resume.js +153 -0
  384. package/dist/resume/json-resume.js.map +1 -0
  385. package/dist/roadmap/index.js +101 -0
  386. package/dist/roadmap/index.js.map +1 -0
  387. package/dist/rpg/catalog.js +101 -0
  388. package/dist/rpg/catalog.js.map +1 -0
  389. package/dist/rpg/index.js +13 -116
  390. package/dist/rpg/index.js.map +1 -1
  391. package/dist/rpg/unlocks.js +21 -0
  392. package/dist/rpg/unlocks.js.map +1 -0
  393. package/dist/schemas/blob-ref.js +12 -0
  394. package/dist/schemas/blob-ref.js.map +1 -0
  395. package/dist/schemas/confirmation.js +23 -0
  396. package/dist/schemas/confirmation.js.map +1 -0
  397. package/dist/schemas/endorsement-confirmation.js +18 -0
  398. package/dist/schemas/endorsement-confirmation.js.map +1 -0
  399. package/dist/schemas/endorsement.js +19 -0
  400. package/dist/schemas/endorsement.js.map +1 -0
  401. package/dist/schemas/entity.js +74 -0
  402. package/dist/schemas/entity.js.map +1 -0
  403. package/dist/schemas/feed.js +73 -0
  404. package/dist/schemas/feed.js.map +1 -0
  405. package/dist/schemas/follow-profile.js +32 -0
  406. package/dist/schemas/follow-profile.js.map +1 -0
  407. package/dist/schemas/graph-follow.js +19 -0
  408. package/dist/schemas/graph-follow.js.map +1 -0
  409. package/dist/schemas/index.js +164 -629
  410. package/dist/schemas/index.js.map +1 -1
  411. package/dist/schemas/org-employment-attestation.js +28 -0
  412. package/dist/schemas/org-employment-attestation.js.map +1 -0
  413. package/dist/schemas/org-profile.js +64 -0
  414. package/dist/schemas/org-profile.js.map +1 -0
  415. package/dist/schemas/profile-certification.js +28 -0
  416. package/dist/schemas/profile-certification.js.map +1 -0
  417. package/dist/schemas/profile-course.js +32 -0
  418. package/dist/schemas/profile-course.js.map +1 -0
  419. package/dist/schemas/profile-education.js +33 -0
  420. package/dist/schemas/profile-education.js.map +1 -0
  421. package/dist/schemas/profile-external-account.js +15 -0
  422. package/dist/schemas/profile-external-account.js.map +1 -0
  423. package/dist/schemas/profile-honor.js +18 -0
  424. package/dist/schemas/profile-honor.js.map +1 -0
  425. package/dist/schemas/profile-investment.js +48 -0
  426. package/dist/schemas/profile-investment.js.map +1 -0
  427. package/dist/schemas/profile-involvement.js +47 -0
  428. package/dist/schemas/profile-involvement.js.map +1 -0
  429. package/dist/schemas/profile-language.js +12 -0
  430. package/dist/schemas/profile-language.js.map +1 -0
  431. package/dist/schemas/profile-position.js +42 -0
  432. package/dist/schemas/profile-position.js.map +1 -0
  433. package/dist/schemas/profile-presentation-delivery.js +38 -0
  434. package/dist/schemas/profile-presentation-delivery.js.map +1 -0
  435. package/dist/schemas/profile-presentation.js +36 -0
  436. package/dist/schemas/profile-presentation.js.map +1 -0
  437. package/dist/schemas/profile-project.js +48 -0
  438. package/dist/schemas/profile-project.js.map +1 -0
  439. package/dist/schemas/profile-publication.js +30 -0
  440. package/dist/schemas/profile-publication.js.map +1 -0
  441. package/dist/schemas/profile-self.js +22 -0
  442. package/dist/schemas/profile-self.js.map +1 -0
  443. package/dist/schemas/profile-skill.js +13 -0
  444. package/dist/schemas/profile-skill.js.map +1 -0
  445. package/dist/schemas/profile-volunteering.js +20 -0
  446. package/dist/schemas/profile-volunteering.js.map +1 -0
  447. package/dist/schemas/shared.js +56 -0
  448. package/dist/schemas/shared.js.map +1 -0
  449. package/dist/schemas/write/certification.js +16 -0
  450. package/dist/schemas/write/certification.js.map +1 -0
  451. package/dist/schemas/write/course.js +36 -0
  452. package/dist/schemas/write/course.js.map +1 -0
  453. package/dist/schemas/write/education.js +18 -0
  454. package/dist/schemas/write/education.js.map +1 -0
  455. package/dist/schemas/write/external-account.js +13 -0
  456. package/dist/schemas/write/external-account.js.map +1 -0
  457. package/dist/schemas/write/honor.js +14 -0
  458. package/dist/schemas/write/honor.js.map +1 -0
  459. package/dist/schemas/write/index.d.ts +1 -1
  460. package/dist/schemas/write/index.js +89 -593
  461. package/dist/schemas/write/index.js.map +1 -1
  462. package/dist/schemas/write/investment.js +32 -0
  463. package/dist/schemas/write/investment.js.map +1 -0
  464. package/dist/schemas/write/involvement.js +34 -0
  465. package/dist/schemas/write/involvement.js.map +1 -0
  466. package/dist/schemas/write/language.js +10 -0
  467. package/dist/schemas/write/language.js.map +1 -0
  468. package/dist/schemas/write/org-claim.js +56 -0
  469. package/dist/schemas/write/org-claim.js.map +1 -0
  470. package/dist/schemas/write/org-employment-attestation.js +19 -0
  471. package/dist/schemas/write/org-employment-attestation.js.map +1 -0
  472. package/dist/schemas/write/org-profile.js +54 -0
  473. package/dist/schemas/write/org-profile.js.map +1 -0
  474. package/dist/schemas/write/org-settings.js +81 -0
  475. package/dist/schemas/write/org-settings.js.map +1 -0
  476. package/dist/schemas/write/position.js +24 -0
  477. package/dist/schemas/write/position.js.map +1 -0
  478. package/dist/schemas/write/presentation-delivery.js +34 -0
  479. package/dist/schemas/write/presentation-delivery.js.map +1 -0
  480. package/dist/schemas/write/presentation.js +23 -0
  481. package/dist/schemas/write/presentation.js.map +1 -0
  482. package/dist/schemas/write/profile-location.js +21 -0
  483. package/dist/schemas/write/profile-location.js.map +1 -0
  484. package/dist/schemas/write/profile-self.js +27 -0
  485. package/dist/schemas/write/profile-self.js.map +1 -0
  486. package/dist/schemas/write/project.js +27 -0
  487. package/dist/schemas/write/project.js.map +1 -0
  488. package/dist/schemas/write/publication.js +41 -0
  489. package/dist/schemas/write/publication.js.map +1 -0
  490. package/dist/schemas/write/shared.js +96 -0
  491. package/dist/schemas/write/shared.js.map +1 -0
  492. package/dist/schemas/write/skill.js +18 -0
  493. package/dist/schemas/write/skill.js.map +1 -0
  494. package/dist/schemas/write/volunteering.js +16 -0
  495. package/dist/schemas/write/volunteering.js.map +1 -0
  496. package/dist/stream/activity-item.js +1 -0
  497. package/dist/stream/activity-item.js.map +1 -0
  498. package/dist/stream/index.js +49 -0
  499. package/dist/stream/index.js.map +1 -0
  500. package/dist/stream/stream-card-vm-schema.js +265 -0
  501. package/dist/stream/stream-card-vm-schema.js.map +1 -0
  502. package/dist/stream/stream-card-vm.js +1 -0
  503. package/dist/stream/stream-card-vm.js.map +1 -0
  504. package/dist/stream/to-stream-card-vm.js +793 -0
  505. package/dist/stream/to-stream-card-vm.js.map +1 -0
  506. package/dist/stream/two-tier.js +30 -0
  507. package/dist/stream/two-tier.js.map +1 -0
  508. package/dist/stream/verbs.js +120 -0
  509. package/dist/stream/verbs.js.map +1 -0
  510. package/dist/taxonomy/activity-tiers.js +956 -0
  511. package/dist/taxonomy/activity-tiers.js.map +1 -0
  512. package/dist/taxonomy/app-categories.js +42 -0
  513. package/dist/taxonomy/app-categories.js.map +1 -0
  514. package/dist/taxonomy/app-category-map.js +166 -0
  515. package/dist/taxonomy/app-category-map.js.map +1 -0
  516. package/dist/taxonomy/artifact-link-kind.js +29 -0
  517. package/dist/taxonomy/artifact-link-kind.js.map +1 -0
  518. package/dist/taxonomy/calendar-event.js +28 -0
  519. package/dist/taxonomy/calendar-event.js.map +1 -0
  520. package/dist/taxonomy/continents.js +215 -0
  521. package/dist/taxonomy/continents.js.map +1 -0
  522. package/dist/taxonomy/countries.js +203 -0
  523. package/dist/taxonomy/countries.js.map +1 -0
  524. package/dist/taxonomy/course-role.js +37 -0
  525. package/dist/taxonomy/course-role.js.map +1 -0
  526. package/dist/taxonomy/employment-type.js +82 -0
  527. package/dist/taxonomy/employment-type.js.map +1 -0
  528. package/dist/taxonomy/eqf-level.js +59 -0
  529. package/dist/taxonomy/eqf-level.js.map +1 -0
  530. package/dist/taxonomy/index.js +263 -0
  531. package/dist/taxonomy/index.js.map +1 -0
  532. package/dist/taxonomy/industry-taxonomy.js +281 -0
  533. package/dist/taxonomy/industry-taxonomy.js.map +1 -0
  534. package/dist/taxonomy/investment.js +54 -0
  535. package/dist/taxonomy/investment.js.map +1 -0
  536. package/dist/taxonomy/involvement-kind.js +30 -0
  537. package/dist/taxonomy/involvement-kind.js.map +1 -0
  538. package/dist/taxonomy/open-to.js +128 -0
  539. package/dist/taxonomy/open-to.js.map +1 -0
  540. package/dist/taxonomy/platforms.js +56 -0
  541. package/dist/taxonomy/platforms.js.map +1 -0
  542. package/dist/taxonomy/presentation-link-type.js +22 -0
  543. package/dist/taxonomy/presentation-link-type.js.map +1 -0
  544. package/dist/taxonomy/presentation-role.js +21 -0
  545. package/dist/taxonomy/presentation-role.js.map +1 -0
  546. package/dist/taxonomy/publication-type.js +54 -0
  547. package/dist/taxonomy/publication-type.js.map +1 -0
  548. package/dist/taxonomy/relational.js +25 -0
  549. package/dist/taxonomy/relational.js.map +1 -0
  550. package/dist/taxonomy/search-filter-defs.js +66 -0
  551. package/dist/taxonomy/search-filter-defs.js.map +1 -0
  552. package/dist/taxonomy/skill-categories.js +28 -0
  553. package/dist/taxonomy/skill-categories.js.map +1 -0
  554. package/dist/taxonomy/skill-display-groups.js +12 -0
  555. package/dist/taxonomy/skill-display-groups.js.map +1 -0
  556. package/dist/taxonomy/skill-grouping.js +90 -0
  557. package/dist/taxonomy/skill-grouping.js.map +1 -0
  558. package/dist/taxonomy/verification-providers.js +69 -0
  559. package/dist/taxonomy/verification-providers.js.map +1 -0
  560. package/dist/taxonomy/workplace-type.js +38 -0
  561. package/dist/taxonomy/workplace-type.js.map +1 -0
  562. package/dist/tokens/colors.js +11 -0
  563. package/dist/tokens/colors.js.map +1 -0
  564. package/dist/tokens/icons.js +15 -0
  565. package/dist/tokens/icons.js.map +1 -0
  566. package/dist/tokens/index.js +10 -39
  567. package/dist/tokens/index.js.map +1 -1
  568. package/dist/tokens/typography.js +23 -0
  569. package/dist/tokens/typography.js.map +1 -0
  570. package/dist/types/index.js +10 -0
  571. package/dist/types/index.js.map +1 -0
  572. package/dist/types/profile-view.js +1 -0
  573. package/dist/types/profile-view.js.map +1 -0
  574. package/dist/{use-org-notification-emails-0hjt-dEw.d.ts → use-org-notification-emails-CWWi1D8t.d.ts} +2 -2
  575. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/taxonomy/activity-tiers.ts","../../src/taxonomy/activity-tiers.json"],"sourcesContent":["import { z } from 'zod';\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\nconst tierMetaSchema = z.object({\n label: z.string().nullable(),\n description: z.string(),\n shownOnPublicProfile: z.boolean(),\n});\n\nconst lexiconEntrySchema = z.object({\n tier: z.enum(['creation', 'action', 'filtered']),\n app: z.string().optional(),\n notes: z.string().optional(),\n});\n\nconst taxonomySchema = z.object({\n version: z.string(),\n updated: z.string(),\n tiers: z.object({\n creation: tierMetaSchema,\n action: tierMetaSchema,\n filtered: tierMetaSchema,\n }),\n lexicons: z.record(z.string(), lexiconEntrySchema),\n});\n\nconst parsed: ActivityTaxonomy = taxonomySchema.parse(rawTaxonomy);\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","{\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 }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,42 @@
1
+ // src/taxonomy/app-categories.ts
2
+ var APP_CATEGORIES = {
3
+ Art: { phosphorIcon: "PaintBrush" },
4
+ Articles: { phosphorIcon: "Article" },
5
+ Chat: { phosphorIcon: "ChatsCircle" },
6
+ Code: { phosphorIcon: "Code" },
7
+ Domains: { phosphorIcon: "Globe" },
8
+ Endorsements: { phosphorIcon: "HandHeart" },
9
+ Events: { phosphorIcon: "CalendarBlank" },
10
+ Impact: { phosphorIcon: "Certificate" },
11
+ Links: { phosphorIcon: "LinkSimple" },
12
+ Lists: { phosphorIcon: "ListBullets" },
13
+ Music: { phosphorIcon: "MusicNote" },
14
+ Pages: { phosphorIcon: "Browser" },
15
+ Pastes: { phosphorIcon: "Clipboard" },
16
+ Photos: { phosphorIcon: "Camera" },
17
+ Places: { phosphorIcon: "MapPin" },
18
+ Posts: { phosphorIcon: "ChatCircle" },
19
+ "Q&A": { phosphorIcon: "Question" },
20
+ Recipes: { phosphorIcon: "CookingPot" },
21
+ Research: { phosphorIcon: "Path" },
22
+ Reviews: { phosphorIcon: "Star" },
23
+ Slides: { phosphorIcon: "Presentation" },
24
+ Social: { phosphorIcon: "UsersThree" },
25
+ Translations: { phosphorIcon: "Translate" },
26
+ Verification: { phosphorIcon: "Key" },
27
+ Video: { phosphorIcon: "VideoCamera" }
28
+ };
29
+ var APP_CATEGORY_IDS = Object.keys(APP_CATEGORIES);
30
+ function isAppCategory(value) {
31
+ return Object.prototype.hasOwnProperty.call(APP_CATEGORIES, value);
32
+ }
33
+ function getAppCategoryIcon(category) {
34
+ return APP_CATEGORIES[category].phosphorIcon;
35
+ }
36
+ export {
37
+ APP_CATEGORIES,
38
+ APP_CATEGORY_IDS,
39
+ getAppCategoryIcon,
40
+ isAppCategory
41
+ };
42
+ //# sourceMappingURL=app-categories.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,166 @@
1
+ // src/taxonomy/app-category-map.ts
2
+ var APP_CATEGORY_MAP = {
3
+ // Backend-scanned (sifa-api APP_REGISTRY)
4
+ bluesky: "Posts",
5
+ tangled: "Code",
6
+ github: "Code",
7
+ // Posts ingested from a verified Fediverse (ActivityPub) account. Like
8
+ // github, there is no PDS collection behind it -- its own scanner owns the
9
+ // app-stats row.
10
+ fediverse: "Posts",
11
+ // Items ingested from a verified RSS or Atom feed: blogs, newsletters,
12
+ // podcast and channel feeds. Categorized as Articles rather than Posts
13
+ // because the common case is a long-form blog entry with a title.
14
+ rss: "Articles",
15
+ smokesignal: "Events",
16
+ flashes: "Photos",
17
+ grain: "Photos",
18
+ pixl: "Photos",
19
+ // pics.pixl.image — photo posts on pixl.pics
20
+ whitewind: "Articles",
21
+ frontpage: "Links",
22
+ pastesphere: "Pastes",
23
+ standard: "Articles",
24
+ aetheros: "Pages",
25
+ roomy: "Social",
26
+ keytrace: "Verification",
27
+ popfeed: "Reviews",
28
+ streamplace: "Video",
29
+ semble: "Research",
30
+ youandme: "Social",
31
+ leaflet: "Articles",
32
+ colibri: "Social",
33
+ collectivesocial: "Lists",
34
+ bookhive: "Reviews",
35
+ beaconbits: "Places",
36
+ passports: "Places",
37
+ asq: "Q&A",
38
+ spark: "Posts",
39
+ nooki: "Social",
40
+ atstore: "Reviews",
41
+ plyr: "Music",
42
+ anisota: "Posts",
43
+ atfund: "Endorsements",
44
+ crate: "Articles",
45
+ atmorsvp: "Events",
46
+ opensocial: "Social",
47
+ // eu.atcommons.member — a self-asserted declaration of belonging to a
48
+ // national AT Protocol community commons (atproto.nl, atproto.eu, ...).
49
+ // Same shape as the colibri / opensocial membership commitment.
50
+ atcommons: "Social",
51
+ // Kevara speaker-directory listing — a professional speaking-availability
52
+ // declaration (talk topics, formats like keynote/panel/conference-talk).
53
+ // Grouped under Events as the closest fit (speaking engagements).
54
+ kevara: "Events",
55
+ // Marque domain registrar — a domain registration record is a dated
56
+ // identity/ownership action, surfaced as a "registered a domain" event.
57
+ marque: "Domains",
58
+ // ATCR (io.atcr) — distributed OCI container registry. The portfolio entry
59
+ // is io.atcr.repo.page (a published repository with a markdown README);
60
+ // manifests and tags are low-level artifacts excluded backend-side.
61
+ atcr: "Code",
62
+ // Batch onboard — apps surfaced on high-volume profiles. Each gives its
63
+ // collections a named pill + category icon instead of a raw NSID.
64
+ mcp: "Code",
65
+ // app.mcp.server — published MCP servers (name/tools/language)
66
+ userinput: "Social",
67
+ // app.userinput — roadmap discussions + replies
68
+ minomobi: "Music",
69
+ // com.minomobi.music.composition — authored music
70
+ voxport: "Video",
71
+ // com.voxport.podcast.series — podcast series
72
+ badges: "Verification",
73
+ // community.lexicon.badge.award — signed earned credentials
74
+ atvouch: "Endorsements",
75
+ // dev.atvouch.graph.vouch — trust vouches
76
+ watsm: "Code",
77
+ // io.calabro.watsm.program — published WASM programs
78
+ plonk: "Pastes",
79
+ // li.plonk.paste — text pastes
80
+ alternativeproto: "Links",
81
+ // net.alternativeproto.submission — app-directory listings
82
+ papili: "Links",
83
+ // one.papili.post — link posts
84
+ vit: "Code",
85
+ // org.v-it.skill — published agent skills
86
+ lifepo: "Social",
87
+ // st.lifepo.lifeEvent — life-event timeline
88
+ streamthought: "Posts",
89
+ // stream.thought.blip — microblog thoughts
90
+ waow: "Photos",
91
+ // tech.waow.* — doodl drawings (dominant), polls, slides
92
+ lichen: "Pages",
93
+ // wiki.lichen — wiki notes + wikis
94
+ // Onboard from aramzs.xyz profile audit — new named pills.
95
+ aetherdocs: "Slides",
96
+ // os.aether.docs.presentation — authored slide decks
97
+ kich: "Recipes",
98
+ // io.kich.recipe.recipe — authored recipes
99
+ margin: "Research",
100
+ // at.margin.{note,annotation} — web-annotation notes with a body
101
+ // Onboard from moll.dev profile audit.
102
+ recipe: "Recipes",
103
+ // exchange.recipe.recipe — authored recipes on recipe.exchange
104
+ // Onboard from willow.sh profile audit.
105
+ guestbook: "Social",
106
+ // dev.baileytownsend.guestbook.entry — a note left on someone's cross-site guestbook
107
+ // Onboard from trezy.codes profile audit.
108
+ atmobb: "Social",
109
+ // app.atmobb.discussion.{thread,reply} — federated forum threads + replies
110
+ // Onboard from aaronstevenwhite.io profile audit.
111
+ chive: "Research",
112
+ // pub.chive.eprint.submission — preprints on chive.pub
113
+ // Onboard from helene-cook.eu profile audit.
114
+ zeens: "Photos",
115
+ // app.photosky.collection — curated photo collections on zeens.app
116
+ // Onboard from scanash.com profile audit.
117
+ locale: "Translations",
118
+ // at.locale.{project,translation} — localization projects and authored translation strings on locale.at
119
+ pckt: "Posts",
120
+ // blog.pckt.mini.post — microblog posts with no site.standard.document twin
121
+ // Onboard from the holke.xyz profile audit (impact-funding ecosystem).
122
+ hypercerts: "Impact",
123
+ // org.hypercerts.{claim.activity,collection} — authored claims of work done, and the project collections that group them
124
+ certified: "Endorsements",
125
+ // app.certified.{badge.award,actor.membership} — endorsements issued to another DID, and group memberships
126
+ impactindexer: "Reviews",
127
+ // org.impactindexer.review.comment — written reviews of a hypercert claim
128
+ pinksea: "Art",
129
+ // com.shinolabs.pinksea.oekaki — hand-drawn artwork posted to the PinkSea oekaki BBS
130
+ // Onboard from the tijs.org profile audit.
131
+ dropanchor: "Places",
132
+ // app.dropanchor.checkin — location check-ins (place, geo, optional review text)
133
+ // Onboard from the angrydutchman.houseofmadness.org profile audit.
134
+ askeverything: "Q&A",
135
+ // app.askeverything.feed.answer — authored answers to community questions
136
+ greengale: "Articles",
137
+ // app.greengale.blog.entry — authored blog posts (title, subtitle, Markdown body)
138
+ kut: "Social",
139
+ // social.kut.community.membership — joining a Kut community (a commitment)
140
+ // Onboard from the upcoming profile-of-the-day audit.
141
+ atmob: "Pastes",
142
+ // in.atmob.paste.{document,bundle} — authored text/code pastes on atmob.in
143
+ tokono: "Video",
144
+ // ma.tokono.byov.video — authored videos hosted via the tokono.ma "bring your own video" feature
145
+ portable: "Social",
146
+ // agency.portable.membership — joining a community (a commitment), attested by another actor
147
+ rpgactor: "Art",
148
+ // actor.rpg.sprite + equipment.rpg.item: a pixel-art RPG character and the equipment items it was given
149
+ // Web-only (rendered in pills/cards via sifa-web atproto-apps.ts;
150
+ // no backend scan collection yet)
151
+ linkat: "Links",
152
+ kipclip: "Links",
153
+ statusphere: "Social"
154
+ };
155
+ function isKnownAppId(appId) {
156
+ return Object.prototype.hasOwnProperty.call(APP_CATEGORY_MAP, appId);
157
+ }
158
+ function categoryForApp(appId) {
159
+ return isKnownAppId(appId) ? APP_CATEGORY_MAP[appId] : void 0;
160
+ }
161
+ export {
162
+ APP_CATEGORY_MAP,
163
+ categoryForApp,
164
+ isKnownAppId
165
+ };
166
+ //# sourceMappingURL=app-category-map.js.map
@@ -0,0 +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} 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;AACf;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":[]}
@@ -0,0 +1,29 @@
1
+ // src/taxonomy/artifact-link-kind.ts
2
+ var ARTIFACT_LINK_KIND_OPTIONS = [
3
+ { value: "pull-request", label: "Pull request" },
4
+ { value: "issue", label: "Issue" },
5
+ { value: "commit", label: "Commit" },
6
+ { value: "review", label: "Review" },
7
+ { value: "release", label: "Release" },
8
+ { value: "talk", label: "Talk" },
9
+ { value: "video", label: "Video" },
10
+ { value: "slides", label: "Slides" },
11
+ { value: "article", label: "Article" },
12
+ { value: "thread", label: "Thread" },
13
+ { value: "dataset", label: "Dataset" },
14
+ { value: "edit", label: "Edit" },
15
+ { value: "other", label: "Link" }
16
+ ];
17
+ var ARTIFACT_LINK_KIND_LABELS = Object.fromEntries(
18
+ ARTIFACT_LINK_KIND_OPTIONS.map((o) => [o.value, o.label])
19
+ );
20
+ function getArtifactLinkKindLabel(value) {
21
+ if (!value) return void 0;
22
+ return ARTIFACT_LINK_KIND_LABELS[value] ?? value;
23
+ }
24
+ export {
25
+ ARTIFACT_LINK_KIND_LABELS,
26
+ ARTIFACT_LINK_KIND_OPTIONS,
27
+ getArtifactLinkKindLabel
28
+ };
29
+ //# sourceMappingURL=artifact-link-kind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/taxonomy/artifact-link-kind.ts"],"sourcesContent":["/**\n * Artifact-link-kind taxonomy. Mirrors the bare-string `knownValues` of\n * `id.sifa.defs#artifactLink.kind` from sifa-lexicons. Open set: any string is\n * valid; these are the recognized kinds used to pick an icon and a default label.\n */\n\nexport interface ArtifactLinkKindOption {\n value: string;\n label: string;\n}\n\nexport const ARTIFACT_LINK_KIND_OPTIONS: ArtifactLinkKindOption[] = [\n { value: 'pull-request', label: 'Pull request' },\n { value: 'issue', label: 'Issue' },\n { value: 'commit', label: 'Commit' },\n { value: 'review', label: 'Review' },\n { value: 'release', label: 'Release' },\n { value: 'talk', label: 'Talk' },\n { value: 'video', label: 'Video' },\n { value: 'slides', label: 'Slides' },\n { value: 'article', label: 'Article' },\n { value: 'thread', label: 'Thread' },\n { value: 'dataset', label: 'Dataset' },\n { value: 'edit', label: 'Edit' },\n { value: 'other', label: 'Link' },\n];\n\nexport const ARTIFACT_LINK_KIND_LABELS: Record<string, string> = Object.fromEntries(\n ARTIFACT_LINK_KIND_OPTIONS.map((o) => [o.value, o.label]),\n);\n\n/** Resolve a label for an artifact-link-kind value. Falls back to the raw value. */\nexport function getArtifactLinkKindLabel(value: string | undefined | null): string | undefined {\n if (!value) return undefined;\n return ARTIFACT_LINK_KIND_LABELS[value] ?? value;\n}\n"],"mappings":";AAWO,IAAM,6BAAuD;AAAA,EAClE,EAAE,OAAO,gBAAgB,OAAO,eAAe;AAAA,EAC/C,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACjC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,EACrC,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACjC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,EACrC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,EACnC,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,EACrC,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,SAAS,OAAO,OAAO;AAClC;AAEO,IAAM,4BAAoD,OAAO;AAAA,EACtE,2BAA2B,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;AAC1D;AAGO,SAAS,yBAAyB,OAAsD;AAC7F,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,0BAA0B,KAAK,KAAK;AAC7C;","names":[]}
@@ -0,0 +1,28 @@
1
+ // src/taxonomy/calendar-event.ts
2
+ var CALENDAR_EVENT_MODE_LABELS = {
3
+ "community.lexicon.calendar.event#inperson": "In person",
4
+ "community.lexicon.calendar.event#virtual": "Virtual",
5
+ "community.lexicon.calendar.event#hybrid": "Hybrid"
6
+ };
7
+ function getCalendarEventModeLabel(value) {
8
+ if (!value) return void 0;
9
+ return CALENDAR_EVENT_MODE_LABELS[value] ?? value;
10
+ }
11
+ var CALENDAR_EVENT_STATUS_LABELS = {
12
+ "community.lexicon.calendar.event#scheduled": "Scheduled",
13
+ "community.lexicon.calendar.event#cancelled": "Cancelled",
14
+ "community.lexicon.calendar.event#postponed": "Postponed",
15
+ "community.lexicon.calendar.event#rescheduled": "Rescheduled",
16
+ "community.lexicon.calendar.event#planned": "Planned"
17
+ };
18
+ function getCalendarEventStatusLabel(value) {
19
+ if (!value) return void 0;
20
+ return CALENDAR_EVENT_STATUS_LABELS[value] ?? value;
21
+ }
22
+ export {
23
+ CALENDAR_EVENT_MODE_LABELS,
24
+ CALENDAR_EVENT_STATUS_LABELS,
25
+ getCalendarEventModeLabel,
26
+ getCalendarEventStatusLabel
27
+ };
28
+ //# sourceMappingURL=calendar-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/taxonomy/calendar-event.ts"],"sourcesContent":["/**\n * Display labels for `community.lexicon.calendar.event` mode and status tokens.\n * A presentation delivery stores the full upstream token (so it stays faithful\n * to the source event); these maps turn the token into a human label.\n */\n\nexport const CALENDAR_EVENT_MODE_LABELS: Record<string, string> = {\n 'community.lexicon.calendar.event#inperson': 'In person',\n 'community.lexicon.calendar.event#virtual': 'Virtual',\n 'community.lexicon.calendar.event#hybrid': 'Hybrid',\n};\n\n/** Resolve a label for a calendar-event mode token. Falls back to the raw value. */\nexport function getCalendarEventModeLabel(value: string | undefined | null): string | undefined {\n if (!value) return undefined;\n return CALENDAR_EVENT_MODE_LABELS[value] ?? value;\n}\n\nexport const CALENDAR_EVENT_STATUS_LABELS: Record<string, string> = {\n 'community.lexicon.calendar.event#scheduled': 'Scheduled',\n 'community.lexicon.calendar.event#cancelled': 'Cancelled',\n 'community.lexicon.calendar.event#postponed': 'Postponed',\n 'community.lexicon.calendar.event#rescheduled': 'Rescheduled',\n 'community.lexicon.calendar.event#planned': 'Planned',\n};\n\n/** Resolve a label for a calendar-event status token. Falls back to the raw value. */\nexport function getCalendarEventStatusLabel(value: string | undefined | null): string | undefined {\n if (!value) return undefined;\n return CALENDAR_EVENT_STATUS_LABELS[value] ?? value;\n}\n"],"mappings":";AAMO,IAAM,6BAAqD;AAAA,EAChE,6CAA6C;AAAA,EAC7C,4CAA4C;AAAA,EAC5C,2CAA2C;AAC7C;AAGO,SAAS,0BAA0B,OAAsD;AAC9F,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,2BAA2B,KAAK,KAAK;AAC9C;AAEO,IAAM,+BAAuD;AAAA,EAClE,8CAA8C;AAAA,EAC9C,8CAA8C;AAAA,EAC9C,8CAA8C;AAAA,EAC9C,gDAAgD;AAAA,EAChD,4CAA4C;AAC9C;AAGO,SAAS,4BAA4B,OAAsD;AAChG,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,6BAA6B,KAAK,KAAK;AAChD;","names":[]}