@atproto/bsky 0.0.28 → 0.0.30

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 (303) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE.txt +1 -1
  3. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts +1 -0
  4. package/dist/auto-moderator/index.d.ts +1 -14
  5. package/dist/context.d.ts +0 -3
  6. package/dist/db/index.js +43762 -12377
  7. package/dist/db/index.js.map +3 -3
  8. package/dist/db/pagination.d.ts +1 -0
  9. package/dist/index.d.ts +0 -4
  10. package/dist/index.js +2422 -2135
  11. package/dist/index.js.map +3 -3
  12. package/dist/indexer/config.d.ts +0 -8
  13. package/dist/lexicon/index.d.ts +0 -2
  14. package/dist/lexicon/lexicons.d.ts +134 -52
  15. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +1 -0
  16. package/dist/lexicon/types/app/bsky/actor/getPreferences.d.ts +2 -2
  17. package/dist/lexicon/types/app/bsky/actor/getProfile.d.ts +2 -2
  18. package/dist/lexicon/types/app/bsky/actor/getProfiles.d.ts +2 -2
  19. package/dist/lexicon/types/app/bsky/actor/getSuggestions.d.ts +2 -2
  20. package/dist/lexicon/types/app/bsky/actor/searchActors.d.ts +2 -2
  21. package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.d.ts +2 -2
  22. package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.d.ts +2 -2
  23. package/dist/lexicon/types/app/bsky/feed/getActorFeeds.d.ts +2 -2
  24. package/dist/lexicon/types/app/bsky/feed/getActorLikes.d.ts +2 -2
  25. package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.d.ts +2 -2
  26. package/dist/lexicon/types/app/bsky/feed/getFeed.d.ts +2 -2
  27. package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.d.ts +2 -2
  28. package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.d.ts +2 -2
  29. package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.d.ts +2 -2
  30. package/dist/lexicon/types/app/bsky/feed/getLikes.d.ts +2 -2
  31. package/dist/lexicon/types/app/bsky/feed/getListFeed.d.ts +2 -2
  32. package/dist/lexicon/types/app/bsky/feed/getPostThread.d.ts +2 -2
  33. package/dist/lexicon/types/app/bsky/feed/getPosts.d.ts +2 -2
  34. package/dist/lexicon/types/app/bsky/feed/getRepostedBy.d.ts +2 -2
  35. package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.d.ts +2 -2
  36. package/dist/lexicon/types/app/bsky/feed/getTimeline.d.ts +2 -2
  37. package/dist/lexicon/types/app/bsky/feed/searchPosts.d.ts +2 -2
  38. package/dist/lexicon/types/app/bsky/graph/getBlocks.d.ts +2 -2
  39. package/dist/lexicon/types/app/bsky/graph/getFollowers.d.ts +2 -2
  40. package/dist/lexicon/types/app/bsky/graph/getFollows.d.ts +2 -2
  41. package/dist/lexicon/types/app/bsky/graph/getList.d.ts +2 -2
  42. package/dist/lexicon/types/app/bsky/graph/getListBlocks.d.ts +2 -2
  43. package/dist/lexicon/types/app/bsky/graph/getListMutes.d.ts +2 -2
  44. package/dist/lexicon/types/app/bsky/graph/getLists.d.ts +2 -2
  45. package/dist/lexicon/types/app/bsky/graph/getMutes.d.ts +2 -2
  46. package/dist/lexicon/types/app/bsky/graph/getRelationships.d.ts +2 -2
  47. package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.d.ts +2 -2
  48. package/dist/lexicon/types/app/bsky/notification/getUnreadCount.d.ts +2 -2
  49. package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts +2 -2
  50. package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.d.ts +2 -2
  51. package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.d.ts +2 -2
  52. package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.d.ts +2 -2
  53. package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.d.ts +2 -2
  54. package/dist/lexicon/types/com/atproto/admin/createCommunicationTemplate.d.ts +2 -2
  55. package/dist/lexicon/types/com/atproto/admin/defs.d.ts +2 -2
  56. package/dist/lexicon/types/com/atproto/admin/emitModerationEvent.d.ts +2 -2
  57. package/dist/lexicon/types/com/atproto/admin/getAccountInfo.d.ts +2 -2
  58. package/dist/lexicon/types/com/atproto/admin/getAccountInfos.d.ts +2 -2
  59. package/dist/lexicon/types/com/atproto/admin/getInviteCodes.d.ts +2 -2
  60. package/dist/lexicon/types/com/atproto/admin/getModerationEvent.d.ts +2 -2
  61. package/dist/lexicon/types/com/atproto/admin/getRecord.d.ts +2 -2
  62. package/dist/lexicon/types/com/atproto/admin/getRepo.d.ts +2 -2
  63. package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.d.ts +2 -2
  64. package/dist/lexicon/types/com/atproto/admin/listCommunicationTemplates.d.ts +2 -2
  65. package/dist/lexicon/types/com/atproto/admin/queryModerationEvents.d.ts +9 -2
  66. package/dist/lexicon/types/com/atproto/admin/queryModerationStatuses.d.ts +2 -2
  67. package/dist/lexicon/types/com/atproto/admin/searchRepos.d.ts +2 -2
  68. package/dist/lexicon/types/com/atproto/admin/sendEmail.d.ts +2 -2
  69. package/dist/lexicon/types/com/atproto/admin/updateCommunicationTemplate.d.ts +2 -2
  70. package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.d.ts +2 -2
  71. package/dist/lexicon/types/com/atproto/identity/resolveHandle.d.ts +2 -2
  72. package/dist/lexicon/types/com/atproto/label/queryLabels.d.ts +2 -2
  73. package/dist/lexicon/types/com/atproto/moderation/createReport.d.ts +2 -2
  74. package/dist/lexicon/types/com/atproto/repo/createRecord.d.ts +2 -2
  75. package/dist/lexicon/types/com/atproto/repo/describeRepo.d.ts +2 -2
  76. package/dist/lexicon/types/com/atproto/repo/getRecord.d.ts +2 -2
  77. package/dist/lexicon/types/com/atproto/repo/listRecords.d.ts +2 -2
  78. package/dist/lexicon/types/com/atproto/repo/putRecord.d.ts +2 -2
  79. package/dist/lexicon/types/com/atproto/repo/uploadBlob.d.ts +2 -2
  80. package/dist/lexicon/types/com/atproto/server/createAccount.d.ts +2 -2
  81. package/dist/lexicon/types/com/atproto/server/createAppPassword.d.ts +2 -2
  82. package/dist/lexicon/types/com/atproto/server/createInviteCode.d.ts +2 -2
  83. package/dist/lexicon/types/com/atproto/server/createInviteCodes.d.ts +2 -2
  84. package/dist/lexicon/types/com/atproto/server/createSession.d.ts +2 -2
  85. package/dist/lexicon/types/com/atproto/server/describeServer.d.ts +2 -2
  86. package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.d.ts +2 -2
  87. package/dist/lexicon/types/com/atproto/server/getSession.d.ts +2 -2
  88. package/dist/lexicon/types/com/atproto/server/listAppPasswords.d.ts +2 -2
  89. package/dist/lexicon/types/com/atproto/server/refreshSession.d.ts +2 -2
  90. package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.d.ts +2 -2
  91. package/dist/lexicon/types/com/atproto/server/reserveSigningKey.d.ts +2 -2
  92. package/dist/lexicon/types/com/atproto/sync/getBlob.d.ts +2 -2
  93. package/dist/lexicon/types/com/atproto/sync/getBlocks.d.ts +2 -2
  94. package/dist/lexicon/types/com/atproto/sync/getCheckout.d.ts +2 -2
  95. package/dist/lexicon/types/com/atproto/sync/getHead.d.ts +2 -2
  96. package/dist/lexicon/types/com/atproto/sync/getLatestCommit.d.ts +2 -2
  97. package/dist/lexicon/types/com/atproto/sync/getRecord.d.ts +2 -2
  98. package/dist/lexicon/types/com/atproto/sync/getRepo.d.ts +2 -2
  99. package/dist/lexicon/types/com/atproto/sync/listBlobs.d.ts +2 -2
  100. package/dist/lexicon/types/com/atproto/sync/listRepos.d.ts +2 -2
  101. package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.d.ts +2 -2
  102. package/dist/lexicon/types/com/atproto/temp/fetchLabels.d.ts +2 -2
  103. package/dist/lexicon/types/com/atproto/temp/importRepo.d.ts +2 -2
  104. package/dist/lexicon/types/com/atproto/temp/transferAccount.d.ts +2 -2
  105. package/dist/services/feed/index.d.ts +2 -1
  106. package/package.json +8 -7
  107. package/src/api/app/bsky/actor/getSuggestions.ts +1 -1
  108. package/src/api/app/bsky/actor/searchActors.ts +1 -0
  109. package/src/api/app/bsky/feed/getActorFeeds.ts +6 -0
  110. package/src/api/app/bsky/feed/getActorLikes.ts +4 -0
  111. package/src/api/app/bsky/feed/getAuthorFeed.ts +16 -4
  112. package/src/api/app/bsky/feed/getFeed.ts +8 -5
  113. package/src/api/app/bsky/feed/getLikes.ts +4 -0
  114. package/src/api/app/bsky/feed/getListFeed.ts +4 -0
  115. package/src/api/app/bsky/feed/getRepostedBy.ts +4 -0
  116. package/src/api/app/bsky/feed/getSuggestedFeeds.ts +1 -1
  117. package/src/api/app/bsky/feed/getTimeline.ts +4 -0
  118. package/src/api/app/bsky/feed/searchPosts.ts +1 -0
  119. package/src/api/app/bsky/graph/getBlocks.ts +7 -0
  120. package/src/api/app/bsky/graph/getFollowers.ts +4 -0
  121. package/src/api/app/bsky/graph/getFollows.ts +4 -0
  122. package/src/api/app/bsky/graph/getList.ts +4 -0
  123. package/src/api/app/bsky/graph/getListBlocks.ts +4 -0
  124. package/src/api/app/bsky/graph/getListMutes.ts +7 -0
  125. package/src/api/app/bsky/graph/getLists.ts +7 -0
  126. package/src/api/app/bsky/graph/getMutes.ts +7 -0
  127. package/src/api/app/bsky/notification/listNotifications.ts +3 -0
  128. package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +7 -1
  129. package/src/api/index.ts +0 -6
  130. package/src/auto-moderator/index.ts +9 -176
  131. package/src/context.ts +0 -6
  132. package/src/db/pagination.ts +3 -0
  133. package/src/index.ts +1 -6
  134. package/src/indexer/config.ts +0 -29
  135. package/src/lexicon/index.ts +0 -12
  136. package/src/lexicon/lexicons.ts +382 -173
  137. package/src/lexicon/types/app/bsky/actor/defs.ts +2 -0
  138. package/src/lexicon/types/app/bsky/actor/getPreferences.ts +2 -2
  139. package/src/lexicon/types/app/bsky/actor/getProfile.ts +3 -2
  140. package/src/lexicon/types/app/bsky/actor/getProfiles.ts +2 -2
  141. package/src/lexicon/types/app/bsky/actor/getSuggestions.ts +2 -2
  142. package/src/lexicon/types/app/bsky/actor/profile.ts +3 -0
  143. package/src/lexicon/types/app/bsky/actor/putPreferences.ts +1 -1
  144. package/src/lexicon/types/app/bsky/actor/searchActors.ts +2 -2
  145. package/src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts +2 -2
  146. package/src/lexicon/types/app/bsky/embed/external.ts +1 -0
  147. package/src/lexicon/types/app/bsky/embed/images.ts +4 -0
  148. package/src/lexicon/types/app/bsky/embed/record.ts +1 -0
  149. package/src/lexicon/types/app/bsky/feed/defs.ts +1 -0
  150. package/src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts +2 -2
  151. package/src/lexicon/types/app/bsky/feed/getActorFeeds.ts +2 -2
  152. package/src/lexicon/types/app/bsky/feed/getActorLikes.ts +2 -2
  153. package/src/lexicon/types/app/bsky/feed/getAuthorFeed.ts +3 -2
  154. package/src/lexicon/types/app/bsky/feed/getFeed.ts +2 -2
  155. package/src/lexicon/types/app/bsky/feed/getFeedGenerator.ts +5 -2
  156. package/src/lexicon/types/app/bsky/feed/getFeedGenerators.ts +2 -2
  157. package/src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts +3 -2
  158. package/src/lexicon/types/app/bsky/feed/getLikes.ts +4 -2
  159. package/src/lexicon/types/app/bsky/feed/getListFeed.ts +3 -2
  160. package/src/lexicon/types/app/bsky/feed/getPostThread.ts +5 -2
  161. package/src/lexicon/types/app/bsky/feed/getPosts.ts +3 -2
  162. package/src/lexicon/types/app/bsky/feed/getRepostedBy.ts +4 -2
  163. package/src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts +2 -2
  164. package/src/lexicon/types/app/bsky/feed/getTimeline.ts +3 -2
  165. package/src/lexicon/types/app/bsky/feed/post.ts +5 -1
  166. package/src/lexicon/types/app/bsky/feed/searchPosts.ts +2 -2
  167. package/src/lexicon/types/app/bsky/feed/threadgate.ts +1 -0
  168. package/src/lexicon/types/app/bsky/graph/block.ts +1 -0
  169. package/src/lexicon/types/app/bsky/graph/getBlocks.ts +2 -2
  170. package/src/lexicon/types/app/bsky/graph/getFollowers.ts +2 -2
  171. package/src/lexicon/types/app/bsky/graph/getFollows.ts +2 -2
  172. package/src/lexicon/types/app/bsky/graph/getList.ts +3 -2
  173. package/src/lexicon/types/app/bsky/graph/getListBlocks.ts +2 -2
  174. package/src/lexicon/types/app/bsky/graph/getListMutes.ts +2 -2
  175. package/src/lexicon/types/app/bsky/graph/getLists.ts +3 -2
  176. package/src/lexicon/types/app/bsky/graph/getMutes.ts +2 -2
  177. package/src/lexicon/types/app/bsky/graph/getRelationships.ts +4 -2
  178. package/src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts +2 -2
  179. package/src/lexicon/types/app/bsky/graph/list.ts +1 -0
  180. package/src/lexicon/types/app/bsky/graph/listblock.ts +1 -0
  181. package/src/lexicon/types/app/bsky/graph/listitem.ts +2 -0
  182. package/src/lexicon/types/app/bsky/graph/muteActor.ts +1 -1
  183. package/src/lexicon/types/app/bsky/graph/muteActorList.ts +1 -1
  184. package/src/lexicon/types/app/bsky/graph/unmuteActor.ts +1 -1
  185. package/src/lexicon/types/app/bsky/graph/unmuteActorList.ts +1 -1
  186. package/src/lexicon/types/app/bsky/notification/getUnreadCount.ts +2 -2
  187. package/src/lexicon/types/app/bsky/notification/listNotifications.ts +2 -2
  188. package/src/lexicon/types/app/bsky/notification/registerPush.ts +1 -1
  189. package/src/lexicon/types/app/bsky/notification/updateSeen.ts +1 -1
  190. package/src/lexicon/types/app/bsky/richtext/facet.ts +5 -4
  191. package/src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts +2 -2
  192. package/src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts +2 -2
  193. package/src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts +2 -2
  194. package/src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts +2 -2
  195. package/src/lexicon/types/com/atproto/admin/createCommunicationTemplate.ts +2 -2
  196. package/src/lexicon/types/com/atproto/admin/defs.ts +2 -0
  197. package/src/lexicon/types/com/atproto/admin/deleteAccount.ts +1 -1
  198. package/src/lexicon/types/com/atproto/admin/deleteCommunicationTemplate.ts +1 -1
  199. package/src/lexicon/types/com/atproto/admin/disableAccountInvites.ts +1 -1
  200. package/src/lexicon/types/com/atproto/admin/disableInviteCodes.ts +1 -1
  201. package/src/lexicon/types/com/atproto/admin/emitModerationEvent.ts +2 -2
  202. package/src/lexicon/types/com/atproto/admin/enableAccountInvites.ts +1 -1
  203. package/src/lexicon/types/com/atproto/admin/getAccountInfo.ts +2 -2
  204. package/src/lexicon/types/com/atproto/admin/getAccountInfos.ts +2 -2
  205. package/src/lexicon/types/com/atproto/admin/getInviteCodes.ts +2 -2
  206. package/src/lexicon/types/com/atproto/admin/getModerationEvent.ts +2 -2
  207. package/src/lexicon/types/com/atproto/admin/getRecord.ts +2 -2
  208. package/src/lexicon/types/com/atproto/admin/getRepo.ts +2 -2
  209. package/src/lexicon/types/com/atproto/admin/getSubjectStatus.ts +2 -2
  210. package/src/lexicon/types/com/atproto/admin/listCommunicationTemplates.ts +2 -2
  211. package/src/lexicon/types/com/atproto/admin/queryModerationEvents.ts +15 -2
  212. package/src/lexicon/types/com/atproto/admin/queryModerationStatuses.ts +2 -2
  213. package/src/lexicon/types/com/atproto/admin/searchRepos.ts +2 -2
  214. package/src/lexicon/types/com/atproto/admin/sendEmail.ts +2 -2
  215. package/src/lexicon/types/com/atproto/admin/updateAccountEmail.ts +1 -1
  216. package/src/lexicon/types/com/atproto/admin/updateAccountHandle.ts +1 -1
  217. package/src/lexicon/types/com/atproto/admin/updateCommunicationTemplate.ts +2 -2
  218. package/src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts +2 -2
  219. package/src/lexicon/types/com/atproto/identity/resolveHandle.ts +2 -2
  220. package/src/lexicon/types/com/atproto/identity/updateHandle.ts +2 -1
  221. package/src/lexicon/types/com/atproto/label/queryLabels.ts +2 -2
  222. package/src/lexicon/types/com/atproto/label/subscribeLabels.ts +1 -1
  223. package/src/lexicon/types/com/atproto/moderation/createReport.ts +3 -2
  224. package/src/lexicon/types/com/atproto/repo/applyWrites.ts +7 -6
  225. package/src/lexicon/types/com/atproto/repo/createRecord.ts +6 -6
  226. package/src/lexicon/types/com/atproto/repo/deleteRecord.ts +3 -3
  227. package/src/lexicon/types/com/atproto/repo/describeRepo.ts +5 -2
  228. package/src/lexicon/types/com/atproto/repo/getRecord.ts +3 -3
  229. package/src/lexicon/types/com/atproto/repo/listRecords.ts +2 -2
  230. package/src/lexicon/types/com/atproto/repo/putRecord.ts +6 -6
  231. package/src/lexicon/types/com/atproto/repo/uploadBlob.ts +2 -2
  232. package/src/lexicon/types/com/atproto/server/confirmEmail.ts +1 -1
  233. package/src/lexicon/types/com/atproto/server/createAccount.ts +10 -2
  234. package/src/lexicon/types/com/atproto/server/createAppPassword.ts +3 -2
  235. package/src/lexicon/types/com/atproto/server/createInviteCode.ts +2 -2
  236. package/src/lexicon/types/com/atproto/server/createInviteCodes.ts +2 -2
  237. package/src/lexicon/types/com/atproto/server/createSession.ts +2 -2
  238. package/src/lexicon/types/com/atproto/server/deleteAccount.ts +1 -1
  239. package/src/lexicon/types/com/atproto/server/deleteSession.ts +1 -1
  240. package/src/lexicon/types/com/atproto/server/describeServer.ts +5 -2
  241. package/src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts +3 -2
  242. package/src/lexicon/types/com/atproto/server/getSession.ts +2 -2
  243. package/src/lexicon/types/com/atproto/server/listAppPasswords.ts +2 -2
  244. package/src/lexicon/types/com/atproto/server/refreshSession.ts +2 -2
  245. package/src/lexicon/types/com/atproto/server/requestAccountDelete.ts +1 -1
  246. package/src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts +1 -1
  247. package/src/lexicon/types/com/atproto/server/requestEmailUpdate.ts +2 -2
  248. package/src/lexicon/types/com/atproto/server/requestPasswordReset.ts +1 -1
  249. package/src/lexicon/types/com/atproto/server/reserveSigningKey.ts +4 -4
  250. package/src/lexicon/types/com/atproto/server/resetPassword.ts +1 -1
  251. package/src/lexicon/types/com/atproto/server/revokeAppPassword.ts +1 -1
  252. package/src/lexicon/types/com/atproto/server/updateEmail.ts +1 -1
  253. package/src/lexicon/types/com/atproto/sync/getBlob.ts +3 -3
  254. package/src/lexicon/types/com/atproto/sync/getBlocks.ts +2 -2
  255. package/src/lexicon/types/com/atproto/sync/getCheckout.ts +2 -2
  256. package/src/lexicon/types/com/atproto/sync/getHead.ts +2 -2
  257. package/src/lexicon/types/com/atproto/sync/getLatestCommit.ts +2 -2
  258. package/src/lexicon/types/com/atproto/sync/getRecord.ts +3 -2
  259. package/src/lexicon/types/com/atproto/sync/getRepo.ts +3 -3
  260. package/src/lexicon/types/com/atproto/sync/listBlobs.ts +2 -2
  261. package/src/lexicon/types/com/atproto/sync/listRepos.ts +3 -2
  262. package/src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts +2 -2
  263. package/src/lexicon/types/com/atproto/sync/requestCrawl.ts +2 -2
  264. package/src/lexicon/types/com/atproto/sync/subscribeRepos.ts +17 -5
  265. package/src/lexicon/types/com/atproto/temp/checkSignupQueue.ts +2 -2
  266. package/src/lexicon/types/com/atproto/temp/fetchLabels.ts +2 -2
  267. package/src/lexicon/types/com/atproto/temp/importRepo.ts +2 -2
  268. package/src/lexicon/types/com/atproto/temp/pushBlob.ts +1 -1
  269. package/src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts +1 -1
  270. package/src/lexicon/types/com/atproto/temp/transferAccount.ts +2 -2
  271. package/src/logger.ts +32 -0
  272. package/src/services/feed/index.ts +10 -4
  273. package/src/services/feed/views.ts +3 -1
  274. package/tests/auto-moderator/labeler.test.ts +2 -0
  275. package/tests/feed-generation.test.ts +0 -6
  276. package/tests/views/author-feed.test.ts +29 -9
  277. package/tests/views/notifications.test.ts +9 -0
  278. package/tests/views/timeline.test.ts +8 -0
  279. package/dist/api/app/bsky/feed/describeFeedGenerator.d.ts +0 -3
  280. package/dist/api/app/bsky/feed/getFeedSkeleton.d.ts +0 -3
  281. package/dist/api/app/bsky/unspecced/getTimelineSkeleton.d.ts +0 -3
  282. package/dist/auto-moderator/abyss.d.ts +0 -48
  283. package/dist/auto-moderator/fuzzy-matcher.d.ts +0 -14
  284. package/dist/feed-gen/bsky-team.d.ts +0 -3
  285. package/dist/feed-gen/hot-classic.d.ts +0 -3
  286. package/dist/feed-gen/index.d.ts +0 -2
  287. package/dist/feed-gen/mutuals.d.ts +0 -3
  288. package/dist/feed-gen/types.d.ts +0 -15
  289. package/dist/lexicon/types/app/bsky/unspecced/getTimelineSkeleton.d.ts +0 -35
  290. package/src/api/app/bsky/feed/describeFeedGenerator.ts +0 -21
  291. package/src/api/app/bsky/feed/getFeedSkeleton.ts +0 -30
  292. package/src/api/app/bsky/unspecced/getTimelineSkeleton.ts +0 -26
  293. package/src/auto-moderator/abyss.ts +0 -114
  294. package/src/auto-moderator/fuzzy-matcher.ts +0 -126
  295. package/src/feed-gen/bsky-team.ts +0 -42
  296. package/src/feed-gen/hot-classic.ts +0 -55
  297. package/src/feed-gen/index.ts +0 -17
  298. package/src/feed-gen/mutuals.ts +0 -57
  299. package/src/feed-gen/types.ts +0 -32
  300. package/src/lexicon/types/app/bsky/unspecced/getTimelineSkeleton.ts +0 -49
  301. package/tests/algos/hot-classic.test.ts +0 -87
  302. package/tests/auto-moderator/fuzzy-matcher.test.ts +0 -163
  303. package/tests/auto-moderator/takedowns.test.ts +0 -202
@@ -12,11 +12,17 @@ export default function (server: Server, ctx: AppContext) {
12
12
  handler: async ({ auth, params }) => {
13
13
  const { limit, cursor, query } = params
14
14
  const requester = auth.credentials.iss
15
+ if (LikeCountKeyset.clearlyBad(cursor)) {
16
+ return {
17
+ encoding: 'application/json',
18
+ body: { feeds: [] },
19
+ }
20
+ }
21
+
15
22
  const db = ctx.db.getReplica()
16
23
  const { ref } = db.db.dynamic
17
24
  const feedService = ctx.services.feed(db)
18
25
  const actorService = ctx.services.actor(db)
19
-
20
26
  let inner = db.db
21
27
  .selectFrom('feed_generator')
22
28
  .select([
package/src/api/index.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { Server } from '../lexicon'
2
2
  import AppContext from '../context'
3
- import describeFeedGenerator from './app/bsky/feed/describeFeedGenerator'
4
3
  import getTimeline from './app/bsky/feed/getTimeline'
5
4
  import getActorFeeds from './app/bsky/feed/getActorFeeds'
6
5
  import getSuggestedFeeds from './app/bsky/feed/getSuggestedFeeds'
@@ -8,7 +7,6 @@ import getAuthorFeed from './app/bsky/feed/getAuthorFeed'
8
7
  import getFeed from './app/bsky/feed/getFeed'
9
8
  import getFeedGenerator from './app/bsky/feed/getFeedGenerator'
10
9
  import getFeedGenerators from './app/bsky/feed/getFeedGenerators'
11
- import getFeedSkeleton from './app/bsky/feed/getFeedSkeleton'
12
10
  import getLikes from './app/bsky/feed/getLikes'
13
11
  import getListFeed from './app/bsky/feed/getListFeed'
14
12
  import getPostThread from './app/bsky/feed/getPostThread'
@@ -40,7 +38,6 @@ import listNotifications from './app/bsky/notification/listNotifications'
40
38
  import updateSeen from './app/bsky/notification/updateSeen'
41
39
  import registerPush from './app/bsky/notification/registerPush'
42
40
  import getPopularFeedGenerators from './app/bsky/unspecced/getPopularFeedGenerators'
43
- import getTimelineSkeleton from './app/bsky/unspecced/getTimelineSkeleton'
44
41
  import getTaggedSuggestions from './app/bsky/unspecced/getTaggedSuggestions'
45
42
  import getSubjectStatus from './com/atproto/admin/getSubjectStatus'
46
43
  import updateSubjectStatus from './com/atproto/admin/updateSubjectStatus'
@@ -57,7 +54,6 @@ export * as blobResolver from './blob-resolver'
57
54
 
58
55
  export default function (server: Server, ctx: AppContext) {
59
56
  // app.bsky
60
- describeFeedGenerator(server, ctx)
61
57
  getTimeline(server, ctx)
62
58
  getActorFeeds(server, ctx)
63
59
  getSuggestedFeeds(server, ctx)
@@ -65,7 +61,6 @@ export default function (server: Server, ctx: AppContext) {
65
61
  getFeed(server, ctx)
66
62
  getFeedGenerator(server, ctx)
67
63
  getFeedGenerators(server, ctx)
68
- getFeedSkeleton(server, ctx)
69
64
  getLikes(server, ctx)
70
65
  getListFeed(server, ctx)
71
66
  getPostThread(server, ctx)
@@ -97,7 +92,6 @@ export default function (server: Server, ctx: AppContext) {
97
92
  updateSeen(server, ctx)
98
93
  registerPush(server, ctx)
99
94
  getPopularFeedGenerators(server, ctx)
100
- getTimelineSkeleton(server, ctx)
101
95
  getTaggedSuggestions(server, ctx)
102
96
  // com.atproto
103
97
  getSubjectStatus(server, ctx)
@@ -8,21 +8,12 @@ import { BackgroundQueue } from '../background'
8
8
  import { IndexerConfig } from '../indexer/config'
9
9
  import { buildBasicAuth } from '../auth-verifier'
10
10
  import { CID } from 'multiformats/cid'
11
- import { ImageFlagger } from './abyss'
12
11
  import { HiveLabeler, ImgLabeler } from './hive'
13
12
  import { KeywordLabeler, TextLabeler } from './keyword'
14
13
  import { ids } from '../lexicon/lexicons'
15
- import { Abyss } from './abyss'
16
- import { FuzzyMatcher, TextFlagger } from './fuzzy-matcher'
17
- import {
18
- REASONOTHER,
19
- REASONVIOLATION,
20
- } from '../lexicon/types/com/atproto/moderation/defs'
21
14
 
22
15
  export class AutoModerator {
23
16
  public pushAgent: AtpAgent
24
- public imageFlagger?: ImageFlagger
25
- public textFlagger?: TextFlagger
26
17
  public imgLabeler?: ImgLabeler
27
18
  public textLabeler?: TextLabeler
28
19
 
@@ -34,24 +25,9 @@ export class AutoModerator {
34
25
  backgroundQueue: BackgroundQueue
35
26
  },
36
27
  ) {
37
- const { hiveApiKey, abyssEndpoint, abyssPassword } = ctx.cfg
28
+ const { hiveApiKey } = ctx.cfg
38
29
  this.imgLabeler = hiveApiKey ? new HiveLabeler(hiveApiKey, ctx) : undefined
39
30
  this.textLabeler = new KeywordLabeler(ctx.cfg.labelerKeywords)
40
- if (abyssEndpoint && abyssPassword) {
41
- this.imageFlagger = new Abyss(abyssEndpoint, abyssPassword, ctx)
42
- } else {
43
- log.error(
44
- { abyssEndpoint, abyssPassword },
45
- 'abyss not properly configured',
46
- )
47
- }
48
-
49
- if (ctx.cfg.fuzzyMatchB64) {
50
- this.textFlagger = FuzzyMatcher.fromB64(
51
- ctx.cfg.fuzzyMatchB64,
52
- ctx.cfg.fuzzyFalsePositiveB64,
53
- )
54
- }
55
31
 
56
32
  const url = new URL(ctx.cfg.moderationPushUrl)
57
33
  this.pushAgent = new AtpAgent({ service: url.origin })
@@ -64,35 +40,17 @@ export class AutoModerator {
64
40
  processRecord(uri: AtUri, cid: CID, obj: unknown) {
65
41
  this.ctx.backgroundQueue.add(async () => {
66
42
  const { text, imgs } = getFieldsFromRecord(obj, uri)
67
- await Promise.all([
68
- this.labelRecord(uri, cid, text, imgs).catch((err) => {
69
- log.error(
70
- { err, uri: uri.toString(), record: obj },
71
- 'failed to label record',
72
- )
73
- }),
74
- this.flagRecordText(uri, cid, text).catch((err) => {
75
- log.error(
76
- { err, uri: uri.toString(), record: obj },
77
- 'failed to check record for text flagging',
78
- )
79
- }),
80
- this.checkImgForTakedown(uri, cid, imgs).catch((err) => {
81
- log.error(
82
- { err, uri: uri.toString(), record: obj },
83
- 'failed to check img for takedown',
84
- )
85
- }),
86
- ])
43
+ await this.labelRecord(uri, cid, text, imgs).catch((err) => {
44
+ log.error(
45
+ { err, uri: uri.toString(), record: obj },
46
+ 'failed to label record',
47
+ )
48
+ })
87
49
  })
88
50
  }
89
51
 
90
- processHandle(handle: string, did: string) {
91
- this.ctx.backgroundQueue.add(async () => {
92
- await this.flagSubjectText(handle, { did }).catch((err) => {
93
- log.error({ err, handle, did }, 'failed to label handle')
94
- })
95
- })
52
+ processHandle(_handle: string, _did: string) {
53
+ // no-op since this functionality moved to auto-mod service
96
54
  }
97
55
 
98
56
  async labelRecord(uri: AtUri, recordCid: CID, text: string[], imgs: CID[]) {
@@ -108,131 +66,6 @@ export class AutoModerator {
108
66
  await this.pushLabels(uri, recordCid, labels)
109
67
  }
110
68
 
111
- async flagRecordText(uri: AtUri, cid: CID, text: string[]) {
112
- if (
113
- ![
114
- ids.AppBskyActorProfile,
115
- ids.AppBskyGraphList,
116
- ids.AppBskyFeedGenerator,
117
- ].includes(uri.collection)
118
- ) {
119
- return
120
- }
121
- return this.flagSubjectText(text.join(' '), { uri, cid })
122
- }
123
-
124
- async flagSubjectText(
125
- text: string,
126
- subject: { did: string } | { uri: AtUri; cid: CID },
127
- ) {
128
- if (!this.textFlagger) return
129
- const matches = this.textFlagger.getMatches(text)
130
- if (matches.length < 1) return
131
- const formattedSubject =
132
- 'did' in subject
133
- ? {
134
- $type: 'com.atproto.admin.defs#repoRef',
135
- did: subject.did,
136
- }
137
- : {
138
- $type: 'com.atproto.repo.strongRef',
139
- uri: subject.uri.toString(),
140
- cid: subject.cid.toString(),
141
- }
142
-
143
- await this.pushAgent.api.com.atproto.admin.emitModerationEvent({
144
- event: {
145
- $type: 'com.atproto.admin.defs#modEventReport',
146
- comment: `Automatically flagged for possible slurs: ${matches.join(
147
- ', ',
148
- )}`,
149
- reportType: REASONOTHER,
150
- },
151
- subject: formattedSubject,
152
- createdBy: this.ctx.cfg.serverDid,
153
- })
154
- }
155
-
156
- async checkImgForTakedown(uri: AtUri, recordCid: CID, imgCids: CID[]) {
157
- if (imgCids.length < 0) return
158
- const results = await Promise.all(
159
- imgCids.map((cid) => this.imageFlagger?.scanImage(uri.host, cid, uri)),
160
- )
161
- const takedownCids: CID[] = []
162
- for (let i = 0; i < results.length; i++) {
163
- if (results.at(i)?.length) {
164
- takedownCids.push(imgCids[i])
165
- }
166
- }
167
- if (takedownCids.length === 0) return
168
- try {
169
- await this.persistTakedown(
170
- uri,
171
- recordCid,
172
- takedownCids,
173
- dedupe(results.flat()),
174
- )
175
- } catch (err) {
176
- log.error(
177
- {
178
- err,
179
- uri: uri.toString(),
180
- imgCids: imgCids.map((c) => c.toString()),
181
- results,
182
- },
183
- 'failed to persist takedown',
184
- )
185
- }
186
- }
187
-
188
- async persistTakedown(
189
- uri: AtUri,
190
- recordCid: CID,
191
- takedownCids: CID[],
192
- labels: string[],
193
- ) {
194
- const reportReason = `automated takedown (${labels.join(
195
- ', ',
196
- )}). account needs review and possibly additional action`
197
- const takedownReason = `automated takedown for labels: ${labels.join(', ')}`
198
- log.warn(
199
- {
200
- uri: uri.toString(),
201
- blobCids: takedownCids,
202
- labels,
203
- },
204
- 'hard takedown of record (and blobs) based on auto-matching',
205
- )
206
-
207
- await this.pushAgent.api.com.atproto.admin.emitModerationEvent({
208
- event: {
209
- $type: 'com.atproto.admin.defs#modEventReport',
210
- comment: reportReason,
211
- reportType: REASONVIOLATION,
212
- },
213
- subject: {
214
- $type: 'com.atproto.repo.strongRef',
215
- uri: uri.toString(),
216
- cid: recordCid.toString(),
217
- },
218
- createdBy: this.ctx.cfg.serverDid,
219
- })
220
-
221
- await this.pushAgent.com.atproto.admin.emitModerationEvent({
222
- event: {
223
- $type: 'com.atproto.admin.defs#modEventTakedown',
224
- comment: takedownReason,
225
- },
226
- subject: {
227
- $type: 'com.atproto.repo.strongRef',
228
- uri: uri.toString(),
229
- cid: recordCid.toString(),
230
- },
231
- subjectBlobCids: takedownCids.map((c) => c.toString()),
232
- createdBy: this.ctx.cfg.serverDid,
233
- })
234
- }
235
-
236
69
  async pushLabels(uri: AtUri, cid: CID, labels: string[]): Promise<void> {
237
70
  if (labels.length < 1) return
238
71
 
package/src/context.ts CHANGED
@@ -9,7 +9,6 @@ import { ImageUriBuilder } from './image/uri'
9
9
  import { Services } from './services'
10
10
  import DidRedisCache from './did-cache'
11
11
  import { BackgroundQueue } from './background'
12
- import { MountedAlgos } from './feed-gen/types'
13
12
  import { Redis } from './redis'
14
13
  import { AuthVerifier } from './auth-verifier'
15
14
  import { BsyncClient } from './bsync'
@@ -30,7 +29,6 @@ export class AppContext {
30
29
  searchAgent?: AtpAgent
31
30
  bsyncClient?: BsyncClient
32
31
  courierClient?: CourierClient
33
- algos: MountedAlgos
34
32
  authVerifier: AuthVerifier
35
33
  },
36
34
  ) {}
@@ -99,10 +97,6 @@ export class AppContext {
99
97
  get backgroundQueue(): BackgroundQueue {
100
98
  return this.opts.backgroundQueue
101
99
  }
102
-
103
- get algos(): MountedAlgos {
104
- return this.opts.algos
105
- }
106
100
  }
107
101
 
108
102
  export default AppContext
@@ -27,6 +27,9 @@ export abstract class GenericKeyset<R, LR extends LabeledResult> {
27
27
  abstract labelResult(result: R): LR
28
28
  abstract labeledResultToCursor(labeled: LR): Cursor
29
29
  abstract cursorToLabeledResult(cursor: Cursor): LR
30
+ static clearlyBad(cursor?: string) {
31
+ return cursor !== undefined && !cursor.includes('::')
32
+ }
30
33
  packFromResult(results: R | R[]): string | undefined {
31
34
  const result = Array.isArray(results) ? results.at(-1) : results
32
35
  if (!result) return
package/src/index.ts CHANGED
@@ -28,7 +28,6 @@ import {
28
28
  ImageProcessingServerInvalidator,
29
29
  } from './image/invalidator'
30
30
  import { BackgroundQueue } from './background'
31
- import { MountedAlgos } from './feed-gen/types'
32
31
  import { AtpAgent } from '@atproto/api'
33
32
  import { Keypair } from '@atproto/crypto'
34
33
  import { Redis } from './redis'
@@ -37,14 +36,12 @@ import { authWithApiKey as bsyncAuth, createBsyncClient } from './bsync'
37
36
  import { authWithApiKey as courierAuth, createCourierClient } from './courier'
38
37
 
39
38
  export type { ServerConfigValues } from './config'
40
- export type { MountedAlgos } from './feed-gen/types'
41
39
  export { ServerConfig } from './config'
42
40
  export { Database, PrimaryDatabase, DatabaseCoordinator } from './db'
43
41
  export { Redis } from './redis'
44
42
  export { ViewMaintainer } from './db/views'
45
43
  export { AppContext } from './context'
46
44
  export type { ImageInvalidator } from './image/invalidator'
47
- export { makeAlgos } from './feed-gen'
48
45
  export * from './daemon'
49
46
  export * from './indexer'
50
47
  export * from './ingester'
@@ -67,9 +64,8 @@ export class BskyAppView {
67
64
  config: ServerConfig
68
65
  signingKey: Keypair
69
66
  imgInvalidator?: ImageInvalidator
70
- algos?: MountedAlgos
71
67
  }): BskyAppView {
72
- const { db, redis, config, signingKey, algos = {} } = opts
68
+ const { db, redis, config, signingKey } = opts
73
69
  let maybeImgInvalidator = opts.imgInvalidator
74
70
  const app = express()
75
71
  app.set('trust proxy', true)
@@ -170,7 +166,6 @@ export class BskyAppView {
170
166
  searchAgent,
171
167
  bsyncClient,
172
168
  courierClient,
173
- algos,
174
169
  authVerifier,
175
170
  })
176
171
 
@@ -15,11 +15,7 @@ export interface IndexerConfigValues {
15
15
  didCacheMaxTTL: number
16
16
  handleResolveNameservers?: string[]
17
17
  hiveApiKey?: string
18
- abyssEndpoint?: string
19
- abyssPassword?: string
20
18
  imgUriEndpoint?: string
21
- fuzzyMatchB64?: string
22
- fuzzyFalsePositiveB64?: string
23
19
  labelerKeywords: Record<string, string>
24
20
  moderationPushUrl: string
25
21
  courierUrl?: string
@@ -89,8 +85,6 @@ export class IndexerConfig {
89
85
  process.env.BSKY_COURIER_IGNORE_BAD_TLS === 'true'
90
86
  assert(courierHttpVersion === '1.1' || courierHttpVersion === '2')
91
87
  const hiveApiKey = process.env.HIVE_API_KEY || undefined
92
- const abyssEndpoint = process.env.ABYSS_ENDPOINT
93
- const abyssPassword = process.env.ABYSS_PASSWORD
94
88
  const imgUriEndpoint = process.env.IMG_URI_ENDPOINT
95
89
  const indexerPartitionIds =
96
90
  overrides?.indexerPartitionIds ||
@@ -109,9 +103,6 @@ export class IndexerConfig {
109
103
  const ingesterPartitionCount =
110
104
  maybeParseInt(process.env.INGESTER_PARTITION_COUNT) ?? 64
111
105
  const labelerKeywords = {}
112
- const fuzzyMatchB64 = process.env.FUZZY_MATCH_B64 || undefined
113
- const fuzzyFalsePositiveB64 =
114
- process.env.FUZZY_FALSE_POSITIVE_B64 || undefined
115
106
  const pushNotificationEndpoint = process.env.PUSH_NOTIFICATION_ENDPOINT
116
107
  assert(dbPostgresUrl)
117
108
  assert(redisHost || (redisSentinelName && redisSentinelHosts?.length))
@@ -135,8 +126,6 @@ export class IndexerConfig {
135
126
  courierHttpVersion,
136
127
  courierIgnoreBadTls,
137
128
  hiveApiKey,
138
- abyssEndpoint,
139
- abyssPassword,
140
129
  imgUriEndpoint,
141
130
  indexerPartitionIds,
142
131
  indexerConcurrency,
@@ -146,8 +135,6 @@ export class IndexerConfig {
146
135
  indexerPort,
147
136
  ingesterPartitionCount,
148
137
  labelerKeywords,
149
- fuzzyMatchB64,
150
- fuzzyFalsePositiveB64,
151
138
  pushNotificationEndpoint,
152
139
  ...stripUndefineds(overrides ?? {}),
153
140
  })
@@ -225,14 +212,6 @@ export class IndexerConfig {
225
212
  return this.cfg.hiveApiKey
226
213
  }
227
214
 
228
- get abyssEndpoint() {
229
- return this.cfg.abyssEndpoint
230
- }
231
-
232
- get abyssPassword() {
233
- return this.cfg.abyssPassword
234
- }
235
-
236
215
  get imgUriEndpoint() {
237
216
  return this.cfg.imgUriEndpoint
238
217
  }
@@ -269,14 +248,6 @@ export class IndexerConfig {
269
248
  return this.cfg.labelerKeywords
270
249
  }
271
250
 
272
- get fuzzyMatchB64() {
273
- return this.cfg.fuzzyMatchB64
274
- }
275
-
276
- get fuzzyFalsePositiveB64() {
277
- return this.cfg.fuzzyFalsePositiveB64
278
- }
279
-
280
251
  get pushNotificationEndpoint() {
281
252
  return this.cfg.pushNotificationEndpoint
282
253
  }
@@ -127,7 +127,6 @@ import * as AppBskyNotificationRegisterPush from './types/app/bsky/notification/
127
127
  import * as AppBskyNotificationUpdateSeen from './types/app/bsky/notification/updateSeen'
128
128
  import * as AppBskyUnspeccedGetPopularFeedGenerators from './types/app/bsky/unspecced/getPopularFeedGenerators'
129
129
  import * as AppBskyUnspeccedGetTaggedSuggestions from './types/app/bsky/unspecced/getTaggedSuggestions'
130
- import * as AppBskyUnspeccedGetTimelineSkeleton from './types/app/bsky/unspecced/getTimelineSkeleton'
131
130
  import * as AppBskyUnspeccedSearchActorsSkeleton from './types/app/bsky/unspecced/searchActorsSkeleton'
132
131
  import * as AppBskyUnspeccedSearchPostsSkeleton from './types/app/bsky/unspecced/searchPostsSkeleton'
133
132
 
@@ -1649,17 +1648,6 @@ export class AppBskyUnspeccedNS {
1649
1648
  return this._server.xrpc.method(nsid, cfg)
1650
1649
  }
1651
1650
 
1652
- getTimelineSkeleton<AV extends AuthVerifier>(
1653
- cfg: ConfigOf<
1654
- AV,
1655
- AppBskyUnspeccedGetTimelineSkeleton.Handler<ExtractAuth<AV>>,
1656
- AppBskyUnspeccedGetTimelineSkeleton.HandlerReqCtx<ExtractAuth<AV>>
1657
- >,
1658
- ) {
1659
- const nsid = 'app.bsky.unspecced.getTimelineSkeleton' // @ts-ignore
1660
- return this._server.xrpc.method(nsid, cfg)
1661
- }
1662
-
1663
1651
  searchActorsSkeleton<AV extends AuthVerifier>(
1664
1652
  cfg: ConfigOf<
1665
1653
  AV,