@atproto/api 0.12.25 → 0.13.0-rc.0

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 (854) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/OAUTH.md +273 -0
  3. package/README.md +79 -42
  4. package/dist/agent.d.ts +159 -107
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +1019 -341
  7. package/dist/agent.js.map +1 -1
  8. package/dist/atp-agent.d.ts +97 -0
  9. package/dist/atp-agent.d.ts.map +1 -0
  10. package/dist/atp-agent.js +439 -0
  11. package/dist/atp-agent.js.map +1 -0
  12. package/dist/atp-client.d.ts +57 -0
  13. package/dist/atp-client.d.ts.map +1 -0
  14. package/dist/atp-client.js +177 -0
  15. package/dist/atp-client.js.map +1 -0
  16. package/dist/bsky-agent.d.ts +3 -121
  17. package/dist/bsky-agent.d.ts.map +1 -1
  18. package/dist/bsky-agent.js +8 -1125
  19. package/dist/bsky-agent.js.map +1 -1
  20. package/dist/client/index.d.ts +95 -101
  21. package/dist/client/index.d.ts.map +1 -1
  22. package/dist/client/index.js +400 -1037
  23. package/dist/client/index.js.map +1 -1
  24. package/dist/client/types/app/bsky/actor/getPreferences.d.ts +4 -3
  25. package/dist/client/types/app/bsky/actor/getPreferences.d.ts.map +1 -1
  26. package/dist/client/types/app/bsky/actor/getPreferences.js +0 -6
  27. package/dist/client/types/app/bsky/actor/getPreferences.js.map +1 -1
  28. package/dist/client/types/app/bsky/actor/getProfile.d.ts +4 -3
  29. package/dist/client/types/app/bsky/actor/getProfile.d.ts.map +1 -1
  30. package/dist/client/types/app/bsky/actor/getProfile.js +0 -6
  31. package/dist/client/types/app/bsky/actor/getProfile.js.map +1 -1
  32. package/dist/client/types/app/bsky/actor/getProfiles.d.ts +4 -3
  33. package/dist/client/types/app/bsky/actor/getProfiles.d.ts.map +1 -1
  34. package/dist/client/types/app/bsky/actor/getProfiles.js +0 -6
  35. package/dist/client/types/app/bsky/actor/getProfiles.js.map +1 -1
  36. package/dist/client/types/app/bsky/actor/getSuggestions.d.ts +4 -3
  37. package/dist/client/types/app/bsky/actor/getSuggestions.d.ts.map +1 -1
  38. package/dist/client/types/app/bsky/actor/getSuggestions.js +0 -6
  39. package/dist/client/types/app/bsky/actor/getSuggestions.js.map +1 -1
  40. package/dist/client/types/app/bsky/actor/putPreferences.d.ts +5 -4
  41. package/dist/client/types/app/bsky/actor/putPreferences.d.ts.map +1 -1
  42. package/dist/client/types/app/bsky/actor/putPreferences.js +0 -6
  43. package/dist/client/types/app/bsky/actor/putPreferences.js.map +1 -1
  44. package/dist/client/types/app/bsky/actor/searchActors.d.ts +4 -3
  45. package/dist/client/types/app/bsky/actor/searchActors.d.ts.map +1 -1
  46. package/dist/client/types/app/bsky/actor/searchActors.js +0 -6
  47. package/dist/client/types/app/bsky/actor/searchActors.js.map +1 -1
  48. package/dist/client/types/app/bsky/actor/searchActorsTypeahead.d.ts +4 -3
  49. package/dist/client/types/app/bsky/actor/searchActorsTypeahead.d.ts.map +1 -1
  50. package/dist/client/types/app/bsky/actor/searchActorsTypeahead.js +0 -6
  51. package/dist/client/types/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
  52. package/dist/client/types/app/bsky/feed/describeFeedGenerator.d.ts +4 -3
  53. package/dist/client/types/app/bsky/feed/describeFeedGenerator.d.ts.map +1 -1
  54. package/dist/client/types/app/bsky/feed/describeFeedGenerator.js +0 -6
  55. package/dist/client/types/app/bsky/feed/describeFeedGenerator.js.map +1 -1
  56. package/dist/client/types/app/bsky/feed/getActorFeeds.d.ts +4 -3
  57. package/dist/client/types/app/bsky/feed/getActorFeeds.d.ts.map +1 -1
  58. package/dist/client/types/app/bsky/feed/getActorFeeds.js +0 -6
  59. package/dist/client/types/app/bsky/feed/getActorFeeds.js.map +1 -1
  60. package/dist/client/types/app/bsky/feed/getActorLikes.d.ts +4 -3
  61. package/dist/client/types/app/bsky/feed/getActorLikes.d.ts.map +1 -1
  62. package/dist/client/types/app/bsky/feed/getActorLikes.js +2 -2
  63. package/dist/client/types/app/bsky/feed/getActorLikes.js.map +1 -1
  64. package/dist/client/types/app/bsky/feed/getAuthorFeed.d.ts +4 -3
  65. package/dist/client/types/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  66. package/dist/client/types/app/bsky/feed/getAuthorFeed.js +2 -2
  67. package/dist/client/types/app/bsky/feed/getAuthorFeed.js.map +1 -1
  68. package/dist/client/types/app/bsky/feed/getFeed.d.ts +4 -3
  69. package/dist/client/types/app/bsky/feed/getFeed.d.ts.map +1 -1
  70. package/dist/client/types/app/bsky/feed/getFeed.js +1 -1
  71. package/dist/client/types/app/bsky/feed/getFeed.js.map +1 -1
  72. package/dist/client/types/app/bsky/feed/getFeedGenerator.d.ts +4 -3
  73. package/dist/client/types/app/bsky/feed/getFeedGenerator.d.ts.map +1 -1
  74. package/dist/client/types/app/bsky/feed/getFeedGenerator.js +0 -6
  75. package/dist/client/types/app/bsky/feed/getFeedGenerator.js.map +1 -1
  76. package/dist/client/types/app/bsky/feed/getFeedGenerators.d.ts +4 -3
  77. package/dist/client/types/app/bsky/feed/getFeedGenerators.d.ts.map +1 -1
  78. package/dist/client/types/app/bsky/feed/getFeedGenerators.js +0 -6
  79. package/dist/client/types/app/bsky/feed/getFeedGenerators.js.map +1 -1
  80. package/dist/client/types/app/bsky/feed/getFeedSkeleton.d.ts +4 -3
  81. package/dist/client/types/app/bsky/feed/getFeedSkeleton.d.ts.map +1 -1
  82. package/dist/client/types/app/bsky/feed/getFeedSkeleton.js +1 -1
  83. package/dist/client/types/app/bsky/feed/getFeedSkeleton.js.map +1 -1
  84. package/dist/client/types/app/bsky/feed/getLikes.d.ts +4 -3
  85. package/dist/client/types/app/bsky/feed/getLikes.d.ts.map +1 -1
  86. package/dist/client/types/app/bsky/feed/getLikes.js +0 -6
  87. package/dist/client/types/app/bsky/feed/getLikes.js.map +1 -1
  88. package/dist/client/types/app/bsky/feed/getListFeed.d.ts +4 -3
  89. package/dist/client/types/app/bsky/feed/getListFeed.d.ts.map +1 -1
  90. package/dist/client/types/app/bsky/feed/getListFeed.js +1 -1
  91. package/dist/client/types/app/bsky/feed/getListFeed.js.map +1 -1
  92. package/dist/client/types/app/bsky/feed/getPostThread.d.ts +4 -3
  93. package/dist/client/types/app/bsky/feed/getPostThread.d.ts.map +1 -1
  94. package/dist/client/types/app/bsky/feed/getPostThread.js +1 -1
  95. package/dist/client/types/app/bsky/feed/getPostThread.js.map +1 -1
  96. package/dist/client/types/app/bsky/feed/getPosts.d.ts +4 -3
  97. package/dist/client/types/app/bsky/feed/getPosts.d.ts.map +1 -1
  98. package/dist/client/types/app/bsky/feed/getPosts.js +0 -6
  99. package/dist/client/types/app/bsky/feed/getPosts.js.map +1 -1
  100. package/dist/client/types/app/bsky/feed/getRepostedBy.d.ts +4 -3
  101. package/dist/client/types/app/bsky/feed/getRepostedBy.d.ts.map +1 -1
  102. package/dist/client/types/app/bsky/feed/getRepostedBy.js +0 -6
  103. package/dist/client/types/app/bsky/feed/getRepostedBy.js.map +1 -1
  104. package/dist/client/types/app/bsky/feed/getSuggestedFeeds.d.ts +4 -3
  105. package/dist/client/types/app/bsky/feed/getSuggestedFeeds.d.ts.map +1 -1
  106. package/dist/client/types/app/bsky/feed/getSuggestedFeeds.js +0 -6
  107. package/dist/client/types/app/bsky/feed/getSuggestedFeeds.js.map +1 -1
  108. package/dist/client/types/app/bsky/feed/getTimeline.d.ts +4 -3
  109. package/dist/client/types/app/bsky/feed/getTimeline.d.ts.map +1 -1
  110. package/dist/client/types/app/bsky/feed/getTimeline.js +0 -6
  111. package/dist/client/types/app/bsky/feed/getTimeline.js.map +1 -1
  112. package/dist/client/types/app/bsky/feed/searchPosts.d.ts +4 -3
  113. package/dist/client/types/app/bsky/feed/searchPosts.d.ts.map +1 -1
  114. package/dist/client/types/app/bsky/feed/searchPosts.js +1 -1
  115. package/dist/client/types/app/bsky/feed/searchPosts.js.map +1 -1
  116. package/dist/client/types/app/bsky/feed/sendInteractions.d.ts +5 -4
  117. package/dist/client/types/app/bsky/feed/sendInteractions.d.ts.map +1 -1
  118. package/dist/client/types/app/bsky/feed/sendInteractions.js +0 -6
  119. package/dist/client/types/app/bsky/feed/sendInteractions.js.map +1 -1
  120. package/dist/client/types/app/bsky/graph/getActorStarterPacks.d.ts +4 -3
  121. package/dist/client/types/app/bsky/graph/getActorStarterPacks.d.ts.map +1 -1
  122. package/dist/client/types/app/bsky/graph/getActorStarterPacks.js +0 -6
  123. package/dist/client/types/app/bsky/graph/getActorStarterPacks.js.map +1 -1
  124. package/dist/client/types/app/bsky/graph/getBlocks.d.ts +4 -3
  125. package/dist/client/types/app/bsky/graph/getBlocks.d.ts.map +1 -1
  126. package/dist/client/types/app/bsky/graph/getBlocks.js +0 -6
  127. package/dist/client/types/app/bsky/graph/getBlocks.js.map +1 -1
  128. package/dist/client/types/app/bsky/graph/getFollowers.d.ts +4 -3
  129. package/dist/client/types/app/bsky/graph/getFollowers.d.ts.map +1 -1
  130. package/dist/client/types/app/bsky/graph/getFollowers.js +0 -6
  131. package/dist/client/types/app/bsky/graph/getFollowers.js.map +1 -1
  132. package/dist/client/types/app/bsky/graph/getFollows.d.ts +4 -3
  133. package/dist/client/types/app/bsky/graph/getFollows.d.ts.map +1 -1
  134. package/dist/client/types/app/bsky/graph/getFollows.js +0 -6
  135. package/dist/client/types/app/bsky/graph/getFollows.js.map +1 -1
  136. package/dist/client/types/app/bsky/graph/getKnownFollowers.d.ts +4 -3
  137. package/dist/client/types/app/bsky/graph/getKnownFollowers.d.ts.map +1 -1
  138. package/dist/client/types/app/bsky/graph/getKnownFollowers.js +0 -6
  139. package/dist/client/types/app/bsky/graph/getKnownFollowers.js.map +1 -1
  140. package/dist/client/types/app/bsky/graph/getList.d.ts +4 -3
  141. package/dist/client/types/app/bsky/graph/getList.d.ts.map +1 -1
  142. package/dist/client/types/app/bsky/graph/getList.js +0 -6
  143. package/dist/client/types/app/bsky/graph/getList.js.map +1 -1
  144. package/dist/client/types/app/bsky/graph/getListBlocks.d.ts +4 -3
  145. package/dist/client/types/app/bsky/graph/getListBlocks.d.ts.map +1 -1
  146. package/dist/client/types/app/bsky/graph/getListBlocks.js +0 -6
  147. package/dist/client/types/app/bsky/graph/getListBlocks.js.map +1 -1
  148. package/dist/client/types/app/bsky/graph/getListMutes.d.ts +4 -3
  149. package/dist/client/types/app/bsky/graph/getListMutes.d.ts.map +1 -1
  150. package/dist/client/types/app/bsky/graph/getListMutes.js +0 -6
  151. package/dist/client/types/app/bsky/graph/getListMutes.js.map +1 -1
  152. package/dist/client/types/app/bsky/graph/getLists.d.ts +4 -3
  153. package/dist/client/types/app/bsky/graph/getLists.d.ts.map +1 -1
  154. package/dist/client/types/app/bsky/graph/getLists.js +0 -6
  155. package/dist/client/types/app/bsky/graph/getLists.js.map +1 -1
  156. package/dist/client/types/app/bsky/graph/getMutes.d.ts +4 -3
  157. package/dist/client/types/app/bsky/graph/getMutes.d.ts.map +1 -1
  158. package/dist/client/types/app/bsky/graph/getMutes.js +0 -6
  159. package/dist/client/types/app/bsky/graph/getMutes.js.map +1 -1
  160. package/dist/client/types/app/bsky/graph/getRelationships.d.ts +4 -3
  161. package/dist/client/types/app/bsky/graph/getRelationships.d.ts.map +1 -1
  162. package/dist/client/types/app/bsky/graph/getRelationships.js +1 -1
  163. package/dist/client/types/app/bsky/graph/getRelationships.js.map +1 -1
  164. package/dist/client/types/app/bsky/graph/getStarterPack.d.ts +4 -3
  165. package/dist/client/types/app/bsky/graph/getStarterPack.d.ts.map +1 -1
  166. package/dist/client/types/app/bsky/graph/getStarterPack.js +0 -6
  167. package/dist/client/types/app/bsky/graph/getStarterPack.js.map +1 -1
  168. package/dist/client/types/app/bsky/graph/getStarterPacks.d.ts +4 -3
  169. package/dist/client/types/app/bsky/graph/getStarterPacks.d.ts.map +1 -1
  170. package/dist/client/types/app/bsky/graph/getStarterPacks.js +0 -6
  171. package/dist/client/types/app/bsky/graph/getStarterPacks.js.map +1 -1
  172. package/dist/client/types/app/bsky/graph/getSuggestedFollowsByActor.d.ts +4 -3
  173. package/dist/client/types/app/bsky/graph/getSuggestedFollowsByActor.d.ts.map +1 -1
  174. package/dist/client/types/app/bsky/graph/getSuggestedFollowsByActor.js +0 -6
  175. package/dist/client/types/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
  176. package/dist/client/types/app/bsky/graph/muteActor.d.ts +5 -4
  177. package/dist/client/types/app/bsky/graph/muteActor.d.ts.map +1 -1
  178. package/dist/client/types/app/bsky/graph/muteActor.js +0 -6
  179. package/dist/client/types/app/bsky/graph/muteActor.js.map +1 -1
  180. package/dist/client/types/app/bsky/graph/muteActorList.d.ts +5 -4
  181. package/dist/client/types/app/bsky/graph/muteActorList.d.ts.map +1 -1
  182. package/dist/client/types/app/bsky/graph/muteActorList.js +0 -6
  183. package/dist/client/types/app/bsky/graph/muteActorList.js.map +1 -1
  184. package/dist/client/types/app/bsky/graph/muteThread.d.ts +5 -4
  185. package/dist/client/types/app/bsky/graph/muteThread.d.ts.map +1 -1
  186. package/dist/client/types/app/bsky/graph/muteThread.js +0 -6
  187. package/dist/client/types/app/bsky/graph/muteThread.js.map +1 -1
  188. package/dist/client/types/app/bsky/graph/unmuteActor.d.ts +5 -4
  189. package/dist/client/types/app/bsky/graph/unmuteActor.d.ts.map +1 -1
  190. package/dist/client/types/app/bsky/graph/unmuteActor.js +0 -6
  191. package/dist/client/types/app/bsky/graph/unmuteActor.js.map +1 -1
  192. package/dist/client/types/app/bsky/graph/unmuteActorList.d.ts +5 -4
  193. package/dist/client/types/app/bsky/graph/unmuteActorList.d.ts.map +1 -1
  194. package/dist/client/types/app/bsky/graph/unmuteActorList.js +0 -6
  195. package/dist/client/types/app/bsky/graph/unmuteActorList.js.map +1 -1
  196. package/dist/client/types/app/bsky/graph/unmuteThread.d.ts +5 -4
  197. package/dist/client/types/app/bsky/graph/unmuteThread.d.ts.map +1 -1
  198. package/dist/client/types/app/bsky/graph/unmuteThread.js +0 -6
  199. package/dist/client/types/app/bsky/graph/unmuteThread.js.map +1 -1
  200. package/dist/client/types/app/bsky/labeler/getServices.d.ts +4 -3
  201. package/dist/client/types/app/bsky/labeler/getServices.d.ts.map +1 -1
  202. package/dist/client/types/app/bsky/labeler/getServices.js +0 -6
  203. package/dist/client/types/app/bsky/labeler/getServices.js.map +1 -1
  204. package/dist/client/types/app/bsky/notification/getUnreadCount.d.ts +4 -3
  205. package/dist/client/types/app/bsky/notification/getUnreadCount.d.ts.map +1 -1
  206. package/dist/client/types/app/bsky/notification/getUnreadCount.js +0 -6
  207. package/dist/client/types/app/bsky/notification/getUnreadCount.js.map +1 -1
  208. package/dist/client/types/app/bsky/notification/listNotifications.d.ts +4 -3
  209. package/dist/client/types/app/bsky/notification/listNotifications.d.ts.map +1 -1
  210. package/dist/client/types/app/bsky/notification/listNotifications.js +0 -6
  211. package/dist/client/types/app/bsky/notification/listNotifications.js.map +1 -1
  212. package/dist/client/types/app/bsky/notification/putPreferences.d.ts +5 -4
  213. package/dist/client/types/app/bsky/notification/putPreferences.d.ts.map +1 -1
  214. package/dist/client/types/app/bsky/notification/putPreferences.js +0 -6
  215. package/dist/client/types/app/bsky/notification/putPreferences.js.map +1 -1
  216. package/dist/client/types/app/bsky/notification/registerPush.d.ts +5 -4
  217. package/dist/client/types/app/bsky/notification/registerPush.d.ts.map +1 -1
  218. package/dist/client/types/app/bsky/notification/registerPush.js +0 -6
  219. package/dist/client/types/app/bsky/notification/registerPush.js.map +1 -1
  220. package/dist/client/types/app/bsky/notification/updateSeen.d.ts +5 -4
  221. package/dist/client/types/app/bsky/notification/updateSeen.d.ts.map +1 -1
  222. package/dist/client/types/app/bsky/notification/updateSeen.js +0 -6
  223. package/dist/client/types/app/bsky/notification/updateSeen.js.map +1 -1
  224. package/dist/client/types/app/bsky/unspecced/getPopularFeedGenerators.d.ts +4 -3
  225. package/dist/client/types/app/bsky/unspecced/getPopularFeedGenerators.d.ts.map +1 -1
  226. package/dist/client/types/app/bsky/unspecced/getPopularFeedGenerators.js +0 -6
  227. package/dist/client/types/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
  228. package/dist/client/types/app/bsky/unspecced/getSuggestionsSkeleton.d.ts +4 -3
  229. package/dist/client/types/app/bsky/unspecced/getSuggestionsSkeleton.d.ts.map +1 -1
  230. package/dist/client/types/app/bsky/unspecced/getSuggestionsSkeleton.js +0 -6
  231. package/dist/client/types/app/bsky/unspecced/getSuggestionsSkeleton.js.map +1 -1
  232. package/dist/client/types/app/bsky/unspecced/getTaggedSuggestions.d.ts +4 -3
  233. package/dist/client/types/app/bsky/unspecced/getTaggedSuggestions.d.ts.map +1 -1
  234. package/dist/client/types/app/bsky/unspecced/getTaggedSuggestions.js +0 -6
  235. package/dist/client/types/app/bsky/unspecced/getTaggedSuggestions.js.map +1 -1
  236. package/dist/client/types/app/bsky/unspecced/searchActorsSkeleton.d.ts +4 -3
  237. package/dist/client/types/app/bsky/unspecced/searchActorsSkeleton.d.ts.map +1 -1
  238. package/dist/client/types/app/bsky/unspecced/searchActorsSkeleton.js +1 -1
  239. package/dist/client/types/app/bsky/unspecced/searchActorsSkeleton.js.map +1 -1
  240. package/dist/client/types/app/bsky/unspecced/searchPostsSkeleton.d.ts +4 -3
  241. package/dist/client/types/app/bsky/unspecced/searchPostsSkeleton.d.ts.map +1 -1
  242. package/dist/client/types/app/bsky/unspecced/searchPostsSkeleton.js +1 -1
  243. package/dist/client/types/app/bsky/unspecced/searchPostsSkeleton.js.map +1 -1
  244. package/dist/client/types/chat/bsky/actor/deleteAccount.d.ts +4 -3
  245. package/dist/client/types/chat/bsky/actor/deleteAccount.d.ts.map +1 -1
  246. package/dist/client/types/chat/bsky/actor/deleteAccount.js +0 -6
  247. package/dist/client/types/chat/bsky/actor/deleteAccount.js.map +1 -1
  248. package/dist/client/types/chat/bsky/actor/exportAccountData.d.ts +4 -3
  249. package/dist/client/types/chat/bsky/actor/exportAccountData.d.ts.map +1 -1
  250. package/dist/client/types/chat/bsky/actor/exportAccountData.js +0 -6
  251. package/dist/client/types/chat/bsky/actor/exportAccountData.js.map +1 -1
  252. package/dist/client/types/chat/bsky/convo/deleteMessageForSelf.d.ts +5 -4
  253. package/dist/client/types/chat/bsky/convo/deleteMessageForSelf.d.ts.map +1 -1
  254. package/dist/client/types/chat/bsky/convo/deleteMessageForSelf.js +0 -6
  255. package/dist/client/types/chat/bsky/convo/deleteMessageForSelf.js.map +1 -1
  256. package/dist/client/types/chat/bsky/convo/getConvo.d.ts +4 -3
  257. package/dist/client/types/chat/bsky/convo/getConvo.d.ts.map +1 -1
  258. package/dist/client/types/chat/bsky/convo/getConvo.js +0 -6
  259. package/dist/client/types/chat/bsky/convo/getConvo.js.map +1 -1
  260. package/dist/client/types/chat/bsky/convo/getConvoForMembers.d.ts +4 -3
  261. package/dist/client/types/chat/bsky/convo/getConvoForMembers.d.ts.map +1 -1
  262. package/dist/client/types/chat/bsky/convo/getConvoForMembers.js +0 -6
  263. package/dist/client/types/chat/bsky/convo/getConvoForMembers.js.map +1 -1
  264. package/dist/client/types/chat/bsky/convo/getLog.d.ts +4 -3
  265. package/dist/client/types/chat/bsky/convo/getLog.d.ts.map +1 -1
  266. package/dist/client/types/chat/bsky/convo/getLog.js +0 -6
  267. package/dist/client/types/chat/bsky/convo/getLog.js.map +1 -1
  268. package/dist/client/types/chat/bsky/convo/getMessages.d.ts +4 -3
  269. package/dist/client/types/chat/bsky/convo/getMessages.d.ts.map +1 -1
  270. package/dist/client/types/chat/bsky/convo/getMessages.js +0 -6
  271. package/dist/client/types/chat/bsky/convo/getMessages.js.map +1 -1
  272. package/dist/client/types/chat/bsky/convo/leaveConvo.d.ts +5 -4
  273. package/dist/client/types/chat/bsky/convo/leaveConvo.d.ts.map +1 -1
  274. package/dist/client/types/chat/bsky/convo/leaveConvo.js +0 -6
  275. package/dist/client/types/chat/bsky/convo/leaveConvo.js.map +1 -1
  276. package/dist/client/types/chat/bsky/convo/listConvos.d.ts +4 -3
  277. package/dist/client/types/chat/bsky/convo/listConvos.d.ts.map +1 -1
  278. package/dist/client/types/chat/bsky/convo/listConvos.js +0 -6
  279. package/dist/client/types/chat/bsky/convo/listConvos.js.map +1 -1
  280. package/dist/client/types/chat/bsky/convo/muteConvo.d.ts +5 -4
  281. package/dist/client/types/chat/bsky/convo/muteConvo.d.ts.map +1 -1
  282. package/dist/client/types/chat/bsky/convo/muteConvo.js +0 -6
  283. package/dist/client/types/chat/bsky/convo/muteConvo.js.map +1 -1
  284. package/dist/client/types/chat/bsky/convo/sendMessage.d.ts +5 -4
  285. package/dist/client/types/chat/bsky/convo/sendMessage.d.ts.map +1 -1
  286. package/dist/client/types/chat/bsky/convo/sendMessage.js +0 -6
  287. package/dist/client/types/chat/bsky/convo/sendMessage.js.map +1 -1
  288. package/dist/client/types/chat/bsky/convo/sendMessageBatch.d.ts +5 -4
  289. package/dist/client/types/chat/bsky/convo/sendMessageBatch.d.ts.map +1 -1
  290. package/dist/client/types/chat/bsky/convo/sendMessageBatch.js +0 -6
  291. package/dist/client/types/chat/bsky/convo/sendMessageBatch.js.map +1 -1
  292. package/dist/client/types/chat/bsky/convo/unmuteConvo.d.ts +5 -4
  293. package/dist/client/types/chat/bsky/convo/unmuteConvo.d.ts.map +1 -1
  294. package/dist/client/types/chat/bsky/convo/unmuteConvo.js +0 -6
  295. package/dist/client/types/chat/bsky/convo/unmuteConvo.js.map +1 -1
  296. package/dist/client/types/chat/bsky/convo/updateRead.d.ts +5 -4
  297. package/dist/client/types/chat/bsky/convo/updateRead.d.ts.map +1 -1
  298. package/dist/client/types/chat/bsky/convo/updateRead.js +0 -6
  299. package/dist/client/types/chat/bsky/convo/updateRead.js.map +1 -1
  300. package/dist/client/types/chat/bsky/moderation/getActorMetadata.d.ts +4 -3
  301. package/dist/client/types/chat/bsky/moderation/getActorMetadata.d.ts.map +1 -1
  302. package/dist/client/types/chat/bsky/moderation/getActorMetadata.js +0 -6
  303. package/dist/client/types/chat/bsky/moderation/getActorMetadata.js.map +1 -1
  304. package/dist/client/types/chat/bsky/moderation/getMessageContext.d.ts +4 -3
  305. package/dist/client/types/chat/bsky/moderation/getMessageContext.d.ts.map +1 -1
  306. package/dist/client/types/chat/bsky/moderation/getMessageContext.js +0 -6
  307. package/dist/client/types/chat/bsky/moderation/getMessageContext.js.map +1 -1
  308. package/dist/client/types/chat/bsky/moderation/updateActorAccess.d.ts +5 -4
  309. package/dist/client/types/chat/bsky/moderation/updateActorAccess.d.ts.map +1 -1
  310. package/dist/client/types/chat/bsky/moderation/updateActorAccess.js +0 -6
  311. package/dist/client/types/chat/bsky/moderation/updateActorAccess.js.map +1 -1
  312. package/dist/client/types/com/atproto/admin/deleteAccount.d.ts +5 -4
  313. package/dist/client/types/com/atproto/admin/deleteAccount.d.ts.map +1 -1
  314. package/dist/client/types/com/atproto/admin/deleteAccount.js +0 -6
  315. package/dist/client/types/com/atproto/admin/deleteAccount.js.map +1 -1
  316. package/dist/client/types/com/atproto/admin/disableAccountInvites.d.ts +5 -4
  317. package/dist/client/types/com/atproto/admin/disableAccountInvites.d.ts.map +1 -1
  318. package/dist/client/types/com/atproto/admin/disableAccountInvites.js +0 -6
  319. package/dist/client/types/com/atproto/admin/disableAccountInvites.js.map +1 -1
  320. package/dist/client/types/com/atproto/admin/disableInviteCodes.d.ts +5 -4
  321. package/dist/client/types/com/atproto/admin/disableInviteCodes.d.ts.map +1 -1
  322. package/dist/client/types/com/atproto/admin/disableInviteCodes.js +0 -6
  323. package/dist/client/types/com/atproto/admin/disableInviteCodes.js.map +1 -1
  324. package/dist/client/types/com/atproto/admin/enableAccountInvites.d.ts +5 -4
  325. package/dist/client/types/com/atproto/admin/enableAccountInvites.d.ts.map +1 -1
  326. package/dist/client/types/com/atproto/admin/enableAccountInvites.js +0 -6
  327. package/dist/client/types/com/atproto/admin/enableAccountInvites.js.map +1 -1
  328. package/dist/client/types/com/atproto/admin/getAccountInfo.d.ts +4 -3
  329. package/dist/client/types/com/atproto/admin/getAccountInfo.d.ts.map +1 -1
  330. package/dist/client/types/com/atproto/admin/getAccountInfo.js +0 -6
  331. package/dist/client/types/com/atproto/admin/getAccountInfo.js.map +1 -1
  332. package/dist/client/types/com/atproto/admin/getAccountInfos.d.ts +4 -3
  333. package/dist/client/types/com/atproto/admin/getAccountInfos.d.ts.map +1 -1
  334. package/dist/client/types/com/atproto/admin/getAccountInfos.js +0 -6
  335. package/dist/client/types/com/atproto/admin/getAccountInfos.js.map +1 -1
  336. package/dist/client/types/com/atproto/admin/getInviteCodes.d.ts +4 -3
  337. package/dist/client/types/com/atproto/admin/getInviteCodes.d.ts.map +1 -1
  338. package/dist/client/types/com/atproto/admin/getInviteCodes.js +0 -6
  339. package/dist/client/types/com/atproto/admin/getInviteCodes.js.map +1 -1
  340. package/dist/client/types/com/atproto/admin/getSubjectStatus.d.ts +4 -3
  341. package/dist/client/types/com/atproto/admin/getSubjectStatus.d.ts.map +1 -1
  342. package/dist/client/types/com/atproto/admin/getSubjectStatus.js +0 -6
  343. package/dist/client/types/com/atproto/admin/getSubjectStatus.js.map +1 -1
  344. package/dist/client/types/com/atproto/admin/searchAccounts.d.ts +4 -3
  345. package/dist/client/types/com/atproto/admin/searchAccounts.d.ts.map +1 -1
  346. package/dist/client/types/com/atproto/admin/searchAccounts.js +0 -6
  347. package/dist/client/types/com/atproto/admin/searchAccounts.js.map +1 -1
  348. package/dist/client/types/com/atproto/admin/sendEmail.d.ts +5 -4
  349. package/dist/client/types/com/atproto/admin/sendEmail.d.ts.map +1 -1
  350. package/dist/client/types/com/atproto/admin/sendEmail.js +0 -6
  351. package/dist/client/types/com/atproto/admin/sendEmail.js.map +1 -1
  352. package/dist/client/types/com/atproto/admin/updateAccountEmail.d.ts +5 -4
  353. package/dist/client/types/com/atproto/admin/updateAccountEmail.d.ts.map +1 -1
  354. package/dist/client/types/com/atproto/admin/updateAccountEmail.js +0 -6
  355. package/dist/client/types/com/atproto/admin/updateAccountEmail.js.map +1 -1
  356. package/dist/client/types/com/atproto/admin/updateAccountHandle.d.ts +5 -4
  357. package/dist/client/types/com/atproto/admin/updateAccountHandle.d.ts.map +1 -1
  358. package/dist/client/types/com/atproto/admin/updateAccountHandle.js +0 -6
  359. package/dist/client/types/com/atproto/admin/updateAccountHandle.js.map +1 -1
  360. package/dist/client/types/com/atproto/admin/updateAccountPassword.d.ts +5 -4
  361. package/dist/client/types/com/atproto/admin/updateAccountPassword.d.ts.map +1 -1
  362. package/dist/client/types/com/atproto/admin/updateAccountPassword.js +0 -6
  363. package/dist/client/types/com/atproto/admin/updateAccountPassword.js.map +1 -1
  364. package/dist/client/types/com/atproto/admin/updateSubjectStatus.d.ts +5 -4
  365. package/dist/client/types/com/atproto/admin/updateSubjectStatus.d.ts.map +1 -1
  366. package/dist/client/types/com/atproto/admin/updateSubjectStatus.js +0 -6
  367. package/dist/client/types/com/atproto/admin/updateSubjectStatus.js.map +1 -1
  368. package/dist/client/types/com/atproto/identity/getRecommendedDidCredentials.d.ts +4 -3
  369. package/dist/client/types/com/atproto/identity/getRecommendedDidCredentials.d.ts.map +1 -1
  370. package/dist/client/types/com/atproto/identity/getRecommendedDidCredentials.js +0 -6
  371. package/dist/client/types/com/atproto/identity/getRecommendedDidCredentials.js.map +1 -1
  372. package/dist/client/types/com/atproto/identity/requestPlcOperationSignature.d.ts +4 -3
  373. package/dist/client/types/com/atproto/identity/requestPlcOperationSignature.d.ts.map +1 -1
  374. package/dist/client/types/com/atproto/identity/requestPlcOperationSignature.js +0 -6
  375. package/dist/client/types/com/atproto/identity/requestPlcOperationSignature.js.map +1 -1
  376. package/dist/client/types/com/atproto/identity/resolveHandle.d.ts +4 -3
  377. package/dist/client/types/com/atproto/identity/resolveHandle.d.ts.map +1 -1
  378. package/dist/client/types/com/atproto/identity/resolveHandle.js +0 -6
  379. package/dist/client/types/com/atproto/identity/resolveHandle.js.map +1 -1
  380. package/dist/client/types/com/atproto/identity/signPlcOperation.d.ts +5 -4
  381. package/dist/client/types/com/atproto/identity/signPlcOperation.d.ts.map +1 -1
  382. package/dist/client/types/com/atproto/identity/signPlcOperation.js +0 -6
  383. package/dist/client/types/com/atproto/identity/signPlcOperation.js.map +1 -1
  384. package/dist/client/types/com/atproto/identity/submitPlcOperation.d.ts +5 -4
  385. package/dist/client/types/com/atproto/identity/submitPlcOperation.d.ts.map +1 -1
  386. package/dist/client/types/com/atproto/identity/submitPlcOperation.js +0 -6
  387. package/dist/client/types/com/atproto/identity/submitPlcOperation.js.map +1 -1
  388. package/dist/client/types/com/atproto/identity/updateHandle.d.ts +5 -4
  389. package/dist/client/types/com/atproto/identity/updateHandle.d.ts.map +1 -1
  390. package/dist/client/types/com/atproto/identity/updateHandle.js +0 -6
  391. package/dist/client/types/com/atproto/identity/updateHandle.js.map +1 -1
  392. package/dist/client/types/com/atproto/label/queryLabels.d.ts +4 -3
  393. package/dist/client/types/com/atproto/label/queryLabels.d.ts.map +1 -1
  394. package/dist/client/types/com/atproto/label/queryLabels.js +0 -6
  395. package/dist/client/types/com/atproto/label/queryLabels.js.map +1 -1
  396. package/dist/client/types/com/atproto/moderation/createReport.d.ts +5 -4
  397. package/dist/client/types/com/atproto/moderation/createReport.d.ts.map +1 -1
  398. package/dist/client/types/com/atproto/moderation/createReport.js +0 -6
  399. package/dist/client/types/com/atproto/moderation/createReport.js.map +1 -1
  400. package/dist/client/types/com/atproto/repo/applyWrites.d.ts +5 -4
  401. package/dist/client/types/com/atproto/repo/applyWrites.d.ts.map +1 -1
  402. package/dist/client/types/com/atproto/repo/applyWrites.js +1 -1
  403. package/dist/client/types/com/atproto/repo/applyWrites.js.map +1 -1
  404. package/dist/client/types/com/atproto/repo/createRecord.d.ts +5 -4
  405. package/dist/client/types/com/atproto/repo/createRecord.d.ts.map +1 -1
  406. package/dist/client/types/com/atproto/repo/createRecord.js +1 -1
  407. package/dist/client/types/com/atproto/repo/createRecord.js.map +1 -1
  408. package/dist/client/types/com/atproto/repo/deleteRecord.d.ts +5 -4
  409. package/dist/client/types/com/atproto/repo/deleteRecord.d.ts.map +1 -1
  410. package/dist/client/types/com/atproto/repo/deleteRecord.js +1 -1
  411. package/dist/client/types/com/atproto/repo/deleteRecord.js.map +1 -1
  412. package/dist/client/types/com/atproto/repo/describeRepo.d.ts +4 -3
  413. package/dist/client/types/com/atproto/repo/describeRepo.d.ts.map +1 -1
  414. package/dist/client/types/com/atproto/repo/describeRepo.js +0 -6
  415. package/dist/client/types/com/atproto/repo/describeRepo.js.map +1 -1
  416. package/dist/client/types/com/atproto/repo/getRecord.d.ts +4 -3
  417. package/dist/client/types/com/atproto/repo/getRecord.d.ts.map +1 -1
  418. package/dist/client/types/com/atproto/repo/getRecord.js +0 -6
  419. package/dist/client/types/com/atproto/repo/getRecord.js.map +1 -1
  420. package/dist/client/types/com/atproto/repo/importRepo.d.ts +6 -5
  421. package/dist/client/types/com/atproto/repo/importRepo.d.ts.map +1 -1
  422. package/dist/client/types/com/atproto/repo/importRepo.js +0 -6
  423. package/dist/client/types/com/atproto/repo/importRepo.js.map +1 -1
  424. package/dist/client/types/com/atproto/repo/listMissingBlobs.d.ts +4 -3
  425. package/dist/client/types/com/atproto/repo/listMissingBlobs.d.ts.map +1 -1
  426. package/dist/client/types/com/atproto/repo/listMissingBlobs.js +0 -6
  427. package/dist/client/types/com/atproto/repo/listMissingBlobs.js.map +1 -1
  428. package/dist/client/types/com/atproto/repo/listRecords.d.ts +4 -3
  429. package/dist/client/types/com/atproto/repo/listRecords.d.ts.map +1 -1
  430. package/dist/client/types/com/atproto/repo/listRecords.js +0 -6
  431. package/dist/client/types/com/atproto/repo/listRecords.js.map +1 -1
  432. package/dist/client/types/com/atproto/repo/putRecord.d.ts +5 -4
  433. package/dist/client/types/com/atproto/repo/putRecord.d.ts.map +1 -1
  434. package/dist/client/types/com/atproto/repo/putRecord.js +1 -1
  435. package/dist/client/types/com/atproto/repo/putRecord.js.map +1 -1
  436. package/dist/client/types/com/atproto/repo/uploadBlob.d.ts +6 -5
  437. package/dist/client/types/com/atproto/repo/uploadBlob.d.ts.map +1 -1
  438. package/dist/client/types/com/atproto/repo/uploadBlob.js +0 -6
  439. package/dist/client/types/com/atproto/repo/uploadBlob.js.map +1 -1
  440. package/dist/client/types/com/atproto/server/activateAccount.d.ts +4 -3
  441. package/dist/client/types/com/atproto/server/activateAccount.d.ts.map +1 -1
  442. package/dist/client/types/com/atproto/server/activateAccount.js +0 -6
  443. package/dist/client/types/com/atproto/server/activateAccount.js.map +1 -1
  444. package/dist/client/types/com/atproto/server/checkAccountStatus.d.ts +4 -3
  445. package/dist/client/types/com/atproto/server/checkAccountStatus.d.ts.map +1 -1
  446. package/dist/client/types/com/atproto/server/checkAccountStatus.js +0 -6
  447. package/dist/client/types/com/atproto/server/checkAccountStatus.js.map +1 -1
  448. package/dist/client/types/com/atproto/server/confirmEmail.d.ts +5 -4
  449. package/dist/client/types/com/atproto/server/confirmEmail.d.ts.map +1 -1
  450. package/dist/client/types/com/atproto/server/confirmEmail.js +4 -4
  451. package/dist/client/types/com/atproto/server/confirmEmail.js.map +1 -1
  452. package/dist/client/types/com/atproto/server/createAccount.d.ts +5 -4
  453. package/dist/client/types/com/atproto/server/createAccount.d.ts.map +1 -1
  454. package/dist/client/types/com/atproto/server/createAccount.js +7 -7
  455. package/dist/client/types/com/atproto/server/createAccount.js.map +1 -1
  456. package/dist/client/types/com/atproto/server/createAppPassword.d.ts +5 -4
  457. package/dist/client/types/com/atproto/server/createAppPassword.d.ts.map +1 -1
  458. package/dist/client/types/com/atproto/server/createAppPassword.js +1 -1
  459. package/dist/client/types/com/atproto/server/createAppPassword.js.map +1 -1
  460. package/dist/client/types/com/atproto/server/createInviteCode.d.ts +5 -4
  461. package/dist/client/types/com/atproto/server/createInviteCode.d.ts.map +1 -1
  462. package/dist/client/types/com/atproto/server/createInviteCode.js +0 -6
  463. package/dist/client/types/com/atproto/server/createInviteCode.js.map +1 -1
  464. package/dist/client/types/com/atproto/server/createInviteCodes.d.ts +5 -4
  465. package/dist/client/types/com/atproto/server/createInviteCodes.d.ts.map +1 -1
  466. package/dist/client/types/com/atproto/server/createInviteCodes.js +0 -6
  467. package/dist/client/types/com/atproto/server/createInviteCodes.js.map +1 -1
  468. package/dist/client/types/com/atproto/server/createSession.d.ts +5 -4
  469. package/dist/client/types/com/atproto/server/createSession.d.ts.map +1 -1
  470. package/dist/client/types/com/atproto/server/createSession.js +2 -2
  471. package/dist/client/types/com/atproto/server/createSession.js.map +1 -1
  472. package/dist/client/types/com/atproto/server/deactivateAccount.d.ts +5 -4
  473. package/dist/client/types/com/atproto/server/deactivateAccount.d.ts.map +1 -1
  474. package/dist/client/types/com/atproto/server/deactivateAccount.js +0 -6
  475. package/dist/client/types/com/atproto/server/deactivateAccount.js.map +1 -1
  476. package/dist/client/types/com/atproto/server/deleteAccount.d.ts +5 -4
  477. package/dist/client/types/com/atproto/server/deleteAccount.d.ts.map +1 -1
  478. package/dist/client/types/com/atproto/server/deleteAccount.js +2 -2
  479. package/dist/client/types/com/atproto/server/deleteAccount.js.map +1 -1
  480. package/dist/client/types/com/atproto/server/deleteSession.d.ts +4 -3
  481. package/dist/client/types/com/atproto/server/deleteSession.d.ts.map +1 -1
  482. package/dist/client/types/com/atproto/server/deleteSession.js +0 -6
  483. package/dist/client/types/com/atproto/server/deleteSession.js.map +1 -1
  484. package/dist/client/types/com/atproto/server/describeServer.d.ts +4 -3
  485. package/dist/client/types/com/atproto/server/describeServer.d.ts.map +1 -1
  486. package/dist/client/types/com/atproto/server/describeServer.js +0 -6
  487. package/dist/client/types/com/atproto/server/describeServer.js.map +1 -1
  488. package/dist/client/types/com/atproto/server/getAccountInviteCodes.d.ts +4 -3
  489. package/dist/client/types/com/atproto/server/getAccountInviteCodes.d.ts.map +1 -1
  490. package/dist/client/types/com/atproto/server/getAccountInviteCodes.js +1 -1
  491. package/dist/client/types/com/atproto/server/getAccountInviteCodes.js.map +1 -1
  492. package/dist/client/types/com/atproto/server/getServiceAuth.d.ts +4 -3
  493. package/dist/client/types/com/atproto/server/getServiceAuth.d.ts.map +1 -1
  494. package/dist/client/types/com/atproto/server/getServiceAuth.js +0 -6
  495. package/dist/client/types/com/atproto/server/getServiceAuth.js.map +1 -1
  496. package/dist/client/types/com/atproto/server/getSession.d.ts +4 -3
  497. package/dist/client/types/com/atproto/server/getSession.d.ts.map +1 -1
  498. package/dist/client/types/com/atproto/server/getSession.js +0 -6
  499. package/dist/client/types/com/atproto/server/getSession.js.map +1 -1
  500. package/dist/client/types/com/atproto/server/listAppPasswords.d.ts +4 -3
  501. package/dist/client/types/com/atproto/server/listAppPasswords.d.ts.map +1 -1
  502. package/dist/client/types/com/atproto/server/listAppPasswords.js +1 -1
  503. package/dist/client/types/com/atproto/server/listAppPasswords.js.map +1 -1
  504. package/dist/client/types/com/atproto/server/refreshSession.d.ts +4 -3
  505. package/dist/client/types/com/atproto/server/refreshSession.d.ts.map +1 -1
  506. package/dist/client/types/com/atproto/server/refreshSession.js +1 -1
  507. package/dist/client/types/com/atproto/server/refreshSession.js.map +1 -1
  508. package/dist/client/types/com/atproto/server/requestAccountDelete.d.ts +4 -3
  509. package/dist/client/types/com/atproto/server/requestAccountDelete.d.ts.map +1 -1
  510. package/dist/client/types/com/atproto/server/requestAccountDelete.js +0 -6
  511. package/dist/client/types/com/atproto/server/requestAccountDelete.js.map +1 -1
  512. package/dist/client/types/com/atproto/server/requestEmailConfirmation.d.ts +4 -3
  513. package/dist/client/types/com/atproto/server/requestEmailConfirmation.d.ts.map +1 -1
  514. package/dist/client/types/com/atproto/server/requestEmailConfirmation.js +0 -6
  515. package/dist/client/types/com/atproto/server/requestEmailConfirmation.js.map +1 -1
  516. package/dist/client/types/com/atproto/server/requestEmailUpdate.d.ts +4 -3
  517. package/dist/client/types/com/atproto/server/requestEmailUpdate.d.ts.map +1 -1
  518. package/dist/client/types/com/atproto/server/requestEmailUpdate.js +0 -6
  519. package/dist/client/types/com/atproto/server/requestEmailUpdate.js.map +1 -1
  520. package/dist/client/types/com/atproto/server/requestPasswordReset.d.ts +5 -4
  521. package/dist/client/types/com/atproto/server/requestPasswordReset.d.ts.map +1 -1
  522. package/dist/client/types/com/atproto/server/requestPasswordReset.js +0 -6
  523. package/dist/client/types/com/atproto/server/requestPasswordReset.js.map +1 -1
  524. package/dist/client/types/com/atproto/server/reserveSigningKey.d.ts +5 -4
  525. package/dist/client/types/com/atproto/server/reserveSigningKey.d.ts.map +1 -1
  526. package/dist/client/types/com/atproto/server/reserveSigningKey.js +0 -6
  527. package/dist/client/types/com/atproto/server/reserveSigningKey.js.map +1 -1
  528. package/dist/client/types/com/atproto/server/resetPassword.d.ts +5 -4
  529. package/dist/client/types/com/atproto/server/resetPassword.d.ts.map +1 -1
  530. package/dist/client/types/com/atproto/server/resetPassword.js +2 -2
  531. package/dist/client/types/com/atproto/server/resetPassword.js.map +1 -1
  532. package/dist/client/types/com/atproto/server/revokeAppPassword.d.ts +5 -4
  533. package/dist/client/types/com/atproto/server/revokeAppPassword.d.ts.map +1 -1
  534. package/dist/client/types/com/atproto/server/revokeAppPassword.js +0 -6
  535. package/dist/client/types/com/atproto/server/revokeAppPassword.js.map +1 -1
  536. package/dist/client/types/com/atproto/server/updateEmail.d.ts +5 -4
  537. package/dist/client/types/com/atproto/server/updateEmail.d.ts.map +1 -1
  538. package/dist/client/types/com/atproto/server/updateEmail.js +3 -3
  539. package/dist/client/types/com/atproto/server/updateEmail.js.map +1 -1
  540. package/dist/client/types/com/atproto/sync/getBlob.d.ts +4 -3
  541. package/dist/client/types/com/atproto/sync/getBlob.d.ts.map +1 -1
  542. package/dist/client/types/com/atproto/sync/getBlob.js +5 -5
  543. package/dist/client/types/com/atproto/sync/getBlob.js.map +1 -1
  544. package/dist/client/types/com/atproto/sync/getBlocks.d.ts +4 -3
  545. package/dist/client/types/com/atproto/sync/getBlocks.d.ts.map +1 -1
  546. package/dist/client/types/com/atproto/sync/getBlocks.js +5 -5
  547. package/dist/client/types/com/atproto/sync/getBlocks.js.map +1 -1
  548. package/dist/client/types/com/atproto/sync/getCheckout.d.ts +4 -3
  549. package/dist/client/types/com/atproto/sync/getCheckout.d.ts.map +1 -1
  550. package/dist/client/types/com/atproto/sync/getCheckout.js +0 -6
  551. package/dist/client/types/com/atproto/sync/getCheckout.js.map +1 -1
  552. package/dist/client/types/com/atproto/sync/getHead.d.ts +4 -3
  553. package/dist/client/types/com/atproto/sync/getHead.d.ts.map +1 -1
  554. package/dist/client/types/com/atproto/sync/getHead.js +1 -1
  555. package/dist/client/types/com/atproto/sync/getHead.js.map +1 -1
  556. package/dist/client/types/com/atproto/sync/getLatestCommit.d.ts +4 -3
  557. package/dist/client/types/com/atproto/sync/getLatestCommit.d.ts.map +1 -1
  558. package/dist/client/types/com/atproto/sync/getLatestCommit.js +4 -4
  559. package/dist/client/types/com/atproto/sync/getLatestCommit.js.map +1 -1
  560. package/dist/client/types/com/atproto/sync/getRecord.d.ts +4 -3
  561. package/dist/client/types/com/atproto/sync/getRecord.d.ts.map +1 -1
  562. package/dist/client/types/com/atproto/sync/getRecord.js +5 -5
  563. package/dist/client/types/com/atproto/sync/getRecord.js.map +1 -1
  564. package/dist/client/types/com/atproto/sync/getRepo.d.ts +4 -3
  565. package/dist/client/types/com/atproto/sync/getRepo.d.ts.map +1 -1
  566. package/dist/client/types/com/atproto/sync/getRepo.js +4 -4
  567. package/dist/client/types/com/atproto/sync/getRepo.js.map +1 -1
  568. package/dist/client/types/com/atproto/sync/getRepoStatus.d.ts +4 -3
  569. package/dist/client/types/com/atproto/sync/getRepoStatus.d.ts.map +1 -1
  570. package/dist/client/types/com/atproto/sync/getRepoStatus.js +1 -1
  571. package/dist/client/types/com/atproto/sync/getRepoStatus.js.map +1 -1
  572. package/dist/client/types/com/atproto/sync/listBlobs.d.ts +4 -3
  573. package/dist/client/types/com/atproto/sync/listBlobs.d.ts.map +1 -1
  574. package/dist/client/types/com/atproto/sync/listBlobs.js +4 -4
  575. package/dist/client/types/com/atproto/sync/listBlobs.js.map +1 -1
  576. package/dist/client/types/com/atproto/sync/listRepos.d.ts +4 -3
  577. package/dist/client/types/com/atproto/sync/listRepos.d.ts.map +1 -1
  578. package/dist/client/types/com/atproto/sync/listRepos.js +0 -6
  579. package/dist/client/types/com/atproto/sync/listRepos.js.map +1 -1
  580. package/dist/client/types/com/atproto/sync/notifyOfUpdate.d.ts +5 -4
  581. package/dist/client/types/com/atproto/sync/notifyOfUpdate.d.ts.map +1 -1
  582. package/dist/client/types/com/atproto/sync/notifyOfUpdate.js +0 -6
  583. package/dist/client/types/com/atproto/sync/notifyOfUpdate.js.map +1 -1
  584. package/dist/client/types/com/atproto/sync/requestCrawl.d.ts +5 -4
  585. package/dist/client/types/com/atproto/sync/requestCrawl.d.ts.map +1 -1
  586. package/dist/client/types/com/atproto/sync/requestCrawl.js +0 -6
  587. package/dist/client/types/com/atproto/sync/requestCrawl.js.map +1 -1
  588. package/dist/client/types/com/atproto/temp/checkSignupQueue.d.ts +4 -3
  589. package/dist/client/types/com/atproto/temp/checkSignupQueue.d.ts.map +1 -1
  590. package/dist/client/types/com/atproto/temp/checkSignupQueue.js +0 -6
  591. package/dist/client/types/com/atproto/temp/checkSignupQueue.js.map +1 -1
  592. package/dist/client/types/com/atproto/temp/fetchLabels.d.ts +4 -3
  593. package/dist/client/types/com/atproto/temp/fetchLabels.d.ts.map +1 -1
  594. package/dist/client/types/com/atproto/temp/fetchLabels.js +0 -6
  595. package/dist/client/types/com/atproto/temp/fetchLabels.js.map +1 -1
  596. package/dist/client/types/com/atproto/temp/requestPhoneVerification.d.ts +5 -4
  597. package/dist/client/types/com/atproto/temp/requestPhoneVerification.d.ts.map +1 -1
  598. package/dist/client/types/com/atproto/temp/requestPhoneVerification.js +0 -6
  599. package/dist/client/types/com/atproto/temp/requestPhoneVerification.js.map +1 -1
  600. package/dist/client/types/tools/ozone/communication/createTemplate.d.ts +5 -4
  601. package/dist/client/types/tools/ozone/communication/createTemplate.d.ts.map +1 -1
  602. package/dist/client/types/tools/ozone/communication/createTemplate.js +0 -6
  603. package/dist/client/types/tools/ozone/communication/createTemplate.js.map +1 -1
  604. package/dist/client/types/tools/ozone/communication/deleteTemplate.d.ts +5 -4
  605. package/dist/client/types/tools/ozone/communication/deleteTemplate.d.ts.map +1 -1
  606. package/dist/client/types/tools/ozone/communication/deleteTemplate.js +0 -6
  607. package/dist/client/types/tools/ozone/communication/deleteTemplate.js.map +1 -1
  608. package/dist/client/types/tools/ozone/communication/listTemplates.d.ts +4 -3
  609. package/dist/client/types/tools/ozone/communication/listTemplates.d.ts.map +1 -1
  610. package/dist/client/types/tools/ozone/communication/listTemplates.js +0 -6
  611. package/dist/client/types/tools/ozone/communication/listTemplates.js.map +1 -1
  612. package/dist/client/types/tools/ozone/communication/updateTemplate.d.ts +5 -4
  613. package/dist/client/types/tools/ozone/communication/updateTemplate.d.ts.map +1 -1
  614. package/dist/client/types/tools/ozone/communication/updateTemplate.js +0 -6
  615. package/dist/client/types/tools/ozone/communication/updateTemplate.js.map +1 -1
  616. package/dist/client/types/tools/ozone/moderation/emitEvent.d.ts +5 -4
  617. package/dist/client/types/tools/ozone/moderation/emitEvent.d.ts.map +1 -1
  618. package/dist/client/types/tools/ozone/moderation/emitEvent.js +1 -1
  619. package/dist/client/types/tools/ozone/moderation/emitEvent.js.map +1 -1
  620. package/dist/client/types/tools/ozone/moderation/getEvent.d.ts +4 -3
  621. package/dist/client/types/tools/ozone/moderation/getEvent.d.ts.map +1 -1
  622. package/dist/client/types/tools/ozone/moderation/getEvent.js +0 -6
  623. package/dist/client/types/tools/ozone/moderation/getEvent.js.map +1 -1
  624. package/dist/client/types/tools/ozone/moderation/getRecord.d.ts +4 -3
  625. package/dist/client/types/tools/ozone/moderation/getRecord.d.ts.map +1 -1
  626. package/dist/client/types/tools/ozone/moderation/getRecord.js +1 -1
  627. package/dist/client/types/tools/ozone/moderation/getRecord.js.map +1 -1
  628. package/dist/client/types/tools/ozone/moderation/getRepo.d.ts +4 -3
  629. package/dist/client/types/tools/ozone/moderation/getRepo.d.ts.map +1 -1
  630. package/dist/client/types/tools/ozone/moderation/getRepo.js +1 -1
  631. package/dist/client/types/tools/ozone/moderation/getRepo.js.map +1 -1
  632. package/dist/client/types/tools/ozone/moderation/queryEvents.d.ts +4 -3
  633. package/dist/client/types/tools/ozone/moderation/queryEvents.d.ts.map +1 -1
  634. package/dist/client/types/tools/ozone/moderation/queryEvents.js +0 -6
  635. package/dist/client/types/tools/ozone/moderation/queryEvents.js.map +1 -1
  636. package/dist/client/types/tools/ozone/moderation/queryStatuses.d.ts +4 -3
  637. package/dist/client/types/tools/ozone/moderation/queryStatuses.d.ts.map +1 -1
  638. package/dist/client/types/tools/ozone/moderation/queryStatuses.js +0 -6
  639. package/dist/client/types/tools/ozone/moderation/queryStatuses.js.map +1 -1
  640. package/dist/client/types/tools/ozone/moderation/searchRepos.d.ts +4 -3
  641. package/dist/client/types/tools/ozone/moderation/searchRepos.d.ts.map +1 -1
  642. package/dist/client/types/tools/ozone/moderation/searchRepos.js +0 -6
  643. package/dist/client/types/tools/ozone/moderation/searchRepos.js.map +1 -1
  644. package/dist/client/types/tools/ozone/server/getConfig.d.ts +4 -3
  645. package/dist/client/types/tools/ozone/server/getConfig.d.ts.map +1 -1
  646. package/dist/client/types/tools/ozone/server/getConfig.js +0 -6
  647. package/dist/client/types/tools/ozone/server/getConfig.js.map +1 -1
  648. package/dist/client/types/tools/ozone/team/addMember.d.ts +5 -4
  649. package/dist/client/types/tools/ozone/team/addMember.d.ts.map +1 -1
  650. package/dist/client/types/tools/ozone/team/addMember.js +1 -1
  651. package/dist/client/types/tools/ozone/team/addMember.js.map +1 -1
  652. package/dist/client/types/tools/ozone/team/deleteMember.d.ts +5 -4
  653. package/dist/client/types/tools/ozone/team/deleteMember.d.ts.map +1 -1
  654. package/dist/client/types/tools/ozone/team/deleteMember.js +2 -2
  655. package/dist/client/types/tools/ozone/team/deleteMember.js.map +1 -1
  656. package/dist/client/types/tools/ozone/team/listMembers.d.ts +4 -3
  657. package/dist/client/types/tools/ozone/team/listMembers.d.ts.map +1 -1
  658. package/dist/client/types/tools/ozone/team/listMembers.js +0 -6
  659. package/dist/client/types/tools/ozone/team/listMembers.js.map +1 -1
  660. package/dist/client/types/tools/ozone/team/updateMember.d.ts +5 -4
  661. package/dist/client/types/tools/ozone/team/updateMember.d.ts.map +1 -1
  662. package/dist/client/types/tools/ozone/team/updateMember.js +1 -1
  663. package/dist/client/types/tools/ozone/team/updateMember.js.map +1 -1
  664. package/dist/index.d.ts +5 -2
  665. package/dist/index.d.ts.map +1 -1
  666. package/dist/index.js +10 -4
  667. package/dist/index.js.map +1 -1
  668. package/dist/rich-text/rich-text.d.ts +2 -2
  669. package/dist/rich-text/rich-text.d.ts.map +1 -1
  670. package/dist/rich-text/rich-text.js.map +1 -1
  671. package/dist/types.d.ts +2 -19
  672. package/dist/types.d.ts.map +1 -1
  673. package/dist/util.d.ts +2 -0
  674. package/dist/util.d.ts.map +1 -1
  675. package/dist/util.js +4 -1
  676. package/dist/util.js.map +1 -1
  677. package/docs/moderation.md +2 -2
  678. package/package.json +5 -5
  679. package/src/agent.ts +1263 -362
  680. package/src/atp-agent.ts +502 -0
  681. package/src/atp-client.ts +164 -0
  682. package/src/bsky-agent.ts +8 -1365
  683. package/src/client/index.ts +949 -929
  684. package/src/client/types/app/bsky/actor/getPreferences.ts +4 -5
  685. package/src/client/types/app/bsky/actor/getProfile.ts +4 -5
  686. package/src/client/types/app/bsky/actor/getProfiles.ts +4 -5
  687. package/src/client/types/app/bsky/actor/getSuggestions.ts +4 -5
  688. package/src/client/types/app/bsky/actor/putPreferences.ts +5 -6
  689. package/src/client/types/app/bsky/actor/searchActors.ts +4 -5
  690. package/src/client/types/app/bsky/actor/searchActorsTypeahead.ts +4 -5
  691. package/src/client/types/app/bsky/feed/describeFeedGenerator.ts +4 -5
  692. package/src/client/types/app/bsky/feed/getActorFeeds.ts +4 -5
  693. package/src/client/types/app/bsky/feed/getActorLikes.ts +7 -5
  694. package/src/client/types/app/bsky/feed/getAuthorFeed.ts +7 -5
  695. package/src/client/types/app/bsky/feed/getFeed.ts +6 -4
  696. package/src/client/types/app/bsky/feed/getFeedGenerator.ts +4 -5
  697. package/src/client/types/app/bsky/feed/getFeedGenerators.ts +4 -5
  698. package/src/client/types/app/bsky/feed/getFeedSkeleton.ts +6 -4
  699. package/src/client/types/app/bsky/feed/getLikes.ts +4 -5
  700. package/src/client/types/app/bsky/feed/getListFeed.ts +6 -4
  701. package/src/client/types/app/bsky/feed/getPostThread.ts +6 -4
  702. package/src/client/types/app/bsky/feed/getPosts.ts +4 -5
  703. package/src/client/types/app/bsky/feed/getRepostedBy.ts +4 -5
  704. package/src/client/types/app/bsky/feed/getSuggestedFeeds.ts +4 -5
  705. package/src/client/types/app/bsky/feed/getTimeline.ts +4 -5
  706. package/src/client/types/app/bsky/feed/searchPosts.ts +6 -4
  707. package/src/client/types/app/bsky/feed/sendInteractions.ts +5 -6
  708. package/src/client/types/app/bsky/graph/getActorStarterPacks.ts +4 -5
  709. package/src/client/types/app/bsky/graph/getBlocks.ts +4 -5
  710. package/src/client/types/app/bsky/graph/getFollowers.ts +4 -5
  711. package/src/client/types/app/bsky/graph/getFollows.ts +4 -5
  712. package/src/client/types/app/bsky/graph/getKnownFollowers.ts +4 -5
  713. package/src/client/types/app/bsky/graph/getList.ts +4 -5
  714. package/src/client/types/app/bsky/graph/getListBlocks.ts +4 -5
  715. package/src/client/types/app/bsky/graph/getListMutes.ts +4 -5
  716. package/src/client/types/app/bsky/graph/getLists.ts +4 -5
  717. package/src/client/types/app/bsky/graph/getMutes.ts +4 -5
  718. package/src/client/types/app/bsky/graph/getRelationships.ts +6 -4
  719. package/src/client/types/app/bsky/graph/getStarterPack.ts +4 -5
  720. package/src/client/types/app/bsky/graph/getStarterPacks.ts +4 -5
  721. package/src/client/types/app/bsky/graph/getSuggestedFollowsByActor.ts +4 -5
  722. package/src/client/types/app/bsky/graph/muteActor.ts +5 -6
  723. package/src/client/types/app/bsky/graph/muteActorList.ts +5 -6
  724. package/src/client/types/app/bsky/graph/muteThread.ts +5 -6
  725. package/src/client/types/app/bsky/graph/unmuteActor.ts +5 -6
  726. package/src/client/types/app/bsky/graph/unmuteActorList.ts +5 -6
  727. package/src/client/types/app/bsky/graph/unmuteThread.ts +5 -6
  728. package/src/client/types/app/bsky/labeler/getServices.ts +4 -5
  729. package/src/client/types/app/bsky/notification/getUnreadCount.ts +4 -5
  730. package/src/client/types/app/bsky/notification/listNotifications.ts +4 -5
  731. package/src/client/types/app/bsky/notification/putPreferences.ts +5 -6
  732. package/src/client/types/app/bsky/notification/registerPush.ts +5 -6
  733. package/src/client/types/app/bsky/notification/updateSeen.ts +5 -6
  734. package/src/client/types/app/bsky/unspecced/getPopularFeedGenerators.ts +4 -5
  735. package/src/client/types/app/bsky/unspecced/getSuggestionsSkeleton.ts +4 -5
  736. package/src/client/types/app/bsky/unspecced/getTaggedSuggestions.ts +4 -5
  737. package/src/client/types/app/bsky/unspecced/searchActorsSkeleton.ts +6 -4
  738. package/src/client/types/app/bsky/unspecced/searchPostsSkeleton.ts +6 -4
  739. package/src/client/types/chat/bsky/actor/deleteAccount.ts +4 -5
  740. package/src/client/types/chat/bsky/actor/exportAccountData.ts +4 -5
  741. package/src/client/types/chat/bsky/convo/deleteMessageForSelf.ts +5 -6
  742. package/src/client/types/chat/bsky/convo/getConvo.ts +4 -5
  743. package/src/client/types/chat/bsky/convo/getConvoForMembers.ts +4 -5
  744. package/src/client/types/chat/bsky/convo/getLog.ts +4 -5
  745. package/src/client/types/chat/bsky/convo/getMessages.ts +4 -5
  746. package/src/client/types/chat/bsky/convo/leaveConvo.ts +5 -6
  747. package/src/client/types/chat/bsky/convo/listConvos.ts +4 -5
  748. package/src/client/types/chat/bsky/convo/muteConvo.ts +5 -6
  749. package/src/client/types/chat/bsky/convo/sendMessage.ts +5 -6
  750. package/src/client/types/chat/bsky/convo/sendMessageBatch.ts +5 -6
  751. package/src/client/types/chat/bsky/convo/unmuteConvo.ts +5 -6
  752. package/src/client/types/chat/bsky/convo/updateRead.ts +5 -6
  753. package/src/client/types/chat/bsky/moderation/getActorMetadata.ts +4 -5
  754. package/src/client/types/chat/bsky/moderation/getMessageContext.ts +4 -5
  755. package/src/client/types/chat/bsky/moderation/updateActorAccess.ts +5 -6
  756. package/src/client/types/com/atproto/admin/deleteAccount.ts +5 -6
  757. package/src/client/types/com/atproto/admin/disableAccountInvites.ts +5 -6
  758. package/src/client/types/com/atproto/admin/disableInviteCodes.ts +5 -6
  759. package/src/client/types/com/atproto/admin/enableAccountInvites.ts +5 -6
  760. package/src/client/types/com/atproto/admin/getAccountInfo.ts +4 -5
  761. package/src/client/types/com/atproto/admin/getAccountInfos.ts +4 -5
  762. package/src/client/types/com/atproto/admin/getInviteCodes.ts +4 -5
  763. package/src/client/types/com/atproto/admin/getSubjectStatus.ts +4 -5
  764. package/src/client/types/com/atproto/admin/searchAccounts.ts +4 -5
  765. package/src/client/types/com/atproto/admin/sendEmail.ts +5 -6
  766. package/src/client/types/com/atproto/admin/updateAccountEmail.ts +5 -6
  767. package/src/client/types/com/atproto/admin/updateAccountHandle.ts +5 -6
  768. package/src/client/types/com/atproto/admin/updateAccountPassword.ts +5 -6
  769. package/src/client/types/com/atproto/admin/updateSubjectStatus.ts +5 -6
  770. package/src/client/types/com/atproto/identity/getRecommendedDidCredentials.ts +4 -5
  771. package/src/client/types/com/atproto/identity/requestPlcOperationSignature.ts +4 -5
  772. package/src/client/types/com/atproto/identity/resolveHandle.ts +4 -5
  773. package/src/client/types/com/atproto/identity/signPlcOperation.ts +5 -6
  774. package/src/client/types/com/atproto/identity/submitPlcOperation.ts +5 -6
  775. package/src/client/types/com/atproto/identity/updateHandle.ts +5 -6
  776. package/src/client/types/com/atproto/label/queryLabels.ts +4 -5
  777. package/src/client/types/com/atproto/label/subscribeLabels.ts +1 -1
  778. package/src/client/types/com/atproto/moderation/createReport.ts +5 -6
  779. package/src/client/types/com/atproto/repo/applyWrites.ts +7 -5
  780. package/src/client/types/com/atproto/repo/createRecord.ts +7 -5
  781. package/src/client/types/com/atproto/repo/deleteRecord.ts +7 -5
  782. package/src/client/types/com/atproto/repo/describeRepo.ts +4 -5
  783. package/src/client/types/com/atproto/repo/getRecord.ts +4 -5
  784. package/src/client/types/com/atproto/repo/importRepo.ts +6 -7
  785. package/src/client/types/com/atproto/repo/listMissingBlobs.ts +4 -5
  786. package/src/client/types/com/atproto/repo/listRecords.ts +4 -5
  787. package/src/client/types/com/atproto/repo/putRecord.ts +7 -5
  788. package/src/client/types/com/atproto/repo/uploadBlob.ts +6 -7
  789. package/src/client/types/com/atproto/server/activateAccount.ts +4 -5
  790. package/src/client/types/com/atproto/server/checkAccountStatus.ts +4 -5
  791. package/src/client/types/com/atproto/server/confirmEmail.ts +10 -8
  792. package/src/client/types/com/atproto/server/createAccount.ts +13 -11
  793. package/src/client/types/com/atproto/server/createAppPassword.ts +7 -5
  794. package/src/client/types/com/atproto/server/createInviteCode.ts +5 -6
  795. package/src/client/types/com/atproto/server/createInviteCodes.ts +5 -6
  796. package/src/client/types/com/atproto/server/createSession.ts +8 -6
  797. package/src/client/types/com/atproto/server/deactivateAccount.ts +5 -6
  798. package/src/client/types/com/atproto/server/deleteAccount.ts +8 -6
  799. package/src/client/types/com/atproto/server/deleteSession.ts +4 -5
  800. package/src/client/types/com/atproto/server/describeServer.ts +4 -5
  801. package/src/client/types/com/atproto/server/getAccountInviteCodes.ts +6 -4
  802. package/src/client/types/com/atproto/server/getServiceAuth.ts +4 -5
  803. package/src/client/types/com/atproto/server/getSession.ts +4 -5
  804. package/src/client/types/com/atproto/server/listAppPasswords.ts +6 -4
  805. package/src/client/types/com/atproto/server/refreshSession.ts +6 -4
  806. package/src/client/types/com/atproto/server/requestAccountDelete.ts +4 -5
  807. package/src/client/types/com/atproto/server/requestEmailConfirmation.ts +4 -5
  808. package/src/client/types/com/atproto/server/requestEmailUpdate.ts +4 -5
  809. package/src/client/types/com/atproto/server/requestPasswordReset.ts +5 -6
  810. package/src/client/types/com/atproto/server/reserveSigningKey.ts +5 -6
  811. package/src/client/types/com/atproto/server/resetPassword.ts +8 -6
  812. package/src/client/types/com/atproto/server/revokeAppPassword.ts +5 -6
  813. package/src/client/types/com/atproto/server/updateEmail.ts +9 -7
  814. package/src/client/types/com/atproto/sync/getBlob.ts +10 -8
  815. package/src/client/types/com/atproto/sync/getBlocks.ts +10 -8
  816. package/src/client/types/com/atproto/sync/getCheckout.ts +4 -5
  817. package/src/client/types/com/atproto/sync/getHead.ts +6 -4
  818. package/src/client/types/com/atproto/sync/getLatestCommit.ts +9 -7
  819. package/src/client/types/com/atproto/sync/getRecord.ts +10 -8
  820. package/src/client/types/com/atproto/sync/getRepo.ts +9 -7
  821. package/src/client/types/com/atproto/sync/getRepoStatus.ts +6 -4
  822. package/src/client/types/com/atproto/sync/listBlobs.ts +9 -7
  823. package/src/client/types/com/atproto/sync/listRepos.ts +4 -5
  824. package/src/client/types/com/atproto/sync/notifyOfUpdate.ts +5 -6
  825. package/src/client/types/com/atproto/sync/requestCrawl.ts +5 -6
  826. package/src/client/types/com/atproto/sync/subscribeRepos.ts +1 -1
  827. package/src/client/types/com/atproto/temp/checkSignupQueue.ts +4 -5
  828. package/src/client/types/com/atproto/temp/fetchLabels.ts +4 -5
  829. package/src/client/types/com/atproto/temp/requestPhoneVerification.ts +5 -6
  830. package/src/client/types/tools/ozone/communication/createTemplate.ts +5 -6
  831. package/src/client/types/tools/ozone/communication/deleteTemplate.ts +5 -6
  832. package/src/client/types/tools/ozone/communication/listTemplates.ts +4 -5
  833. package/src/client/types/tools/ozone/communication/updateTemplate.ts +5 -6
  834. package/src/client/types/tools/ozone/moderation/emitEvent.ts +7 -5
  835. package/src/client/types/tools/ozone/moderation/getEvent.ts +4 -5
  836. package/src/client/types/tools/ozone/moderation/getRecord.ts +6 -4
  837. package/src/client/types/tools/ozone/moderation/getRepo.ts +6 -4
  838. package/src/client/types/tools/ozone/moderation/queryEvents.ts +4 -5
  839. package/src/client/types/tools/ozone/moderation/queryStatuses.ts +4 -5
  840. package/src/client/types/tools/ozone/moderation/searchRepos.ts +4 -5
  841. package/src/client/types/tools/ozone/server/getConfig.ts +4 -5
  842. package/src/client/types/tools/ozone/team/addMember.ts +7 -5
  843. package/src/client/types/tools/ozone/team/deleteMember.ts +8 -6
  844. package/src/client/types/tools/ozone/team/listMembers.ts +4 -5
  845. package/src/client/types/tools/ozone/team/updateMember.ts +7 -5
  846. package/src/index.ts +7 -2
  847. package/src/rich-text/rich-text.ts +2 -2
  848. package/src/types.ts +2 -26
  849. package/src/util.ts +6 -0
  850. package/tests/bsky-agent.test.ts +13 -24
  851. package/tests/{agent.test.ts → dispatcher.test.ts} +67 -118
  852. package/tests/moderation-prefs.test.ts +18 -22
  853. package/docs/rn-fetch-handler.ts +0 -88
  854. package/tests/util/index.ts +0 -26
package/dist/agent.js CHANGED
@@ -1,452 +1,1130 @@
1
1
  "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ var _Agent_prefsLock;
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AtpAgent = void 0;
4
- const xrpc_1 = require("@atproto/xrpc");
5
- const xrpc_2 = require("@atproto/xrpc");
12
+ exports.Agent = void 0;
6
13
  const common_web_1 = require("@atproto/common-web");
7
- const client_1 = require("./client");
8
- const const_1 = require("./const");
9
- const REFRESH_SESSION = 'com.atproto.server.refreshSession';
14
+ const syntax_1 = require("@atproto/syntax");
15
+ const await_lock_1 = __importDefault(require("await-lock"));
16
+ const atp_client_1 = require("./atp-client");
17
+ const index_1 = require("./client/index");
18
+ const moderation_1 = require("./moderation");
19
+ const labels_1 = require("./moderation/const/labels");
20
+ const util_1 = require("./util");
21
+ const FEED_VIEW_PREF_DEFAULTS = {
22
+ hideReplies: false,
23
+ hideRepliesByUnfollowed: true,
24
+ hideRepliesByLikeCount: 0,
25
+ hideReposts: false,
26
+ hideQuotePosts: false,
27
+ };
28
+ const THREAD_VIEW_PREF_DEFAULTS = {
29
+ sort: 'oldest',
30
+ prioritizeFollowedUsers: true,
31
+ };
10
32
  /**
11
- * An ATP "Agent"
12
- * Manages session token lifecycles and provides convenience methods.
33
+ * {@link Agent} is an abstract class that extends {@link AtpClient} with
34
+ * (abstract) session based utilities and bsky-specific methods.
13
35
  */
14
- class AtpAgent {
15
- get com() {
16
- return this.api.com;
17
- }
18
- /**
19
- * Configures the API globally.
20
- */
21
- static configure(opts) {
22
- if (opts.fetch) {
23
- AtpAgent.fetch = opts.fetch;
24
- }
25
- if (opts.appLabelers) {
26
- AtpAgent.appLabelers = opts.appLabelers;
27
- }
28
- }
29
- constructor(opts) {
30
- Object.defineProperty(this, "service", {
36
+ class Agent extends atp_client_1.AtpClient {
37
+ constructor() {
38
+ super(...arguments);
39
+ //#endregion
40
+ //#region "app.bsky" lexicon short hand methods
41
+ Object.defineProperty(this, "getTimeline", {
31
42
  enumerable: true,
32
43
  configurable: true,
33
44
  writable: true,
34
- value: void 0
45
+ value: (params, opts) => this.app.bsky.feed.getTimeline(params, opts)
35
46
  });
36
- Object.defineProperty(this, "api", {
47
+ Object.defineProperty(this, "getAuthorFeed", {
37
48
  enumerable: true,
38
49
  configurable: true,
39
50
  writable: true,
40
- value: void 0
51
+ value: (params, opts) => this.app.bsky.feed.getAuthorFeed(params, opts)
41
52
  });
42
- Object.defineProperty(this, "session", {
53
+ Object.defineProperty(this, "getActorLikes", {
43
54
  enumerable: true,
44
55
  configurable: true,
45
56
  writable: true,
46
- value: void 0
57
+ value: (params, opts) => this.app.bsky.feed.getActorLikes(params, opts)
47
58
  });
48
- Object.defineProperty(this, "labelersHeader", {
59
+ Object.defineProperty(this, "getPostThread", {
49
60
  enumerable: true,
50
61
  configurable: true,
51
62
  writable: true,
52
- value: []
63
+ value: (params, opts) => this.app.bsky.feed.getPostThread(params, opts)
53
64
  });
54
- Object.defineProperty(this, "proxyHeader", {
65
+ Object.defineProperty(this, "getPost", {
55
66
  enumerable: true,
56
67
  configurable: true,
57
68
  writable: true,
58
- value: void 0
69
+ value: (params) => this.app.bsky.feed.post.get(params)
59
70
  });
60
- Object.defineProperty(this, "pdsUrl", {
71
+ Object.defineProperty(this, "getPosts", {
61
72
  enumerable: true,
62
73
  configurable: true,
63
74
  writable: true,
64
- value: void 0
65
- }); // The PDS URL, driven by the did doc. May be undefined.
66
- Object.defineProperty(this, "_baseClient", {
75
+ value: (params, opts) => this.app.bsky.feed.getPosts(params, opts)
76
+ });
77
+ Object.defineProperty(this, "getLikes", {
67
78
  enumerable: true,
68
79
  configurable: true,
69
80
  writable: true,
70
- value: void 0
81
+ value: (params, opts) => this.app.bsky.feed.getLikes(params, opts)
71
82
  });
72
- Object.defineProperty(this, "_persistSession", {
83
+ Object.defineProperty(this, "getRepostedBy", {
73
84
  enumerable: true,
74
85
  configurable: true,
75
86
  writable: true,
76
- value: void 0
87
+ value: (params, opts) => this.app.bsky.feed.getRepostedBy(params, opts)
77
88
  });
78
- Object.defineProperty(this, "_refreshSessionPromise", {
89
+ Object.defineProperty(this, "getFollows", {
79
90
  enumerable: true,
80
91
  configurable: true,
81
92
  writable: true,
82
- value: void 0
93
+ value: (params, opts) => this.app.bsky.graph.getFollows(params, opts)
83
94
  });
84
- /**
85
- * Upload a binary blob to the server
86
- */
87
- Object.defineProperty(this, "uploadBlob", {
95
+ Object.defineProperty(this, "getFollowers", {
88
96
  enumerable: true,
89
97
  configurable: true,
90
98
  writable: true,
91
- value: (data, opts) => this.api.com.atproto.repo.uploadBlob(data, opts)
99
+ value: (params, opts) => this.app.bsky.graph.getFollowers(params, opts)
92
100
  });
93
- /**
94
- * Resolve a handle to a DID
95
- */
96
- Object.defineProperty(this, "resolveHandle", {
101
+ Object.defineProperty(this, "getProfile", {
97
102
  enumerable: true,
98
103
  configurable: true,
99
104
  writable: true,
100
- value: (params, opts) => this.api.com.atproto.identity.resolveHandle(params, opts)
105
+ value: (params, opts) => this.app.bsky.actor.getProfile(params, opts)
101
106
  });
102
- /**
103
- * Change the user's handle
104
- */
105
- Object.defineProperty(this, "updateHandle", {
107
+ Object.defineProperty(this, "getProfiles", {
106
108
  enumerable: true,
107
109
  configurable: true,
108
110
  writable: true,
109
- value: (data, opts) => this.api.com.atproto.identity.updateHandle(data, opts)
111
+ value: (params, opts) => this.app.bsky.actor.getProfiles(params, opts)
110
112
  });
111
- /**
112
- * Create a moderation report
113
- */
114
- Object.defineProperty(this, "createModerationReport", {
113
+ Object.defineProperty(this, "getSuggestions", {
115
114
  enumerable: true,
116
115
  configurable: true,
117
116
  writable: true,
118
- value: (data, opts) => this.api.com.atproto.moderation.createReport(data, opts)
119
- });
120
- this.service =
121
- opts.service instanceof URL ? opts.service : new URL(opts.service);
122
- this._persistSession = opts.persistSession;
123
- // create an ATP client instance for this agent
124
- this._baseClient = new client_1.AtpBaseClient();
125
- this._baseClient.xrpc.fetch = this._fetch.bind(this); // patch its fetch implementation
126
- this.api = this._baseClient.service(opts.service);
127
- }
128
- clone() {
129
- const inst = new AtpAgent({
130
- service: this.service,
131
- });
132
- this.copyInto(inst);
133
- return inst;
134
- }
135
- copyInto(inst) {
136
- inst.session = this.session;
137
- inst.labelersHeader = this.labelersHeader;
138
- inst.proxyHeader = this.proxyHeader;
139
- inst.pdsUrl = this.pdsUrl;
140
- inst.api.xrpc.uri = this.pdsUrl || this.service;
141
- }
142
- withProxy(serviceType, did) {
143
- const inst = this.clone();
144
- inst.configureProxyHeader(serviceType, did);
145
- return inst;
117
+ value: (params, opts) => this.app.bsky.actor.getSuggestions(params, opts)
118
+ });
119
+ Object.defineProperty(this, "searchActors", {
120
+ enumerable: true,
121
+ configurable: true,
122
+ writable: true,
123
+ value: (params, opts) => this.app.bsky.actor.searchActors(params, opts)
124
+ });
125
+ Object.defineProperty(this, "searchActorsTypeahead", {
126
+ enumerable: true,
127
+ configurable: true,
128
+ writable: true,
129
+ value: (params, opts) => this.app.bsky.actor.searchActorsTypeahead(params, opts)
130
+ });
131
+ Object.defineProperty(this, "listNotifications", {
132
+ enumerable: true,
133
+ configurable: true,
134
+ writable: true,
135
+ value: (params, opts) => this.app.bsky.notification.listNotifications(params, opts)
136
+ });
137
+ Object.defineProperty(this, "countUnreadNotifications", {
138
+ enumerable: true,
139
+ configurable: true,
140
+ writable: true,
141
+ value: (params, opts) => this.app.bsky.notification.getUnreadCount(params, opts)
142
+ });
143
+ Object.defineProperty(this, "getLabelers", {
144
+ enumerable: true,
145
+ configurable: true,
146
+ writable: true,
147
+ value: (params, opts) => this.app.bsky.labeler.getServices(params, opts)
148
+ });
149
+ //- Private methods
150
+ _Agent_prefsLock.set(this, new await_lock_1.default()
151
+ /**
152
+ * This function updates the preferences of a user and allows for a callback function to be executed
153
+ * before the update.
154
+ * @param cb - cb is a callback function that takes in a single parameter of type
155
+ * AppBskyActorDefs.Preferences and returns either a boolean or void. This callback function is used to
156
+ * update the preferences of the user. The function is called with the current preferences as an
157
+ * argument and if the callback returns false, the preferences are not updated.
158
+ */
159
+ );
160
+ //#endregion
146
161
  }
147
- /**
148
- * Is there any active session?
149
- */
150
- get hasSession() {
151
- return !!this.session;
162
+ /** @deprecated use "this" instead */
163
+ get api() {
164
+ return this;
152
165
  }
153
166
  /**
154
- * Sets the "Persist Session" method which can be used to store access tokens
155
- * as they change.
167
+ * Get the authenticated user's DID, or throw an error if not authenticated.
156
168
  */
157
- setPersistSessionHandler(handler) {
158
- this._persistSession = handler;
169
+ get accountDid() {
170
+ this.assertAuthenticated();
171
+ return this.did;
159
172
  }
160
173
  /**
161
- * Configures the moderation services to be applied on requests.
162
- * NOTE: this is called automatically by getPreferences() and the relevant moderation config
163
- * methods in BskyAgent instances.
174
+ * Assert that the user is authenticated.
164
175
  */
165
- configureLabelersHeader(labelerDids) {
166
- this.labelersHeader = labelerDids;
176
+ assertAuthenticated() {
177
+ if (!this.did)
178
+ throw new Error('Not logged in');
167
179
  }
168
- /**
169
- * Configures the atproto-proxy header to be applied on requests
170
- */
171
- configureProxyHeader(serviceType, did) {
172
- if (did.startsWith('did:')) {
173
- this.proxyHeader = `${did}#${serviceType}`;
180
+ async getLabelDefinitions(prefs) {
181
+ // collect the labeler dids
182
+ const dids = [...this.appLabelers];
183
+ if (isBskyPrefs(prefs)) {
184
+ dids.push(...prefs.moderationPrefs.labelers.map((l) => l.did));
174
185
  }
175
- }
176
- /**
177
- * Create a new account and hydrate its session in this agent.
178
- */
179
- async createAccount(opts) {
180
- try {
181
- const res = await this.api.com.atproto.server.createAccount(opts);
182
- this.session = {
183
- accessJwt: res.data.accessJwt,
184
- refreshJwt: res.data.refreshJwt,
185
- handle: res.data.handle,
186
- did: res.data.did,
187
- email: opts.email,
188
- emailConfirmed: false,
189
- emailAuthFactor: false,
190
- active: true,
191
- };
192
- this._updateApiEndpoint(res.data.didDoc);
193
- return res;
186
+ else if (isModPrefs(prefs)) {
187
+ dids.push(...prefs.labelers.map((l) => l.did));
194
188
  }
195
- catch (e) {
196
- this.session = undefined;
197
- throw e;
189
+ else {
190
+ dids.push(...prefs);
198
191
  }
199
- finally {
200
- if (this.session) {
201
- this._persistSession?.('create', this.session);
192
+ // fetch their definitions
193
+ const labelers = await this.getLabelers({
194
+ dids,
195
+ detailed: true,
196
+ });
197
+ // assemble a map of labeler dids to the interpretted label value definitions
198
+ const labelDefs = {};
199
+ if (labelers.data) {
200
+ for (const labeler of labelers.data
201
+ .views) {
202
+ labelDefs[labeler.creator.did] = (0, moderation_1.interpretLabelValueDefinitions)(labeler);
202
203
  }
203
- else {
204
- this._persistSession?.('create-failed', undefined);
204
+ }
205
+ return labelDefs;
206
+ }
207
+ async post(record) {
208
+ record.createdAt || (record.createdAt = new Date().toISOString());
209
+ return this.app.bsky.feed.post.create({ repo: this.accountDid }, record);
210
+ }
211
+ async deletePost(postUri) {
212
+ this.assertAuthenticated();
213
+ const postUrip = new syntax_1.AtUri(postUri);
214
+ return this.app.bsky.feed.post.delete({
215
+ repo: postUrip.hostname,
216
+ rkey: postUrip.rkey,
217
+ });
218
+ }
219
+ async like(uri, cid) {
220
+ return this.app.bsky.feed.like.create({ repo: this.accountDid }, {
221
+ subject: { uri, cid },
222
+ createdAt: new Date().toISOString(),
223
+ });
224
+ }
225
+ async deleteLike(likeUri) {
226
+ this.assertAuthenticated();
227
+ const likeUrip = new syntax_1.AtUri(likeUri);
228
+ return this.app.bsky.feed.like.delete({
229
+ repo: likeUrip.hostname,
230
+ rkey: likeUrip.rkey,
231
+ });
232
+ }
233
+ async repost(uri, cid) {
234
+ return this.app.bsky.feed.repost.create({ repo: this.accountDid }, {
235
+ subject: { uri, cid },
236
+ createdAt: new Date().toISOString(),
237
+ });
238
+ }
239
+ async deleteRepost(repostUri) {
240
+ this.assertAuthenticated();
241
+ const repostUrip = new syntax_1.AtUri(repostUri);
242
+ return this.app.bsky.feed.repost.delete({
243
+ repo: repostUrip.hostname,
244
+ rkey: repostUrip.rkey,
245
+ });
246
+ }
247
+ async follow(subjectDid) {
248
+ return this.app.bsky.graph.follow.create({ repo: this.accountDid }, {
249
+ subject: subjectDid,
250
+ createdAt: new Date().toISOString(),
251
+ });
252
+ }
253
+ async deleteFollow(followUri) {
254
+ this.assertAuthenticated();
255
+ const followUrip = new syntax_1.AtUri(followUri);
256
+ return this.app.bsky.graph.follow.delete({
257
+ repo: followUrip.hostname,
258
+ rkey: followUrip.rkey,
259
+ });
260
+ }
261
+ async upsertProfile(updateFn) {
262
+ const repo = this.accountDid;
263
+ let retriesRemaining = 5;
264
+ while (retriesRemaining >= 0) {
265
+ // fetch existing
266
+ const existing = await this.com.atproto.repo
267
+ .getRecord({
268
+ repo,
269
+ collection: 'app.bsky.actor.profile',
270
+ rkey: 'self',
271
+ })
272
+ .catch((_) => undefined);
273
+ // run the update
274
+ const updated = await updateFn(existing?.data.value);
275
+ if (updated) {
276
+ updated.$type = 'app.bsky.actor.profile';
277
+ }
278
+ // validate the record
279
+ const validation = index_1.AppBskyActorProfile.validateRecord(updated);
280
+ if (!validation.success) {
281
+ throw validation.error;
282
+ }
283
+ try {
284
+ // attempt the put
285
+ await this.com.atproto.repo.putRecord({
286
+ repo,
287
+ collection: 'app.bsky.actor.profile',
288
+ rkey: 'self',
289
+ record: updated,
290
+ swapRecord: existing?.data.cid || null,
291
+ });
292
+ }
293
+ catch (e) {
294
+ if (retriesRemaining > 0 &&
295
+ e instanceof index_1.ComAtprotoRepoPutRecord.InvalidSwapError) {
296
+ // try again
297
+ retriesRemaining--;
298
+ continue;
299
+ }
300
+ else {
301
+ throw e;
302
+ }
205
303
  }
304
+ break;
206
305
  }
207
306
  }
208
- /**
209
- * Start a new session with this agent.
210
- */
211
- async login(opts) {
212
- try {
213
- const res = await this.api.com.atproto.server.createSession({
214
- identifier: opts.identifier,
215
- password: opts.password,
216
- authFactorToken: opts.authFactorToken,
307
+ async mute(actor) {
308
+ return this.app.bsky.graph.muteActor({ actor });
309
+ }
310
+ async unmute(actor) {
311
+ return this.app.bsky.graph.unmuteActor({ actor });
312
+ }
313
+ async muteModList(uri) {
314
+ return this.app.bsky.graph.muteActorList({ list: uri });
315
+ }
316
+ async unmuteModList(uri) {
317
+ return this.app.bsky.graph.unmuteActorList({ list: uri });
318
+ }
319
+ async blockModList(uri) {
320
+ return this.app.bsky.graph.listblock.create({ repo: this.accountDid }, {
321
+ subject: uri,
322
+ createdAt: new Date().toISOString(),
323
+ });
324
+ }
325
+ async unblockModList(uri) {
326
+ const repo = this.accountDid;
327
+ const listInfo = await this.app.bsky.graph.getList({
328
+ list: uri,
329
+ limit: 1,
330
+ });
331
+ const blocked = listInfo.data.list.viewer?.blocked;
332
+ if (blocked) {
333
+ const { rkey } = new syntax_1.AtUri(blocked);
334
+ return this.app.bsky.graph.listblock.delete({
335
+ repo,
336
+ rkey,
217
337
  });
218
- this.session = {
219
- accessJwt: res.data.accessJwt,
220
- refreshJwt: res.data.refreshJwt,
221
- handle: res.data.handle,
222
- did: res.data.did,
223
- email: res.data.email,
224
- emailConfirmed: res.data.emailConfirmed,
225
- emailAuthFactor: res.data.emailAuthFactor,
226
- active: res.data.active ?? true,
227
- status: res.data.status,
228
- };
229
- this._updateApiEndpoint(res.data.didDoc);
230
- return res;
231
338
  }
232
- catch (e) {
233
- this.session = undefined;
234
- throw e;
235
- }
236
- finally {
237
- if (this.session) {
238
- this._persistSession?.('create', this.session);
339
+ }
340
+ async updateSeenNotifications(seenAt = new Date().toISOString()) {
341
+ return this.app.bsky.notification.updateSeen({ seenAt });
342
+ }
343
+ async getPreferences() {
344
+ const prefs = {
345
+ feeds: {
346
+ saved: undefined,
347
+ pinned: undefined,
348
+ },
349
+ // @ts-ignore populating below
350
+ savedFeeds: undefined,
351
+ feedViewPrefs: {
352
+ home: {
353
+ ...FEED_VIEW_PREF_DEFAULTS,
354
+ },
355
+ },
356
+ threadViewPrefs: { ...THREAD_VIEW_PREF_DEFAULTS },
357
+ moderationPrefs: {
358
+ adultContentEnabled: false,
359
+ labels: { ...labels_1.DEFAULT_LABEL_SETTINGS },
360
+ labelers: this.appLabelers.map((did) => ({
361
+ did,
362
+ labels: {},
363
+ })),
364
+ mutedWords: [],
365
+ hiddenPosts: [],
366
+ },
367
+ birthDate: undefined,
368
+ interests: {
369
+ tags: [],
370
+ },
371
+ bskyAppState: {
372
+ queuedNudges: [],
373
+ activeProgressGuide: undefined,
374
+ },
375
+ };
376
+ const res = await this.app.bsky.actor.getPreferences({});
377
+ const labelPrefs = [];
378
+ for (const pref of res.data.preferences) {
379
+ if (index_1.AppBskyActorDefs.isAdultContentPref(pref) &&
380
+ index_1.AppBskyActorDefs.validateAdultContentPref(pref).success) {
381
+ // adult content preferences
382
+ prefs.moderationPrefs.adultContentEnabled = pref.enabled;
239
383
  }
240
- else {
241
- this._persistSession?.('create-failed', undefined);
384
+ else if (index_1.AppBskyActorDefs.isContentLabelPref(pref) &&
385
+ index_1.AppBskyActorDefs.validateContentLabelPref(pref).success) {
386
+ // content label preference
387
+ const adjustedPref = adjustLegacyContentLabelPref(pref);
388
+ labelPrefs.push(adjustedPref);
389
+ }
390
+ else if (index_1.AppBskyActorDefs.isLabelersPref(pref) &&
391
+ index_1.AppBskyActorDefs.validateLabelersPref(pref).success) {
392
+ // labelers preferences
393
+ prefs.moderationPrefs.labelers = this.appLabelers
394
+ .map((did) => ({ did, labels: {} }))
395
+ .concat(pref.labelers.map((labeler) => ({
396
+ ...labeler,
397
+ labels: {},
398
+ })));
399
+ }
400
+ else if (index_1.AppBskyActorDefs.isSavedFeedsPrefV2(pref) &&
401
+ index_1.AppBskyActorDefs.validateSavedFeedsPrefV2(pref).success) {
402
+ prefs.savedFeeds = pref.items;
403
+ }
404
+ else if (index_1.AppBskyActorDefs.isSavedFeedsPref(pref) &&
405
+ index_1.AppBskyActorDefs.validateSavedFeedsPref(pref).success) {
406
+ // saved and pinned feeds
407
+ prefs.feeds.saved = pref.saved;
408
+ prefs.feeds.pinned = pref.pinned;
409
+ }
410
+ else if (index_1.AppBskyActorDefs.isPersonalDetailsPref(pref) &&
411
+ index_1.AppBskyActorDefs.validatePersonalDetailsPref(pref).success) {
412
+ // birth date (irl)
413
+ if (pref.birthDate) {
414
+ prefs.birthDate = new Date(pref.birthDate);
415
+ }
416
+ }
417
+ else if (index_1.AppBskyActorDefs.isFeedViewPref(pref) &&
418
+ index_1.AppBskyActorDefs.validateFeedViewPref(pref).success) {
419
+ // feed view preferences
420
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
421
+ const { $type, feed, ...v } = pref;
422
+ prefs.feedViewPrefs[pref.feed] = { ...FEED_VIEW_PREF_DEFAULTS, ...v };
423
+ }
424
+ else if (index_1.AppBskyActorDefs.isThreadViewPref(pref) &&
425
+ index_1.AppBskyActorDefs.validateThreadViewPref(pref).success) {
426
+ // thread view preferences
427
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
428
+ const { $type, ...v } = pref;
429
+ prefs.threadViewPrefs = { ...prefs.threadViewPrefs, ...v };
430
+ }
431
+ else if (index_1.AppBskyActorDefs.isInterestsPref(pref) &&
432
+ index_1.AppBskyActorDefs.validateInterestsPref(pref).success) {
433
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
434
+ const { $type, ...v } = pref;
435
+ prefs.interests = { ...prefs.interests, ...v };
436
+ }
437
+ else if (index_1.AppBskyActorDefs.isMutedWordsPref(pref) &&
438
+ index_1.AppBskyActorDefs.validateMutedWordsPref(pref).success) {
439
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
440
+ const { $type, ...v } = pref;
441
+ prefs.moderationPrefs.mutedWords = v.items;
442
+ }
443
+ else if (index_1.AppBskyActorDefs.isHiddenPostsPref(pref) &&
444
+ index_1.AppBskyActorDefs.validateHiddenPostsPref(pref).success) {
445
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
446
+ const { $type, ...v } = pref;
447
+ prefs.moderationPrefs.hiddenPosts = v.items;
448
+ }
449
+ else if (index_1.AppBskyActorDefs.isBskyAppStatePref(pref) &&
450
+ index_1.AppBskyActorDefs.validateBskyAppStatePref(pref).success) {
451
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
452
+ const { $type, ...v } = pref;
453
+ prefs.bskyAppState.queuedNudges = v.queuedNudges || [];
454
+ prefs.bskyAppState.activeProgressGuide = v.activeProgressGuide;
242
455
  }
243
456
  }
244
- }
245
- /**
246
- * Resume a pre-existing session with this agent.
247
- */
248
- async resumeSession(session) {
249
- try {
250
- this.session = session;
251
- const res = await this.api.com.atproto.server.getSession();
252
- if (res.data.did !== this.session.did) {
253
- throw new xrpc_2.XRPCError(xrpc_2.ResponseType.InvalidRequest, 'Invalid session', 'InvalidDID');
254
- }
255
- this.session.email = res.data.email;
256
- this.session.handle = res.data.handle;
257
- this.session.emailConfirmed = res.data.emailConfirmed;
258
- this.session.emailAuthFactor = res.data.emailAuthFactor;
259
- this.session.active = res.data.active ?? true;
260
- this.session.status = res.data.status;
261
- this._updateApiEndpoint(res.data.didDoc);
262
- this._persistSession?.('update', this.session);
263
- return res;
264
- }
265
- catch (e) {
266
- this.session = undefined;
267
- if (e instanceof xrpc_2.XRPCError) {
268
- /*
269
- * `ExpiredToken` and `InvalidToken` are handled in
270
- * `this_refreshSession`, and emit an `expired` event there.
271
- *
272
- * Everything else is handled here.
273
- */
274
- if ([1, 408, 425, 429, 500, 502, 503, 504, 522, 524].includes(e.status)) {
275
- this._persistSession?.('network-error', undefined);
457
+ /*
458
+ * If `prefs.savedFeeds` is undefined, no `savedFeedsPrefV2` exists, which
459
+ * means we want to try to migrate if needed.
460
+ *
461
+ * If v1 prefs exist, they will be migrated to v2.
462
+ *
463
+ * If no v1 prefs exist, the user is either new, or could be old and has
464
+ * never edited their feeds.
465
+ */
466
+ if (prefs.savedFeeds == null) {
467
+ const { saved, pinned } = prefs.feeds;
468
+ if (saved && pinned) {
469
+ const uniqueMigratedSavedFeeds = new Map();
470
+ // insert Following feed first
471
+ uniqueMigratedSavedFeeds.set('timeline', {
472
+ id: common_web_1.TID.nextStr(),
473
+ type: 'timeline',
474
+ value: 'following',
475
+ pinned: true,
476
+ });
477
+ // use pinned as source of truth for feed order
478
+ for (const uri of pinned) {
479
+ const type = (0, util_1.getSavedFeedType)(uri);
480
+ // only want supported types
481
+ if (type === 'unknown')
482
+ continue;
483
+ uniqueMigratedSavedFeeds.set(uri, {
484
+ id: common_web_1.TID.nextStr(),
485
+ type,
486
+ value: uri,
487
+ pinned: true,
488
+ });
276
489
  }
277
- else {
278
- this._persistSession?.('expired', undefined);
490
+ for (const uri of saved) {
491
+ if (!uniqueMigratedSavedFeeds.has(uri)) {
492
+ const type = (0, util_1.getSavedFeedType)(uri);
493
+ // only want supported types
494
+ if (type === 'unknown')
495
+ continue;
496
+ uniqueMigratedSavedFeeds.set(uri, {
497
+ id: common_web_1.TID.nextStr(),
498
+ type,
499
+ value: uri,
500
+ pinned: false,
501
+ });
502
+ }
279
503
  }
504
+ prefs.savedFeeds = Array.from(uniqueMigratedSavedFeeds.values());
280
505
  }
281
506
  else {
282
- this._persistSession?.('network-error', undefined);
507
+ prefs.savedFeeds = [
508
+ {
509
+ id: common_web_1.TID.nextStr(),
510
+ type: 'timeline',
511
+ value: 'following',
512
+ pinned: true,
513
+ },
514
+ ];
283
515
  }
284
- throw e;
516
+ // save to user preferences so this migration doesn't re-occur
517
+ await this.overwriteSavedFeeds(prefs.savedFeeds);
285
518
  }
519
+ // apply the label prefs
520
+ for (const pref of labelPrefs) {
521
+ if (pref.labelerDid) {
522
+ const labeler = prefs.moderationPrefs.labelers.find((labeler) => labeler.did === pref.labelerDid);
523
+ if (!labeler)
524
+ continue;
525
+ labeler.labels[pref.label] = pref.visibility;
526
+ }
527
+ else {
528
+ prefs.moderationPrefs.labels[pref.label] =
529
+ pref.visibility;
530
+ }
531
+ }
532
+ prefs.moderationPrefs.labels = remapLegacyLabels(prefs.moderationPrefs.labels);
533
+ // automatically configure the client
534
+ this.configureLabelers(prefsArrayToLabelerDids(res.data.preferences));
535
+ return prefs;
536
+ }
537
+ async overwriteSavedFeeds(savedFeeds) {
538
+ savedFeeds.forEach(util_1.validateSavedFeed);
539
+ const uniqueSavedFeeds = new Map();
540
+ savedFeeds.forEach((feed) => {
541
+ // remove and re-insert to preserve order
542
+ if (uniqueSavedFeeds.has(feed.id)) {
543
+ uniqueSavedFeeds.delete(feed.id);
544
+ }
545
+ uniqueSavedFeeds.set(feed.id, feed);
546
+ });
547
+ return this.updateSavedFeedsV2Preferences(() => Array.from(uniqueSavedFeeds.values()));
548
+ }
549
+ async updateSavedFeeds(savedFeedsToUpdate) {
550
+ savedFeedsToUpdate.map(util_1.validateSavedFeed);
551
+ return this.updateSavedFeedsV2Preferences((savedFeeds) => {
552
+ return savedFeeds.map((savedFeed) => {
553
+ const updatedVersion = savedFeedsToUpdate.find((updated) => savedFeed.id === updated.id);
554
+ if (updatedVersion) {
555
+ return {
556
+ ...savedFeed,
557
+ // only update pinned
558
+ pinned: updatedVersion.pinned,
559
+ };
560
+ }
561
+ return savedFeed;
562
+ });
563
+ });
564
+ }
565
+ async addSavedFeeds(savedFeeds) {
566
+ const toSave = savedFeeds.map((f) => ({
567
+ ...f,
568
+ id: common_web_1.TID.nextStr(),
569
+ }));
570
+ toSave.forEach(util_1.validateSavedFeed);
571
+ return this.updateSavedFeedsV2Preferences((savedFeeds) => [
572
+ ...savedFeeds,
573
+ ...toSave,
574
+ ]);
575
+ }
576
+ async removeSavedFeeds(ids) {
577
+ return this.updateSavedFeedsV2Preferences((savedFeeds) => [
578
+ ...savedFeeds.filter((feed) => !ids.find((id) => feed.id === id)),
579
+ ]);
286
580
  }
287
581
  /**
288
- * Internal helper to add authorization headers to requests.
582
+ * @deprecated use `overwriteSavedFeeds`
289
583
  */
290
- _addHeaders(reqHeaders) {
291
- if (!reqHeaders.authorization && this.session?.accessJwt) {
292
- reqHeaders = {
293
- ...reqHeaders,
294
- authorization: `Bearer ${this.session.accessJwt}`,
295
- };
296
- }
297
- if (this.proxyHeader) {
298
- reqHeaders = {
299
- ...reqHeaders,
300
- 'atproto-proxy': this.proxyHeader,
301
- };
302
- }
303
- const labelerHeaderName = 'atproto-accept-labelers';
304
- const labelerHeaders = AtpAgent.appLabelers
305
- .map((str) => `${str};redact`)
306
- .concat(this.labelersHeader.filter((str) => str.startsWith('did:')));
307
- // Besides labelers configured via appLabelers and labelersHeader
308
- // respect any additional labelers configured via the request headers
309
- if (reqHeaders[labelerHeaderName]) {
310
- labelerHeaders.push(
311
- // Allow for headers to be comma-separated with or without spaces in between by trimming after split
312
- ...reqHeaders[labelerHeaderName].split(',').map((str) => str.trim()));
313
- }
314
- reqHeaders = {
315
- ...reqHeaders,
316
- [labelerHeaderName]: labelerHeaders.join(', '),
317
- };
318
- return reqHeaders;
584
+ async setSavedFeeds(saved, pinned) {
585
+ return this.updateFeedPreferences(() => ({
586
+ saved,
587
+ pinned,
588
+ }));
319
589
  }
320
590
  /**
321
- * Internal fetch handler which adds access-token management
591
+ * @deprecated use `addSavedFeeds`
322
592
  */
323
- async _fetch(reqUri, reqMethod, reqHeaders, reqBody) {
324
- if (!AtpAgent.fetch) {
325
- throw new Error('AtpAgent fetch() method not configured');
326
- }
327
- // wait for any active session-refreshes to finish
328
- await this._refreshSessionPromise;
329
- // send the request
330
- let res = await AtpAgent.fetch(reqUri, reqMethod, this._addHeaders(reqHeaders), reqBody);
331
- // handle session-refreshes as needed
332
- if (isErrorResponse(res, ['ExpiredToken']) && this.session?.refreshJwt) {
333
- // attempt refresh
334
- await this.refreshSession();
335
- // resend the request with the new access token
336
- res = await AtpAgent.fetch(reqUri, reqMethod, this._addHeaders(reqHeaders), reqBody);
337
- }
338
- return res;
593
+ async addSavedFeed(v) {
594
+ return this.updateFeedPreferences((saved, pinned) => ({
595
+ saved: [...saved.filter((uri) => uri !== v), v],
596
+ pinned,
597
+ }));
339
598
  }
340
599
  /**
341
- * Internal helper to refresh sessions
342
- * - Wraps the actual implementation in a promise-guard to ensure only
343
- * one refresh is attempted at a time.
600
+ * @deprecated use `removeSavedFeeds`
344
601
  */
345
- async refreshSession() {
346
- if (this._refreshSessionPromise) {
347
- return this._refreshSessionPromise;
348
- }
349
- this._refreshSessionPromise = this._refreshSessionInner();
350
- try {
351
- await this._refreshSessionPromise;
352
- }
353
- finally {
354
- this._refreshSessionPromise = undefined;
355
- }
602
+ async removeSavedFeed(v) {
603
+ return this.updateFeedPreferences((saved, pinned) => ({
604
+ saved: saved.filter((uri) => uri !== v),
605
+ pinned: pinned.filter((uri) => uri !== v),
606
+ }));
356
607
  }
357
608
  /**
358
- * Internal helper to refresh sessions (actual behavior)
609
+ * @deprecated use `addSavedFeeds` or `updateSavedFeeds`
359
610
  */
360
- async _refreshSessionInner() {
361
- if (!AtpAgent.fetch) {
362
- throw new Error('AtpAgent fetch() method not configured');
611
+ async addPinnedFeed(v) {
612
+ return this.updateFeedPreferences((saved, pinned) => ({
613
+ saved: [...saved.filter((uri) => uri !== v), v],
614
+ pinned: [...pinned.filter((uri) => uri !== v), v],
615
+ }));
616
+ }
617
+ /**
618
+ * @deprecated use `updateSavedFeeds` or `removeSavedFeeds`
619
+ */
620
+ async removePinnedFeed(v) {
621
+ return this.updateFeedPreferences((saved, pinned) => ({
622
+ saved,
623
+ pinned: pinned.filter((uri) => uri !== v),
624
+ }));
625
+ }
626
+ async setAdultContentEnabled(v) {
627
+ await this.updatePreferences((prefs) => {
628
+ let adultContentPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isAdultContentPref(pref) &&
629
+ index_1.AppBskyActorDefs.validateAdultContentPref(pref).success);
630
+ if (adultContentPref) {
631
+ adultContentPref.enabled = v;
632
+ }
633
+ else {
634
+ adultContentPref = {
635
+ $type: 'app.bsky.actor.defs#adultContentPref',
636
+ enabled: v,
637
+ };
638
+ }
639
+ return prefs
640
+ .filter((pref) => !index_1.AppBskyActorDefs.isAdultContentPref(pref))
641
+ .concat([adultContentPref]);
642
+ });
643
+ }
644
+ async setContentLabelPref(key, value, labelerDid) {
645
+ if (labelerDid) {
646
+ (0, syntax_1.ensureValidDid)(labelerDid);
363
647
  }
364
- if (!this.session?.refreshJwt) {
365
- return;
648
+ await this.updatePreferences((prefs) => {
649
+ let labelPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isContentLabelPref(pref) &&
650
+ index_1.AppBskyActorDefs.validateContentLabelPref(pref).success &&
651
+ pref.label === key &&
652
+ pref.labelerDid === labelerDid);
653
+ let legacyLabelPref;
654
+ if (labelPref) {
655
+ labelPref.visibility = value;
656
+ }
657
+ else {
658
+ labelPref = {
659
+ $type: 'app.bsky.actor.defs#contentLabelPref',
660
+ label: key,
661
+ labelerDid,
662
+ visibility: value,
663
+ };
664
+ }
665
+ if (index_1.AppBskyActorDefs.isContentLabelPref(labelPref)) {
666
+ // is global
667
+ if (!labelPref.labelerDid) {
668
+ const legacyLabelValue = {
669
+ 'graphic-media': 'gore',
670
+ porn: 'nsfw',
671
+ sexual: 'suggestive',
672
+ }[labelPref.label];
673
+ // if it's a legacy label, double-write the legacy label
674
+ if (legacyLabelValue) {
675
+ legacyLabelPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isContentLabelPref(pref) &&
676
+ index_1.AppBskyActorDefs.validateContentLabelPref(pref).success &&
677
+ pref.label === legacyLabelValue &&
678
+ pref.labelerDid === undefined);
679
+ if (legacyLabelPref) {
680
+ legacyLabelPref.visibility = value;
681
+ }
682
+ else {
683
+ legacyLabelPref = {
684
+ $type: 'app.bsky.actor.defs#contentLabelPref',
685
+ label: legacyLabelValue,
686
+ labelerDid: undefined,
687
+ visibility: value,
688
+ };
689
+ }
690
+ }
691
+ }
692
+ }
693
+ return prefs
694
+ .filter((pref) => !index_1.AppBskyActorDefs.isContentLabelPref(pref) ||
695
+ !(pref.label === key && pref.labelerDid === labelerDid))
696
+ .concat([labelPref])
697
+ .filter((pref) => {
698
+ if (!legacyLabelPref)
699
+ return true;
700
+ return (!index_1.AppBskyActorDefs.isContentLabelPref(pref) ||
701
+ !(pref.label === legacyLabelPref.label &&
702
+ pref.labelerDid === undefined));
703
+ })
704
+ .concat(legacyLabelPref ? [legacyLabelPref] : []);
705
+ });
706
+ }
707
+ async addLabeler(did) {
708
+ const prefs = await this.updatePreferences((prefs) => {
709
+ let labelersPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isLabelersPref(pref) &&
710
+ index_1.AppBskyActorDefs.validateLabelersPref(pref).success);
711
+ if (!labelersPref) {
712
+ labelersPref = {
713
+ $type: 'app.bsky.actor.defs#labelersPref',
714
+ labelers: [],
715
+ };
716
+ }
717
+ if (index_1.AppBskyActorDefs.isLabelersPref(labelersPref)) {
718
+ let labelerPrefItem = labelersPref.labelers.find((labeler) => labeler.did === did);
719
+ if (!labelerPrefItem) {
720
+ labelerPrefItem = {
721
+ did,
722
+ };
723
+ labelersPref.labelers.push(labelerPrefItem);
724
+ }
725
+ }
726
+ return prefs
727
+ .filter((pref) => !index_1.AppBskyActorDefs.isLabelersPref(pref))
728
+ .concat([labelersPref]);
729
+ });
730
+ // automatically configure the client
731
+ this.configureLabelers(prefsArrayToLabelerDids(prefs));
732
+ }
733
+ async removeLabeler(did) {
734
+ const prefs = await this.updatePreferences((prefs) => {
735
+ let labelersPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isLabelersPref(pref) &&
736
+ index_1.AppBskyActorDefs.validateLabelersPref(pref).success);
737
+ if (!labelersPref) {
738
+ labelersPref = {
739
+ $type: 'app.bsky.actor.defs#labelersPref',
740
+ labelers: [],
741
+ };
742
+ }
743
+ if (index_1.AppBskyActorDefs.isLabelersPref(labelersPref)) {
744
+ labelersPref.labelers = labelersPref.labelers.filter((labeler) => labeler.did !== did);
745
+ }
746
+ return prefs
747
+ .filter((pref) => !index_1.AppBskyActorDefs.isLabelersPref(pref))
748
+ .concat([labelersPref]);
749
+ });
750
+ // automatically configure the client
751
+ this.configureLabelers(prefsArrayToLabelerDids(prefs));
752
+ }
753
+ async setPersonalDetails({ birthDate, }) {
754
+ birthDate = birthDate instanceof Date ? birthDate.toISOString() : birthDate;
755
+ await this.updatePreferences((prefs) => {
756
+ let personalDetailsPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isPersonalDetailsPref(pref) &&
757
+ index_1.AppBskyActorDefs.validatePersonalDetailsPref(pref).success);
758
+ if (personalDetailsPref) {
759
+ personalDetailsPref.birthDate = birthDate;
760
+ }
761
+ else {
762
+ personalDetailsPref = {
763
+ $type: 'app.bsky.actor.defs#personalDetailsPref',
764
+ birthDate,
765
+ };
766
+ }
767
+ return prefs
768
+ .filter((pref) => !index_1.AppBskyActorDefs.isPersonalDetailsPref(pref))
769
+ .concat([personalDetailsPref]);
770
+ });
771
+ }
772
+ async setFeedViewPrefs(feed, pref) {
773
+ await this.updatePreferences((prefs) => {
774
+ const existing = prefs.findLast((pref) => index_1.AppBskyActorDefs.isFeedViewPref(pref) &&
775
+ index_1.AppBskyActorDefs.validateFeedViewPref(pref).success &&
776
+ pref.feed === feed);
777
+ if (existing) {
778
+ pref = { ...existing, ...pref };
779
+ }
780
+ return prefs
781
+ .filter((p) => !index_1.AppBskyActorDefs.isFeedViewPref(pref) || p.feed !== feed)
782
+ .concat([{ ...pref, $type: 'app.bsky.actor.defs#feedViewPref', feed }]);
783
+ });
784
+ }
785
+ async setThreadViewPrefs(pref) {
786
+ await this.updatePreferences((prefs) => {
787
+ const existing = prefs.findLast((pref) => index_1.AppBskyActorDefs.isThreadViewPref(pref) &&
788
+ index_1.AppBskyActorDefs.validateThreadViewPref(pref).success);
789
+ if (existing) {
790
+ pref = { ...existing, ...pref };
791
+ }
792
+ return prefs
793
+ .filter((p) => !index_1.AppBskyActorDefs.isThreadViewPref(p))
794
+ .concat([{ ...pref, $type: 'app.bsky.actor.defs#threadViewPref' }]);
795
+ });
796
+ }
797
+ async setInterestsPref(pref) {
798
+ await this.updatePreferences((prefs) => {
799
+ const existing = prefs.findLast((pref) => index_1.AppBskyActorDefs.isInterestsPref(pref) &&
800
+ index_1.AppBskyActorDefs.validateInterestsPref(pref).success);
801
+ if (existing) {
802
+ pref = { ...existing, ...pref };
803
+ }
804
+ return prefs
805
+ .filter((p) => !index_1.AppBskyActorDefs.isInterestsPref(p))
806
+ .concat([{ ...pref, $type: 'app.bsky.actor.defs#interestsPref' }]);
807
+ });
808
+ }
809
+ async upsertMutedWords(newMutedWords) {
810
+ await this.updatePreferences((prefs) => {
811
+ let mutedWordsPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isMutedWordsPref(pref) &&
812
+ index_1.AppBskyActorDefs.validateMutedWordsPref(pref).success);
813
+ if (mutedWordsPref && index_1.AppBskyActorDefs.isMutedWordsPref(mutedWordsPref)) {
814
+ for (const updatedWord of newMutedWords) {
815
+ let foundMatch = false;
816
+ const sanitizedUpdatedValue = (0, util_1.sanitizeMutedWordValue)(updatedWord.value);
817
+ // was trimmed down to an empty string e.g. single `#`
818
+ if (!sanitizedUpdatedValue)
819
+ continue;
820
+ for (const existingItem of mutedWordsPref.items) {
821
+ if (existingItem.value === sanitizedUpdatedValue) {
822
+ existingItem.targets = Array.from(new Set([...existingItem.targets, ...updatedWord.targets]));
823
+ foundMatch = true;
824
+ break;
825
+ }
826
+ }
827
+ if (!foundMatch) {
828
+ mutedWordsPref.items.push({
829
+ ...updatedWord,
830
+ value: sanitizedUpdatedValue,
831
+ });
832
+ }
833
+ }
834
+ }
835
+ else {
836
+ // if the pref doesn't exist, create it
837
+ mutedWordsPref = {
838
+ items: newMutedWords.map((w) => ({
839
+ ...w,
840
+ value: (0, util_1.sanitizeMutedWordValue)(w.value),
841
+ })),
842
+ };
843
+ }
844
+ return prefs
845
+ .filter((p) => !index_1.AppBskyActorDefs.isMutedWordsPref(p))
846
+ .concat([
847
+ { ...mutedWordsPref, $type: 'app.bsky.actor.defs#mutedWordsPref' },
848
+ ]);
849
+ });
850
+ }
851
+ async updateMutedWord(mutedWord) {
852
+ await this.updatePreferences((prefs) => {
853
+ const mutedWordsPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isMutedWordsPref(pref) &&
854
+ index_1.AppBskyActorDefs.validateMutedWordsPref(pref).success);
855
+ if (mutedWordsPref && index_1.AppBskyActorDefs.isMutedWordsPref(mutedWordsPref)) {
856
+ for (const existingItem of mutedWordsPref.items) {
857
+ if (existingItem.value === mutedWord.value) {
858
+ existingItem.targets = mutedWord.targets;
859
+ break;
860
+ }
861
+ }
862
+ }
863
+ return prefs
864
+ .filter((p) => !index_1.AppBskyActorDefs.isMutedWordsPref(p))
865
+ .concat([
866
+ { ...mutedWordsPref, $type: 'app.bsky.actor.defs#mutedWordsPref' },
867
+ ]);
868
+ });
869
+ }
870
+ async removeMutedWord(mutedWord) {
871
+ await this.updatePreferences((prefs) => {
872
+ const mutedWordsPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isMutedWordsPref(pref) &&
873
+ index_1.AppBskyActorDefs.validateMutedWordsPref(pref).success);
874
+ if (mutedWordsPref && index_1.AppBskyActorDefs.isMutedWordsPref(mutedWordsPref)) {
875
+ for (let i = 0; i < mutedWordsPref.items.length; i++) {
876
+ const existing = mutedWordsPref.items[i];
877
+ if (existing.value === mutedWord.value) {
878
+ mutedWordsPref.items.splice(i, 1);
879
+ break;
880
+ }
881
+ }
882
+ }
883
+ return prefs
884
+ .filter((p) => !index_1.AppBskyActorDefs.isMutedWordsPref(p))
885
+ .concat([
886
+ { ...mutedWordsPref, $type: 'app.bsky.actor.defs#mutedWordsPref' },
887
+ ]);
888
+ });
889
+ }
890
+ async hidePost(postUri) {
891
+ await this.updateHiddenPost(postUri, 'hide');
892
+ }
893
+ async unhidePost(postUri) {
894
+ await this.updateHiddenPost(postUri, 'unhide');
895
+ }
896
+ async bskyAppQueueNudges(nudges) {
897
+ await this.updatePreferences((prefs) => {
898
+ let bskyAppStatePref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isBskyAppStatePref(pref) &&
899
+ index_1.AppBskyActorDefs.validateBskyAppStatePref(pref).success);
900
+ bskyAppStatePref = bskyAppStatePref || {};
901
+ nudges = Array.isArray(nudges) ? nudges : [nudges];
902
+ bskyAppStatePref.queuedNudges = (bskyAppStatePref.queuedNudges || []).concat(nudges);
903
+ return prefs
904
+ .filter((p) => !index_1.AppBskyActorDefs.isBskyAppStatePref(p))
905
+ .concat([
906
+ {
907
+ ...bskyAppStatePref,
908
+ $type: 'app.bsky.actor.defs#bskyAppStatePref',
909
+ },
910
+ ]);
911
+ });
912
+ }
913
+ async bskyAppDismissNudges(nudges) {
914
+ await this.updatePreferences((prefs) => {
915
+ let bskyAppStatePref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isBskyAppStatePref(pref) &&
916
+ index_1.AppBskyActorDefs.validateBskyAppStatePref(pref).success);
917
+ bskyAppStatePref = bskyAppStatePref || {};
918
+ nudges = Array.isArray(nudges) ? nudges : [nudges];
919
+ bskyAppStatePref.queuedNudges = (bskyAppStatePref.queuedNudges || []).filter((nudge) => !nudges.includes(nudge));
920
+ return prefs
921
+ .filter((p) => !index_1.AppBskyActorDefs.isBskyAppStatePref(p))
922
+ .concat([
923
+ {
924
+ ...bskyAppStatePref,
925
+ $type: 'app.bsky.actor.defs#bskyAppStatePref',
926
+ },
927
+ ]);
928
+ });
929
+ }
930
+ async bskyAppSetActiveProgressGuide(guide) {
931
+ if (guide &&
932
+ !index_1.AppBskyActorDefs.validateBskyAppProgressGuide(guide).success) {
933
+ throw new Error('Invalid progress guide');
366
934
  }
367
- // send the refresh request
368
- const url = new URL((this.pdsUrl || this.service).origin);
369
- url.pathname = `/xrpc/${REFRESH_SESSION}`;
370
- const res = await AtpAgent.fetch(url.toString(), 'POST', {
371
- authorization: `Bearer ${this.session.refreshJwt}`,
372
- }, undefined);
373
- if (isErrorResponse(res, ['ExpiredToken', 'InvalidToken'])) {
374
- // failed due to a bad refresh token
375
- this.session = undefined;
376
- this._persistSession?.('expired', undefined);
935
+ await this.updatePreferences((prefs) => {
936
+ let bskyAppStatePref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isBskyAppStatePref(pref) &&
937
+ index_1.AppBskyActorDefs.validateBskyAppStatePref(pref).success);
938
+ bskyAppStatePref = bskyAppStatePref || {};
939
+ bskyAppStatePref.activeProgressGuide = guide;
940
+ return prefs
941
+ .filter((p) => !index_1.AppBskyActorDefs.isBskyAppStatePref(p))
942
+ .concat([
943
+ {
944
+ ...bskyAppStatePref,
945
+ $type: 'app.bsky.actor.defs#bskyAppStatePref',
946
+ },
947
+ ]);
948
+ });
949
+ }
950
+ /**
951
+ * This function updates the preferences of a user and allows for a callback function to be executed
952
+ * before the update.
953
+ * @param cb - cb is a callback function that takes in a single parameter of type
954
+ * AppBskyActorDefs.Preferences and returns either a boolean or void. This callback function is used to
955
+ * update the preferences of the user. The function is called with the current preferences as an
956
+ * argument and if the callback returns false, the preferences are not updated.
957
+ */
958
+ async updatePreferences(cb) {
959
+ try {
960
+ await __classPrivateFieldGet(this, _Agent_prefsLock, "f").acquireAsync();
961
+ const res = await this.app.bsky.actor.getPreferences({});
962
+ const newPrefs = cb(res.data.preferences);
963
+ if (newPrefs === false) {
964
+ return res.data.preferences;
965
+ }
966
+ await this.app.bsky.actor.putPreferences({
967
+ preferences: newPrefs,
968
+ });
969
+ return newPrefs;
377
970
  }
378
- else if (isNewSessionObject(this._baseClient, res.body)) {
379
- // succeeded, update the session
380
- this.session = {
381
- ...(this.session || {}),
382
- accessJwt: res.body.accessJwt,
383
- refreshJwt: res.body.refreshJwt,
384
- handle: res.body.handle,
385
- did: res.body.did,
386
- };
387
- this._updateApiEndpoint(res.body.didDoc);
388
- this._persistSession?.('update', this.session);
971
+ finally {
972
+ __classPrivateFieldGet(this, _Agent_prefsLock, "f").release();
389
973
  }
390
- // else: other failures should be ignored - the issue will
391
- // propagate in the _fetch() handler's second attempt to run
392
- // the request
974
+ }
975
+ async updateHiddenPost(postUri, action) {
976
+ await this.updatePreferences((prefs) => {
977
+ let pref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isHiddenPostsPref(pref) &&
978
+ index_1.AppBskyActorDefs.validateHiddenPostsPref(pref).success);
979
+ if (pref && index_1.AppBskyActorDefs.isHiddenPostsPref(pref)) {
980
+ pref.items =
981
+ action === 'hide'
982
+ ? Array.from(new Set([...pref.items, postUri]))
983
+ : pref.items.filter((uri) => uri !== postUri);
984
+ }
985
+ else {
986
+ if (action === 'hide') {
987
+ pref = {
988
+ $type: 'app.bsky.actor.defs#hiddenPostsPref',
989
+ items: [postUri],
990
+ };
991
+ }
992
+ }
993
+ return prefs
994
+ .filter((p) => !index_1.AppBskyActorDefs.isInterestsPref(p))
995
+ .concat([{ ...pref, $type: 'app.bsky.actor.defs#hiddenPostsPref' }]);
996
+ });
393
997
  }
394
998
  /**
395
- * Helper to update the pds endpoint dynamically.
396
- *
397
- * The session methods (create, resume, refresh) may respond with the user's
398
- * did document which contains the user's canonical PDS endpoint. That endpoint
399
- * may differ from the endpoint used to contact the server. We capture that
400
- * PDS endpoint and update the client to use that given endpoint for future
401
- * requests. (This helps ensure smooth migrations between PDSes, especially
402
- * when the PDSes are operated by a single org.)
999
+ * A helper specifically for updating feed preferences
403
1000
  */
404
- _updateApiEndpoint(didDoc) {
405
- if ((0, common_web_1.isValidDidDoc)(didDoc)) {
406
- const endpoint = (0, common_web_1.getPdsEndpoint)(didDoc);
407
- this.pdsUrl = endpoint ? new URL(endpoint) : undefined;
408
- }
409
- this.api.xrpc.uri = this.pdsUrl || this.service;
1001
+ async updateFeedPreferences(cb) {
1002
+ let res;
1003
+ await this.updatePreferences((prefs) => {
1004
+ let feedsPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isSavedFeedsPref(pref) &&
1005
+ index_1.AppBskyActorDefs.validateSavedFeedsPref(pref).success);
1006
+ if (feedsPref) {
1007
+ res = cb(feedsPref.saved, feedsPref.pinned);
1008
+ feedsPref.saved = res.saved;
1009
+ feedsPref.pinned = res.pinned;
1010
+ }
1011
+ else {
1012
+ res = cb([], []);
1013
+ feedsPref = {
1014
+ $type: 'app.bsky.actor.defs#savedFeedsPref',
1015
+ saved: res.saved,
1016
+ pinned: res.pinned,
1017
+ };
1018
+ }
1019
+ return prefs
1020
+ .filter((pref) => !index_1.AppBskyActorDefs.isSavedFeedsPref(pref))
1021
+ .concat([feedsPref]);
1022
+ });
1023
+ return res;
1024
+ }
1025
+ async updateSavedFeedsV2Preferences(cb) {
1026
+ let maybeMutatedSavedFeeds = [];
1027
+ await this.updatePreferences((prefs) => {
1028
+ let existingV2Pref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isSavedFeedsPrefV2(pref) &&
1029
+ index_1.AppBskyActorDefs.validateSavedFeedsPrefV2(pref).success);
1030
+ let existingV1Pref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isSavedFeedsPref(pref) &&
1031
+ index_1.AppBskyActorDefs.validateSavedFeedsPref(pref).success);
1032
+ if (existingV2Pref) {
1033
+ maybeMutatedSavedFeeds = cb(existingV2Pref.items);
1034
+ existingV2Pref = {
1035
+ ...existingV2Pref,
1036
+ items: maybeMutatedSavedFeeds,
1037
+ };
1038
+ }
1039
+ else {
1040
+ maybeMutatedSavedFeeds = cb([]);
1041
+ existingV2Pref = {
1042
+ $type: 'app.bsky.actor.defs#savedFeedsPrefV2',
1043
+ items: maybeMutatedSavedFeeds,
1044
+ };
1045
+ }
1046
+ // enforce ordering, pinned then saved
1047
+ const pinned = existingV2Pref.items.filter((i) => i.pinned);
1048
+ const saved = existingV2Pref.items.filter((i) => !i.pinned);
1049
+ existingV2Pref.items = pinned.concat(saved);
1050
+ let updatedPrefs = prefs
1051
+ .filter((pref) => !index_1.AppBskyActorDefs.isSavedFeedsPrefV2(pref))
1052
+ .concat(existingV2Pref);
1053
+ /*
1054
+ * If there's a v2 pref present, it means this account was migrated from v1
1055
+ * to v2. During the transition period, we double write v2 prefs back to
1056
+ * v1, but NOT the other way around.
1057
+ */
1058
+ if (existingV1Pref) {
1059
+ const { saved, pinned } = existingV1Pref;
1060
+ const v2Compat = (0, util_1.savedFeedsToUriArrays)(
1061
+ // v1 only supports feeds and lists
1062
+ existingV2Pref.items.filter((i) => ['feed', 'list'].includes(i.type)));
1063
+ existingV1Pref = {
1064
+ ...existingV1Pref,
1065
+ saved: Array.from(new Set([...saved, ...v2Compat.saved])),
1066
+ pinned: Array.from(new Set([...pinned, ...v2Compat.pinned])),
1067
+ };
1068
+ updatedPrefs = updatedPrefs
1069
+ .filter((pref) => !index_1.AppBskyActorDefs.isSavedFeedsPref(pref))
1070
+ .concat(existingV1Pref);
1071
+ }
1072
+ return updatedPrefs;
1073
+ });
1074
+ return maybeMutatedSavedFeeds;
410
1075
  }
411
1076
  }
412
- exports.AtpAgent = AtpAgent;
1077
+ exports.Agent = Agent;
1078
+ _Agent_prefsLock = new WeakMap();
413
1079
  /**
414
- * The `fetch` implementation; must be implemented for your platform.
1080
+ * Helper to transform the legacy content preferences.
415
1081
  */
416
- Object.defineProperty(AtpAgent, "fetch", {
417
- enumerable: true,
418
- configurable: true,
419
- writable: true,
420
- value: xrpc_2.defaultFetchHandler
421
- });
1082
+ function adjustLegacyContentLabelPref(pref) {
1083
+ let visibility = pref.visibility;
1084
+ // adjust legacy values
1085
+ if (visibility === 'show') {
1086
+ visibility = 'ignore';
1087
+ }
1088
+ return { ...pref, visibility };
1089
+ }
422
1090
  /**
423
- * The labelers to be used across all requests with the takedown capability
1091
+ * Re-maps legacy labels to new labels on READ. Does not save these changes to
1092
+ * the user's preferences.
424
1093
  */
425
- Object.defineProperty(AtpAgent, "appLabelers", {
426
- enumerable: true,
427
- configurable: true,
428
- writable: true,
429
- value: [const_1.BSKY_LABELER_DID]
430
- });
431
- function isErrorObject(v) {
432
- return xrpc_1.errorResponseBody.safeParse(v).success;
433
- }
434
- function isErrorResponse(res, errorNames) {
435
- if (res.status !== 400) {
436
- return false;
437
- }
438
- if (!isErrorObject(res.body)) {
439
- return false;
1094
+ function remapLegacyLabels(labels) {
1095
+ const _labels = { ...labels };
1096
+ const legacyToNewMap = {
1097
+ gore: 'graphic-media',
1098
+ nsfw: 'porn',
1099
+ suggestive: 'sexual',
1100
+ };
1101
+ for (const labelName in _labels) {
1102
+ const newLabelName = legacyToNewMap[labelName];
1103
+ if (newLabelName) {
1104
+ _labels[newLabelName] = _labels[labelName];
1105
+ }
440
1106
  }
441
- return (typeof res.body.error === 'string' && errorNames.includes(res.body.error));
1107
+ return _labels;
442
1108
  }
443
- function isNewSessionObject(client, v) {
444
- try {
445
- client.xrpc.lex.assertValidXrpcOutput('com.atproto.server.refreshSession', v);
446
- return true;
447
- }
448
- catch {
449
- return false;
1109
+ /**
1110
+ * A helper to get the currently enabled labelers from the full preferences array
1111
+ */
1112
+ function prefsArrayToLabelerDids(prefs) {
1113
+ const labelersPref = prefs.findLast((pref) => index_1.AppBskyActorDefs.isLabelersPref(pref) &&
1114
+ index_1.AppBskyActorDefs.validateLabelersPref(pref).success);
1115
+ let dids = [];
1116
+ if (labelersPref) {
1117
+ dids = labelersPref.labelers.map((labeler) => labeler.did);
450
1118
  }
1119
+ return dids;
1120
+ }
1121
+ function isBskyPrefs(v) {
1122
+ return (v &&
1123
+ typeof v === 'object' &&
1124
+ 'moderationPrefs' in v &&
1125
+ isModPrefs(v.moderationPrefs));
1126
+ }
1127
+ function isModPrefs(v) {
1128
+ return v && typeof v === 'object' && 'labelers' in v;
451
1129
  }
452
1130
  //# sourceMappingURL=agent.js.map