@atproto/ozone 0.1.175 → 0.2.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.
- package/CHANGELOG.md +23 -0
- package/dist/api/chat/getConvo.d.ts +4 -0
- package/dist/api/chat/getConvo.d.ts.map +1 -0
- package/dist/api/chat/getConvo.js +18 -0
- package/dist/api/chat/getConvo.js.map +1 -0
- package/dist/api/chat/getConvoMembers.d.ts +4 -0
- package/dist/api/chat/getConvoMembers.d.ts.map +1 -0
- package/dist/api/chat/getConvoMembers.js +18 -0
- package/dist/api/chat/getConvoMembers.js.map +1 -0
- package/dist/api/chat/index.d.ts.map +1 -1
- package/dist/api/chat/index.js +4 -0
- package/dist/api/chat/index.js.map +1 -1
- package/dist/daemon/event-reverser.d.ts.map +1 -1
- package/dist/daemon/event-reverser.js +1 -0
- package/dist/daemon/event-reverser.js.map +1 -1
- package/dist/db/migrations/20260513T202941104Z-add-subject-convo-id.d.ts +4 -0
- package/dist/db/migrations/20260513T202941104Z-add-subject-convo-id.d.ts.map +1 -0
- package/dist/db/migrations/20260513T202941104Z-add-subject-convo-id.js +107 -0
- package/dist/db/migrations/20260513T202941104Z-add-subject-convo-id.js.map +1 -0
- package/dist/db/migrations/index.d.ts +1 -0
- package/dist/db/migrations/index.d.ts.map +1 -1
- package/dist/db/migrations/index.js +1 -0
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/schema/expiring_tag.d.ts +1 -0
- package/dist/db/schema/expiring_tag.d.ts.map +1 -1
- package/dist/db/schema/expiring_tag.js.map +1 -1
- package/dist/db/schema/moderation_event.d.ts +2 -1
- package/dist/db/schema/moderation_event.d.ts.map +1 -1
- package/dist/db/schema/moderation_event.js.map +1 -1
- package/dist/db/schema/moderation_subject_status.d.ts +1 -0
- package/dist/db/schema/moderation_subject_status.d.ts.map +1 -1
- package/dist/db/schema/moderation_subject_status.js.map +1 -1
- package/dist/db/schema/report.d.ts +1 -0
- package/dist/db/schema/report.d.ts.map +1 -1
- package/dist/db/schema/report.js.map +1 -1
- package/dist/lexicon/index.d.ts +21 -2
- package/dist/lexicon/index.d.ts.map +1 -1
- package/dist/lexicon/index.js +36 -2
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +1420 -92
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +771 -44
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts +4 -0
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/external.d.ts +48 -2
- package/dist/lexicon/types/app/bsky/embed/external.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/external.js +21 -0
- package/dist/lexicon/types/app/bsky/embed/external.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/getEmbedExternalView.d.ts +31 -0
- package/dist/lexicon/types/app/bsky/embed/getEmbedExternalView.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/embed/getEmbedExternalView.js +5 -0
- package/dist/lexicon/types/app/bsky/embed/getEmbedExternalView.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/actor/getStatus.d.ts +24 -0
- package/dist/lexicon/types/chat/bsky/actor/getStatus.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/{group/getJoinLinkPreview.js → actor/getStatus.js} +2 -2
- package/dist/lexicon/types/chat/bsky/actor/getStatus.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts +39 -7
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.js +21 -0
- package/dist/lexicon/types/chat/bsky/convo/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getLog.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getLog.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getLog.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvoRequests.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvoRequests.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvoRequests.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/embed/joinLink.d.ts +19 -0
- package/dist/lexicon/types/chat/bsky/embed/joinLink.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/embed/joinLink.js +19 -0
- package/dist/lexicon/types/chat/bsky/embed/joinLink.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/addMembers.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/group/addMembers.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/addMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/createGroup.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/group/createGroup.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/createGroup.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/defs.d.ts +23 -0
- package/dist/lexicon/types/chat/bsky/group/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/defs.js +14 -0
- package/dist/lexicon/types/chat/bsky/group/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/{getJoinLinkPreview.d.ts → getJoinLinkPreviews.d.ts} +3 -4
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreviews.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreviews.js +5 -0
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreviews.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/listMutualGroups.d.ts +25 -0
- package/dist/lexicon/types/chat/bsky/group/listMutualGroups.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/listMutualGroups.js +5 -0
- package/dist/lexicon/types/chat/bsky/group/listMutualGroups.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/updateJoinRequestsRead.d.ts +24 -0
- package/dist/lexicon/types/chat/bsky/group/updateJoinRequestsRead.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/updateJoinRequestsRead.js +5 -0
- package/dist/lexicon/types/chat/bsky/group/updateJoinRequestsRead.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/withdrawJoinRequest.d.ts +24 -0
- package/dist/lexicon/types/chat/bsky/group/withdrawJoinRequest.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/withdrawJoinRequest.js +5 -0
- package/dist/lexicon/types/chat/bsky/group/withdrawJoinRequest.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/moderation/defs.d.ts +42 -0
- package/dist/lexicon/types/chat/bsky/moderation/defs.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/moderation/defs.js +26 -0
- package/dist/lexicon/types/chat/bsky/moderation/defs.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/moderation/getConvo.d.ts +23 -0
- package/dist/lexicon/types/chat/bsky/moderation/getConvo.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/moderation/getConvo.js +5 -0
- package/dist/lexicon/types/chat/bsky/moderation/getConvo.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/moderation/getConvoMembers.d.ts +26 -0
- package/dist/lexicon/types/chat/bsky/moderation/getConvoMembers.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/moderation/getConvoMembers.js +5 -0
- package/dist/lexicon/types/chat/bsky/moderation/getConvoMembers.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.d.ts +14 -2
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.js +7 -0
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/getServiceAuth.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/server/getServiceAuth.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/getServiceAuth.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +10 -3
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.js +7 -0
- package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.js.map +1 -1
- package/dist/mod-service/expiring-tags.d.ts +3 -0
- package/dist/mod-service/expiring-tags.d.ts.map +1 -1
- package/dist/mod-service/expiring-tags.js +5 -2
- package/dist/mod-service/expiring-tags.js.map +1 -1
- package/dist/mod-service/index.d.ts +3 -1
- package/dist/mod-service/index.d.ts.map +1 -1
- package/dist/mod-service/index.js +48 -10
- package/dist/mod-service/index.js.map +1 -1
- package/dist/mod-service/status.d.ts +7 -1
- package/dist/mod-service/status.d.ts.map +1 -1
- package/dist/mod-service/status.js +18 -3
- package/dist/mod-service/status.js.map +1 -1
- package/dist/mod-service/subject.d.ts +38 -2
- package/dist/mod-service/subject.d.ts.map +1 -1
- package/dist/mod-service/subject.js +67 -0
- package/dist/mod-service/subject.js.map +1 -1
- package/dist/mod-service/views.d.ts +2 -1
- package/dist/mod-service/views.d.ts.map +1 -1
- package/dist/mod-service/views.js +24 -22
- package/dist/mod-service/views.js.map +1 -1
- package/dist/queue/service.d.ts.map +1 -1
- package/dist/queue/service.js +7 -3
- package/dist/queue/service.js.map +1 -1
- package/dist/safelink/service.d.ts +1 -1
- package/package.json +9 -8
- package/src/api/chat/getConvo.ts +23 -0
- package/src/api/chat/getConvoMembers.ts +23 -0
- package/src/api/chat/index.ts +4 -0
- package/src/daemon/event-reverser.ts +1 -0
- package/src/db/migrations/20260513T202941104Z-add-subject-convo-id.ts +114 -0
- package/src/db/migrations/index.ts +1 -0
- package/src/db/schema/expiring_tag.ts +1 -0
- package/src/db/schema/moderation_event.ts +2 -0
- package/src/db/schema/moderation_subject_status.ts +4 -0
- package/src/db/schema/report.ts +2 -1
- package/src/mod-service/expiring-tags.ts +8 -2
- package/src/mod-service/index.ts +52 -16
- package/src/mod-service/status.ts +24 -2
- package/src/mod-service/subject.ts +79 -1
- package/src/mod-service/views.ts +28 -23
- package/src/queue/service.ts +8 -4
- package/tests/__snapshots__/verification.test.ts.snap +2 -0
- package/tests/expiring-tags.test.ts +1 -0
- package/tests/moderation-events.test.ts +108 -1
- package/tests/moderation-status-tags.test.ts +23 -0
- package/tests/moderation-statuses.test.ts +82 -0
- package/tests/moderation.test.ts +73 -0
- package/tests/repo-search.test.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreview.d.ts.map +0 -1
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreview.js.map +0 -1
- package/src/lexicon/index.ts +0 -4502
- package/src/lexicon/lexicons.ts +0 -25711
- package/src/lexicon/types/app/bsky/actor/defs.ts +0 -716
- package/src/lexicon/types/app/bsky/actor/getPreferences.ts +0 -38
- package/src/lexicon/types/app/bsky/actor/getProfile.ts +0 -37
- package/src/lexicon/types/app/bsky/actor/getProfiles.ts +0 -40
- package/src/lexicon/types/app/bsky/actor/getSuggestions.ts +0 -46
- package/src/lexicon/types/app/bsky/actor/profile.ts +0 -52
- package/src/lexicon/types/app/bsky/actor/putPreferences.ts +0 -34
- package/src/lexicon/types/app/bsky/actor/searchActors.ts +0 -46
- package/src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts +0 -44
- package/src/lexicon/types/app/bsky/actor/status.ts +0 -46
- package/src/lexicon/types/app/bsky/ageassurance/begin.ts +0 -54
- package/src/lexicon/types/app/bsky/ageassurance/defs.ts +0 -303
- package/src/lexicon/types/app/bsky/ageassurance/getConfig.ts +0 -34
- package/src/lexicon/types/app/bsky/ageassurance/getState.ts +0 -42
- package/src/lexicon/types/app/bsky/bookmark/createBookmark.ts +0 -35
- package/src/lexicon/types/app/bsky/bookmark/defs.ts +0 -54
- package/src/lexicon/types/app/bsky/bookmark/deleteBookmark.ts +0 -34
- package/src/lexicon/types/app/bsky/bookmark/getBookmarks.ts +0 -42
- package/src/lexicon/types/app/bsky/contact/defs.ts +0 -71
- package/src/lexicon/types/app/bsky/contact/dismissMatch.ts +0 -43
- package/src/lexicon/types/app/bsky/contact/getMatches.ts +0 -43
- package/src/lexicon/types/app/bsky/contact/getSyncStatus.ts +0 -39
- package/src/lexicon/types/app/bsky/contact/importContacts.ts +0 -54
- package/src/lexicon/types/app/bsky/contact/removeData.ts +0 -40
- package/src/lexicon/types/app/bsky/contact/sendNotification.ts +0 -44
- package/src/lexicon/types/app/bsky/contact/startPhoneVerification.ts +0 -43
- package/src/lexicon/types/app/bsky/contact/verifyPhone.ts +0 -53
- package/src/lexicon/types/app/bsky/draft/createDraft.ts +0 -46
- package/src/lexicon/types/app/bsky/draft/defs.ts +0 -212
- package/src/lexicon/types/app/bsky/draft/deleteDraft.ts +0 -33
- package/src/lexicon/types/app/bsky/draft/getDrafts.ts +0 -42
- package/src/lexicon/types/app/bsky/draft/updateDraft.ts +0 -34
- package/src/lexicon/types/app/bsky/embed/defs.ts +0 -32
- package/src/lexicon/types/app/bsky/embed/external.ts +0 -85
- package/src/lexicon/types/app/bsky/embed/images.ts +0 -86
- package/src/lexicon/types/app/bsky/embed/record.ts +0 -146
- package/src/lexicon/types/app/bsky/embed/recordWithMedia.ts +0 -59
- package/src/lexicon/types/app/bsky/embed/video.ts +0 -75
- package/src/lexicon/types/app/bsky/feed/defs.ts +0 -428
- package/src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts +0 -70
- package/src/lexicon/types/app/bsky/feed/generator.ts +0 -51
- package/src/lexicon/types/app/bsky/feed/getActorFeeds.ts +0 -43
- package/src/lexicon/types/app/bsky/feed/getActorLikes.ts +0 -44
- package/src/lexicon/types/app/bsky/feed/getAuthorFeed.ts +0 -53
- package/src/lexicon/types/app/bsky/feed/getFeed.ts +0 -44
- package/src/lexicon/types/app/bsky/feed/getFeedGenerator.ts +0 -45
- package/src/lexicon/types/app/bsky/feed/getFeedGenerators.ts +0 -40
- package/src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts +0 -47
- package/src/lexicon/types/app/bsky/feed/getLikes.ts +0 -65
- package/src/lexicon/types/app/bsky/feed/getListFeed.ts +0 -45
- package/src/lexicon/types/app/bsky/feed/getPostThread.ts +0 -51
- package/src/lexicon/types/app/bsky/feed/getPosts.ts +0 -41
- package/src/lexicon/types/app/bsky/feed/getQuotes.ts +0 -48
- package/src/lexicon/types/app/bsky/feed/getRepostedBy.ts +0 -48
- package/src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts +0 -42
- package/src/lexicon/types/app/bsky/feed/getTimeline.ts +0 -44
- package/src/lexicon/types/app/bsky/feed/like.ts +0 -40
- package/src/lexicon/types/app/bsky/feed/post.ts +0 -117
- package/src/lexicon/types/app/bsky/feed/postgate.ts +0 -58
- package/src/lexicon/types/app/bsky/feed/repost.ts +0 -40
- package/src/lexicon/types/app/bsky/feed/searchPosts.ts +0 -66
- package/src/lexicon/types/app/bsky/feed/sendInteractions.ts +0 -43
- package/src/lexicon/types/app/bsky/feed/threadgate.ts +0 -110
- package/src/lexicon/types/app/bsky/graph/block.ts +0 -39
- package/src/lexicon/types/app/bsky/graph/defs.ts +0 -206
- package/src/lexicon/types/app/bsky/graph/follow.ts +0 -40
- package/src/lexicon/types/app/bsky/graph/getActorStarterPacks.ts +0 -43
- package/src/lexicon/types/app/bsky/graph/getBlocks.ts +0 -42
- package/src/lexicon/types/app/bsky/graph/getFollowers.ts +0 -44
- package/src/lexicon/types/app/bsky/graph/getFollows.ts +0 -44
- package/src/lexicon/types/app/bsky/graph/getKnownFollowers.ts +0 -44
- package/src/lexicon/types/app/bsky/graph/getList.ts +0 -45
- package/src/lexicon/types/app/bsky/graph/getListBlocks.ts +0 -42
- package/src/lexicon/types/app/bsky/graph/getListMutes.ts +0 -42
- package/src/lexicon/types/app/bsky/graph/getLists.ts +0 -46
- package/src/lexicon/types/app/bsky/graph/getListsWithMembership.ts +0 -63
- package/src/lexicon/types/app/bsky/graph/getMutes.ts +0 -42
- package/src/lexicon/types/app/bsky/graph/getRelationships.ts +0 -49
- package/src/lexicon/types/app/bsky/graph/getStarterPack.ts +0 -41
- package/src/lexicon/types/app/bsky/graph/getStarterPacks.ts +0 -40
- package/src/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.ts +0 -65
- package/src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts +0 -46
- package/src/lexicon/types/app/bsky/graph/list.ts +0 -47
- package/src/lexicon/types/app/bsky/graph/listblock.ts +0 -39
- package/src/lexicon/types/app/bsky/graph/listitem.ts +0 -41
- package/src/lexicon/types/app/bsky/graph/muteActor.ts +0 -33
- package/src/lexicon/types/app/bsky/graph/muteActorList.ts +0 -33
- package/src/lexicon/types/app/bsky/graph/muteThread.ts +0 -33
- package/src/lexicon/types/app/bsky/graph/searchStarterPacks.ts +0 -44
- package/src/lexicon/types/app/bsky/graph/starterpack.ts +0 -60
- package/src/lexicon/types/app/bsky/graph/unmuteActor.ts +0 -33
- package/src/lexicon/types/app/bsky/graph/unmuteActorList.ts +0 -33
- package/src/lexicon/types/app/bsky/graph/unmuteThread.ts +0 -33
- package/src/lexicon/types/app/bsky/graph/verification.ts +0 -44
- package/src/lexicon/types/app/bsky/labeler/defs.ts +0 -100
- package/src/lexicon/types/app/bsky/labeler/getServices.ts +0 -45
- package/src/lexicon/types/app/bsky/labeler/service.ts +0 -48
- package/src/lexicon/types/app/bsky/notification/declaration.ts +0 -38
- package/src/lexicon/types/app/bsky/notification/defs.ts +0 -142
- package/src/lexicon/types/app/bsky/notification/getPreferences.ts +0 -38
- package/src/lexicon/types/app/bsky/notification/getUnreadCount.ts +0 -40
- package/src/lexicon/types/app/bsky/notification/listActivitySubscriptions.ts +0 -42
- package/src/lexicon/types/app/bsky/notification/listNotifications.ts +0 -87
- package/src/lexicon/types/app/bsky/notification/putActivitySubscription.ts +0 -46
- package/src/lexicon/types/app/bsky/notification/putPreferences.ts +0 -33
- package/src/lexicon/types/app/bsky/notification/putPreferencesV2.ts +0 -56
- package/src/lexicon/types/app/bsky/notification/registerPush.ts +0 -38
- package/src/lexicon/types/app/bsky/notification/unregisterPush.ts +0 -36
- package/src/lexicon/types/app/bsky/notification/updateSeen.ts +0 -33
- package/src/lexicon/types/app/bsky/richtext/facet.ts +0 -97
- package/src/lexicon/types/app/bsky/unspecced/defs.ts +0 -250
- package/src/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.ts +0 -34
- package/src/lexicon/types/app/bsky/unspecced/getConfig.ts +0 -54
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.ts +0 -40
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.ts +0 -41
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.ts +0 -47
- package/src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts +0 -43
- package/src/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.ts +0 -60
- package/src/lexicon/types/app/bsky/unspecced/getPostThreadV2.ts +0 -77
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.ts +0 -40
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts +0 -41
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts +0 -46
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts +0 -40
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts +0 -41
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsers.ts +0 -46
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscover.ts +0 -42
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.ts +0 -43
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExplore.ts +0 -44
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.ts +0 -45
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts +0 -44
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.ts +0 -45
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts +0 -47
- package/src/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.ts +0 -52
- package/src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts +0 -54
- package/src/lexicon/types/app/bsky/unspecced/getTrendingTopics.ts +0 -43
- package/src/lexicon/types/app/bsky/unspecced/getTrends.ts +0 -40
- package/src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts +0 -42
- package/src/lexicon/types/app/bsky/unspecced/initAgeAssurance.ts +0 -48
- package/src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts +0 -52
- package/src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts +0 -68
- package/src/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts +0 -50
- package/src/lexicon/types/app/bsky/video/defs.ts +0 -38
- package/src/lexicon/types/app/bsky/video/getJobStatus.ts +0 -40
- package/src/lexicon/types/app/bsky/video/getUploadLimits.ts +0 -41
- package/src/lexicon/types/app/bsky/video/uploadVideo.ts +0 -42
- package/src/lexicon/types/chat/bsky/actor/declaration.ts +0 -39
- package/src/lexicon/types/chat/bsky/actor/defs.ts +0 -96
- package/src/lexicon/types/chat/bsky/actor/deleteAccount.ts +0 -35
- package/src/lexicon/types/chat/bsky/actor/exportAccountData.ts +0 -33
- package/src/lexicon/types/chat/bsky/convo/acceptConvo.ts +0 -45
- package/src/lexicon/types/chat/bsky/convo/addReaction.ts +0 -52
- package/src/lexicon/types/chat/bsky/convo/defs.ts +0 -1058
- package/src/lexicon/types/chat/bsky/convo/deleteMessageForSelf.ts +0 -44
- package/src/lexicon/types/chat/bsky/convo/getConvo.ts +0 -41
- package/src/lexicon/types/chat/bsky/convo/getConvoAvailability.ts +0 -41
- package/src/lexicon/types/chat/bsky/convo/getConvoForMembers.ts +0 -46
- package/src/lexicon/types/chat/bsky/convo/getConvoMembers.ts +0 -44
- package/src/lexicon/types/chat/bsky/convo/getLog.ts +0 -70
- package/src/lexicon/types/chat/bsky/convo/getMessages.ts +0 -52
- package/src/lexicon/types/chat/bsky/convo/leaveConvo.ts +0 -45
- package/src/lexicon/types/chat/bsky/convo/listConvoRequests.ts +0 -47
- package/src/lexicon/types/chat/bsky/convo/listConvos.ts +0 -49
- package/src/lexicon/types/chat/bsky/convo/lockConvo.ts +0 -45
- package/src/lexicon/types/chat/bsky/convo/muteConvo.ts +0 -45
- package/src/lexicon/types/chat/bsky/convo/removeReaction.ts +0 -51
- package/src/lexicon/types/chat/bsky/convo/sendMessage.ts +0 -44
- package/src/lexicon/types/chat/bsky/convo/sendMessageBatch.ts +0 -61
- package/src/lexicon/types/chat/bsky/convo/unlockConvo.ts +0 -45
- package/src/lexicon/types/chat/bsky/convo/unmuteConvo.ts +0 -45
- package/src/lexicon/types/chat/bsky/convo/updateAllRead.ts +0 -44
- package/src/lexicon/types/chat/bsky/convo/updateRead.ts +0 -46
- package/src/lexicon/types/chat/bsky/group/addMembers.ts +0 -57
- package/src/lexicon/types/chat/bsky/group/approveJoinRequest.ts +0 -46
- package/src/lexicon/types/chat/bsky/group/createGroup.ts +0 -51
- package/src/lexicon/types/chat/bsky/group/createJoinLink.ts +0 -47
- package/src/lexicon/types/chat/bsky/group/defs.ts +0 -75
- package/src/lexicon/types/chat/bsky/group/disableJoinLink.ts +0 -45
- package/src/lexicon/types/chat/bsky/group/editGroup.ts +0 -46
- package/src/lexicon/types/chat/bsky/group/editJoinLink.ts +0 -47
- package/src/lexicon/types/chat/bsky/group/enableJoinLink.ts +0 -49
- package/src/lexicon/types/chat/bsky/group/getJoinLinkPreview.ts +0 -41
- package/src/lexicon/types/chat/bsky/group/listJoinRequests.ts +0 -44
- package/src/lexicon/types/chat/bsky/group/rejectJoinRequest.ts +0 -43
- package/src/lexicon/types/chat/bsky/group/removeMembers.ts +0 -46
- package/src/lexicon/types/chat/bsky/group/requestJoin.ts +0 -52
- package/src/lexicon/types/chat/bsky/moderation/getActorMetadata.ts +0 -59
- package/src/lexicon/types/chat/bsky/moderation/getMessageContext.ts +0 -52
- package/src/lexicon/types/chat/bsky/moderation/subscribeModEvents.ts +0 -386
- package/src/lexicon/types/chat/bsky/moderation/updateActorAccess.ts +0 -35
- package/src/lexicon/types/com/atproto/admin/defs.ts +0 -106
- package/src/lexicon/types/com/atproto/admin/deleteAccount.ts +0 -33
- package/src/lexicon/types/com/atproto/admin/disableAccountInvites.ts +0 -35
- package/src/lexicon/types/com/atproto/admin/disableInviteCodes.ts +0 -34
- package/src/lexicon/types/com/atproto/admin/enableAccountInvites.ts +0 -35
- package/src/lexicon/types/com/atproto/admin/getAccountInfo.ts +0 -36
- package/src/lexicon/types/com/atproto/admin/getAccountInfos.ts +0 -40
- package/src/lexicon/types/com/atproto/admin/getInviteCodes.ts +0 -43
- package/src/lexicon/types/com/atproto/admin/getSubjectStatus.ts +0 -49
- package/src/lexicon/types/com/atproto/admin/searchAccounts.ts +0 -43
- package/src/lexicon/types/com/atproto/admin/sendEmail.ts +0 -48
- package/src/lexicon/types/com/atproto/admin/updateAccountEmail.ts +0 -35
- package/src/lexicon/types/com/atproto/admin/updateAccountHandle.ts +0 -34
- package/src/lexicon/types/com/atproto/admin/updateAccountPassword.ts +0 -34
- package/src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts +0 -35
- package/src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts +0 -56
- package/src/lexicon/types/com/atproto/identity/defs.ts +0 -34
- package/src/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.ts +0 -41
- package/src/lexicon/types/com/atproto/identity/refreshIdentity.ts +0 -43
- package/src/lexicon/types/com/atproto/identity/requestPlcOperationSignature.ts +0 -26
- package/src/lexicon/types/com/atproto/identity/resolveDid.ts +0 -42
- package/src/lexicon/types/com/atproto/identity/resolveHandle.ts +0 -41
- package/src/lexicon/types/com/atproto/identity/resolveIdentity.ts +0 -38
- package/src/lexicon/types/com/atproto/identity/signPlcOperation.ts +0 -49
- package/src/lexicon/types/com/atproto/identity/submitPlcOperation.ts +0 -33
- package/src/lexicon/types/com/atproto/identity/updateHandle.ts +0 -34
- package/src/lexicon/types/com/atproto/label/defs.ts +0 -143
- package/src/lexicon/types/com/atproto/label/queryLabels.ts +0 -46
- package/src/lexicon/types/com/atproto/label/subscribeLabels.ts +0 -58
- package/src/lexicon/types/com/atproto/lexicon/resolveLexicon.ts +0 -46
- package/src/lexicon/types/com/atproto/lexicon/schema.ts +0 -38
- package/src/lexicon/types/com/atproto/moderation/createReport.ts +0 -80
- package/src/lexicon/types/com/atproto/moderation/defs.ts +0 -83
- package/src/lexicon/types/com/atproto/repo/applyWrites.ts +0 -158
- package/src/lexicon/types/com/atproto/repo/createRecord.ts +0 -59
- package/src/lexicon/types/com/atproto/repo/defs.ts +0 -31
- package/src/lexicon/types/com/atproto/repo/deleteRecord.ts +0 -54
- package/src/lexicon/types/com/atproto/repo/describeRepo.ts +0 -47
- package/src/lexicon/types/com/atproto/repo/getRecord.ts +0 -49
- package/src/lexicon/types/com/atproto/repo/importRepo.ts +0 -31
- package/src/lexicon/types/com/atproto/repo/listMissingBlobs.ts +0 -57
- package/src/lexicon/types/com/atproto/repo/listRecords.ts +0 -65
- package/src/lexicon/types/com/atproto/repo/putRecord.ts +0 -61
- package/src/lexicon/types/com/atproto/repo/strongRef.ts +0 -31
- package/src/lexicon/types/com/atproto/repo/uploadBlob.ts +0 -41
- package/src/lexicon/types/com/atproto/server/activateAccount.ts +0 -26
- package/src/lexicon/types/com/atproto/server/checkAccountStatus.ts +0 -45
- package/src/lexicon/types/com/atproto/server/confirmEmail.ts +0 -35
- package/src/lexicon/types/com/atproto/server/createAccount.ts +0 -71
- package/src/lexicon/types/com/atproto/server/createAppPassword.ts +0 -63
- package/src/lexicon/types/com/atproto/server/createInviteCode.ts +0 -44
- package/src/lexicon/types/com/atproto/server/createInviteCodes.ts +0 -61
- package/src/lexicon/types/com/atproto/server/createSession.ts +0 -59
- package/src/lexicon/types/com/atproto/server/deactivateAccount.ts +0 -34
- package/src/lexicon/types/com/atproto/server/defs.ts +0 -52
- package/src/lexicon/types/com/atproto/server/deleteAccount.ts +0 -36
- package/src/lexicon/types/com/atproto/server/deleteSession.ts +0 -27
- package/src/lexicon/types/com/atproto/server/describeServer.ts +0 -76
- package/src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts +0 -43
- package/src/lexicon/types/com/atproto/server/getServiceAuth.ts +0 -45
- package/src/lexicon/types/com/atproto/server/getSession.ts +0 -45
- package/src/lexicon/types/com/atproto/server/listAppPasswords.ts +0 -55
- package/src/lexicon/types/com/atproto/server/refreshSession.ts +0 -48
- package/src/lexicon/types/com/atproto/server/requestAccountDelete.ts +0 -26
- package/src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts +0 -26
- package/src/lexicon/types/com/atproto/server/requestEmailUpdate.ts +0 -37
- package/src/lexicon/types/com/atproto/server/requestPasswordReset.ts +0 -33
- package/src/lexicon/types/com/atproto/server/reserveSigningKey.ts +0 -45
- package/src/lexicon/types/com/atproto/server/resetPassword.ts +0 -35
- package/src/lexicon/types/com/atproto/server/revokeAppPassword.ts +0 -33
- package/src/lexicon/types/com/atproto/server/updateEmail.ts +0 -37
- package/src/lexicon/types/com/atproto/sync/defs.ts +0 -23
- package/src/lexicon/types/com/atproto/sync/getBlob.ts +0 -44
- package/src/lexicon/types/com/atproto/sync/getBlocks.ts +0 -43
- package/src/lexicon/types/com/atproto/sync/getCheckout.ts +0 -36
- package/src/lexicon/types/com/atproto/sync/getHead.ts +0 -41
- package/src/lexicon/types/com/atproto/sync/getHostStatus.ts +0 -47
- package/src/lexicon/types/com/atproto/sync/getLatestCommit.ts +0 -42
- package/src/lexicon/types/com/atproto/sync/getRecord.ts +0 -45
- package/src/lexicon/types/com/atproto/sync/getRepo.ts +0 -39
- package/src/lexicon/types/com/atproto/sync/getRepoStatus.ts +0 -53
- package/src/lexicon/types/com/atproto/sync/listBlobs.ts +0 -46
- package/src/lexicon/types/com/atproto/sync/listHosts.ts +0 -63
- package/src/lexicon/types/com/atproto/sync/listRepos.ts +0 -69
- package/src/lexicon/types/com/atproto/sync/listReposByCollection.ts +0 -58
- package/src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts +0 -34
- package/src/lexicon/types/com/atproto/sync/requestCrawl.ts +0 -35
- package/src/lexicon/types/com/atproto/sync/subscribeRepos.ts +0 -179
- package/src/lexicon/types/com/atproto/temp/addReservedHandle.ts +0 -41
- package/src/lexicon/types/com/atproto/temp/checkHandleAvailability.ts +0 -99
- package/src/lexicon/types/com/atproto/temp/checkSignupQueue.ts +0 -39
- package/src/lexicon/types/com/atproto/temp/dereferenceScope.ts +0 -42
- package/src/lexicon/types/com/atproto/temp/fetchLabels.ts +0 -41
- package/src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts +0 -33
- package/src/lexicon/types/com/atproto/temp/revokeAccountCredentials.ts +0 -33
- package/src/lexicon/types/tools/ozone/communication/createTemplate.ts +0 -52
- package/src/lexicon/types/tools/ozone/communication/defs.ts +0 -43
- package/src/lexicon/types/tools/ozone/communication/deleteTemplate.ts +0 -33
- package/src/lexicon/types/tools/ozone/communication/listTemplates.ts +0 -38
- package/src/lexicon/types/tools/ozone/communication/updateTemplate.ts +0 -55
- package/src/lexicon/types/tools/ozone/hosting/getAccountHistory.ts +0 -147
- package/src/lexicon/types/tools/ozone/moderation/cancelScheduledActions.ts +0 -79
- package/src/lexicon/types/tools/ozone/moderation/defs.ts +0 -1176
- package/src/lexicon/types/tools/ozone/moderation/emitEvent.ts +0 -104
- package/src/lexicon/types/tools/ozone/moderation/getAccountTimeline.ts +0 -105
- package/src/lexicon/types/tools/ozone/moderation/getEvent.ts +0 -36
- package/src/lexicon/types/tools/ozone/moderation/getRecord.ts +0 -38
- package/src/lexicon/types/tools/ozone/moderation/getRecords.ts +0 -44
- package/src/lexicon/types/tools/ozone/moderation/getRepo.ts +0 -37
- package/src/lexicon/types/tools/ozone/moderation/getReporterStats.ts +0 -40
- package/src/lexicon/types/tools/ozone/moderation/getRepos.ts +0 -44
- package/src/lexicon/types/tools/ozone/moderation/getSubjects.ts +0 -40
- package/src/lexicon/types/tools/ozone/moderation/listScheduledActions.ts +0 -57
- package/src/lexicon/types/tools/ozone/moderation/queryEvents.ts +0 -86
- package/src/lexicon/types/tools/ozone/moderation/queryStatuses.ts +0 -121
- package/src/lexicon/types/tools/ozone/moderation/scheduleAction.ts +0 -133
- package/src/lexicon/types/tools/ozone/moderation/searchRepos.ts +0 -45
- package/src/lexicon/types/tools/ozone/queue/assignModerator.ts +0 -46
- package/src/lexicon/types/tools/ozone/queue/createQueue.ts +0 -54
- package/src/lexicon/types/tools/ozone/queue/defs.ts +0 -99
- package/src/lexicon/types/tools/ozone/queue/deleteQueue.ts +0 -48
- package/src/lexicon/types/tools/ozone/queue/getAssignments.ts +0 -48
- package/src/lexicon/types/tools/ozone/queue/listQueues.ts +0 -50
- package/src/lexicon/types/tools/ozone/queue/routeReports.ts +0 -50
- package/src/lexicon/types/tools/ozone/queue/unassignModerator.ts +0 -37
- package/src/lexicon/types/tools/ozone/queue/updateQueue.ts +0 -51
- package/src/lexicon/types/tools/ozone/report/assignModerator.ts +0 -50
- package/src/lexicon/types/tools/ozone/report/createActivity.ts +0 -60
- package/src/lexicon/types/tools/ozone/report/defs.ts +0 -466
- package/src/lexicon/types/tools/ozone/report/getAssignments.ts +0 -48
- package/src/lexicon/types/tools/ozone/report/getHistoricalStats.ts +0 -54
- package/src/lexicon/types/tools/ozone/report/getLatestReport.ts +0 -39
- package/src/lexicon/types/tools/ozone/report/getLiveStats.ts +0 -45
- package/src/lexicon/types/tools/ozone/report/getReport.ts +0 -38
- package/src/lexicon/types/tools/ozone/report/listActivities.ts +0 -44
- package/src/lexicon/types/tools/ozone/report/queryReports.ts +0 -72
- package/src/lexicon/types/tools/ozone/report/reassignQueue.ts +0 -55
- package/src/lexicon/types/tools/ozone/report/refreshStats.ts +0 -46
- package/src/lexicon/types/tools/ozone/report/unassignModerator.ts +0 -44
- package/src/lexicon/types/tools/ozone/safelink/addRule.ts +0 -51
- package/src/lexicon/types/tools/ozone/safelink/defs.ts +0 -76
- package/src/lexicon/types/tools/ozone/safelink/queryEvents.ts +0 -55
- package/src/lexicon/types/tools/ozone/safelink/queryRules.ts +0 -61
- package/src/lexicon/types/tools/ozone/safelink/removeRule.ts +0 -49
- package/src/lexicon/types/tools/ozone/safelink/updateRule.ts +0 -51
- package/src/lexicon/types/tools/ozone/server/getConfig.ts +0 -78
- package/src/lexicon/types/tools/ozone/set/addValues.ts +0 -36
- package/src/lexicon/types/tools/ozone/set/defs.ts +0 -50
- package/src/lexicon/types/tools/ozone/set/deleteSet.ts +0 -43
- package/src/lexicon/types/tools/ozone/set/deleteValues.ts +0 -37
- package/src/lexicon/types/tools/ozone/set/getValues.ts +0 -45
- package/src/lexicon/types/tools/ozone/set/querySets.ts +0 -46
- package/src/lexicon/types/tools/ozone/set/upsertSet.ts +0 -38
- package/src/lexicon/types/tools/ozone/setting/defs.ts +0 -44
- package/src/lexicon/types/tools/ozone/setting/listOptions.ts +0 -47
- package/src/lexicon/types/tools/ozone/setting/removeOptions.ts +0 -42
- package/src/lexicon/types/tools/ozone/setting/upsertOption.ts +0 -53
- package/src/lexicon/types/tools/ozone/signature/defs.ts +0 -31
- package/src/lexicon/types/tools/ozone/signature/findCorrelation.ts +0 -40
- package/src/lexicon/types/tools/ozone/signature/findRelatedAccounts.ts +0 -60
- package/src/lexicon/types/tools/ozone/signature/searchAccounts.ts +0 -43
- package/src/lexicon/types/tools/ozone/team/addMember.ts +0 -49
- package/src/lexicon/types/tools/ozone/team/defs.ts +0 -51
- package/src/lexicon/types/tools/ozone/team/deleteMember.ts +0 -34
- package/src/lexicon/types/tools/ozone/team/listMembers.ts +0 -45
- package/src/lexicon/types/tools/ozone/team/updateMember.ts +0 -50
- package/src/lexicon/types/tools/ozone/verification/defs.ts +0 -59
- package/src/lexicon/types/tools/ozone/verification/grantVerifications.ts +0 -87
- package/src/lexicon/types/tools/ozone/verification/listVerifications.ts +0 -56
- package/src/lexicon/types/tools/ozone/verification/revokeVerifications.ts +0 -68
- package/src/lexicon/util.ts +0 -82
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Kysely, sql } from 'kysely'
|
|
2
|
+
|
|
3
|
+
export async function up(db: Kysely<unknown>): Promise<void> {
|
|
4
|
+
// moderation_event
|
|
5
|
+
await db.schema
|
|
6
|
+
.alterTable('moderation_event')
|
|
7
|
+
.addColumn('subjectConvoId', 'varchar')
|
|
8
|
+
.execute()
|
|
9
|
+
/// broad index to support conversation-based queries
|
|
10
|
+
/// Users is a convo is capped at 50 so volume of matching events should be low
|
|
11
|
+
/// subsequent ordering and filtering will be efficient
|
|
12
|
+
await sql`
|
|
13
|
+
CREATE INDEX "moderation_event_convo_idx"
|
|
14
|
+
ON moderation_event("subjectConvoId")
|
|
15
|
+
WHERE "subjectConvoId" IS NOT NULL
|
|
16
|
+
`.execute(db)
|
|
17
|
+
|
|
18
|
+
// moderation_subject_status
|
|
19
|
+
await db.schema
|
|
20
|
+
.alterTable('moderation_subject_status')
|
|
21
|
+
.addColumn('convoId', 'varchar', (col) => col.notNull().defaultTo(''))
|
|
22
|
+
.execute()
|
|
23
|
+
/// Update unique constraint: [did, recordPath] -> [did, recordPath, convoId]
|
|
24
|
+
/// Create new unique index, drop old constraint, rename new index
|
|
25
|
+
/// Avoids gap without any constraints
|
|
26
|
+
await sql`
|
|
27
|
+
CREATE UNIQUE INDEX "moderation_status_unique_idx_new"
|
|
28
|
+
ON moderation_subject_status(did, "recordPath", "convoId")
|
|
29
|
+
`.execute(db)
|
|
30
|
+
await db.schema
|
|
31
|
+
.alterTable('moderation_subject_status')
|
|
32
|
+
.dropConstraint('moderation_status_unique_idx')
|
|
33
|
+
.execute()
|
|
34
|
+
await db.schema.dropIndex('moderation_status_unique_idx').ifExists().execute()
|
|
35
|
+
await sql`
|
|
36
|
+
ALTER INDEX "moderation_status_unique_idx_new"
|
|
37
|
+
RENAME TO "moderation_status_unique_idx"
|
|
38
|
+
`.execute(db)
|
|
39
|
+
await sql`
|
|
40
|
+
ALTER TABLE moderation_subject_status
|
|
41
|
+
ADD CONSTRAINT "moderation_status_unique_idx"
|
|
42
|
+
UNIQUE USING INDEX "moderation_status_unique_idx"
|
|
43
|
+
`.execute(db)
|
|
44
|
+
|
|
45
|
+
// expiring_tag
|
|
46
|
+
await db.schema
|
|
47
|
+
.alterTable('expiring_tag')
|
|
48
|
+
.addColumn('convoId', 'varchar', (col) => col.notNull().defaultTo(''))
|
|
49
|
+
.execute()
|
|
50
|
+
await db.schema
|
|
51
|
+
.createIndex('idx_expiring_tag_did_record_path_convo_id')
|
|
52
|
+
.on('expiring_tag')
|
|
53
|
+
.columns(['did', 'recordPath', 'convoId'])
|
|
54
|
+
.execute()
|
|
55
|
+
|
|
56
|
+
// report table
|
|
57
|
+
await db.schema
|
|
58
|
+
.alterTable('report')
|
|
59
|
+
.addColumn('subjectConvoId', 'varchar')
|
|
60
|
+
.execute()
|
|
61
|
+
await db.schema.dropIndex('idx_report_unassigned_id').execute()
|
|
62
|
+
await sql`CREATE INDEX idx_report_unassigned_id ON report
|
|
63
|
+
(id)
|
|
64
|
+
INCLUDE (status, "reportType", "recordPath", "subjectMessageId", "subjectConvoId")
|
|
65
|
+
WHERE ("queueId" IS NULL AND status != 'closed')`.execute(db)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export async function down(db: Kysely<unknown>): Promise<void> {
|
|
69
|
+
// report
|
|
70
|
+
await db.schema.dropIndex('idx_report_unassigned_id').execute()
|
|
71
|
+
await sql`CREATE INDEX idx_report_unassigned_id ON report
|
|
72
|
+
(id)
|
|
73
|
+
INCLUDE (status, "reportType", "recordPath", "subjectMessageId")
|
|
74
|
+
WHERE ("queueId" IS NULL AND status != 'closed')`.execute(db)
|
|
75
|
+
await db.schema.alterTable('report').dropColumn('subjectConvoId').execute()
|
|
76
|
+
|
|
77
|
+
// expiring_tag
|
|
78
|
+
await db.schema
|
|
79
|
+
.dropIndex('idx_expiring_tag_did_record_path_convo_id')
|
|
80
|
+
.execute()
|
|
81
|
+
await db.schema.alterTable('expiring_tag').dropColumn('convoId').execute()
|
|
82
|
+
|
|
83
|
+
// moderation_subject_status
|
|
84
|
+
/// Reverse the unique constraint change: [did, recordPath, convoId] -> [did, recordPath]
|
|
85
|
+
await sql`
|
|
86
|
+
CREATE UNIQUE INDEX "moderation_status_unique_idx_old"
|
|
87
|
+
ON moderation_subject_status(did, "recordPath")
|
|
88
|
+
`.execute(db)
|
|
89
|
+
await db.schema
|
|
90
|
+
.alterTable('moderation_subject_status')
|
|
91
|
+
.dropConstraint('moderation_status_unique_idx')
|
|
92
|
+
.execute()
|
|
93
|
+
await db.schema.dropIndex('moderation_status_unique_idx').ifExists().execute()
|
|
94
|
+
await sql`
|
|
95
|
+
ALTER INDEX "moderation_status_unique_idx_old"
|
|
96
|
+
RENAME TO "moderation_status_unique_idx"
|
|
97
|
+
`.execute(db)
|
|
98
|
+
await sql`
|
|
99
|
+
ALTER TABLE moderation_subject_status
|
|
100
|
+
ADD CONSTRAINT "moderation_status_unique_idx"
|
|
101
|
+
UNIQUE USING INDEX "moderation_status_unique_idx"
|
|
102
|
+
`.execute(db)
|
|
103
|
+
await db.schema
|
|
104
|
+
.alterTable('moderation_subject_status')
|
|
105
|
+
.dropColumn('convoId')
|
|
106
|
+
.execute()
|
|
107
|
+
|
|
108
|
+
// moderation_event
|
|
109
|
+
await db.schema.dropIndex('moderation_event_convo_idx').execute()
|
|
110
|
+
await db.schema
|
|
111
|
+
.alterTable('moderation_event')
|
|
112
|
+
.dropColumn('subjectConvoId')
|
|
113
|
+
.execute()
|
|
114
|
+
}
|
|
@@ -40,3 +40,4 @@ export * as _20260225T000000000Z from './20260225T000000000Z-add-report-queue-ta
|
|
|
40
40
|
export * as _20260313T000000000Z from './20260313T000000000Z-add-report-activity-table.js'
|
|
41
41
|
export * as _20260318T152058935Z from './20260318T152058935Z-add-report-stat.js'
|
|
42
42
|
export * as _20260428T000000000Z from './20260428T000000000Z-add-expiring-tag-table.js'
|
|
43
|
+
export * as _20260513T202941104Z from './20260513T202941104Z-add-subject-convo-id.js'
|
|
@@ -31,10 +31,12 @@ export interface ModerationEvent {
|
|
|
31
31
|
| 'com.atproto.admin.defs#repoRef'
|
|
32
32
|
| 'com.atproto.repo.strongRef'
|
|
33
33
|
| 'chat.bsky.convo.defs#messageRef'
|
|
34
|
+
| 'chat.bsky.convo.defs#convoRef'
|
|
34
35
|
subjectDid: string
|
|
35
36
|
subjectUri: string | null
|
|
36
37
|
subjectCid: string | null
|
|
37
38
|
subjectBlobCids: string[] | null
|
|
39
|
+
subjectConvoId: string | null
|
|
38
40
|
subjectMessageId: string | null
|
|
39
41
|
createLabelVals: string | null
|
|
40
42
|
negateLabelVals: string | null
|
|
@@ -10,8 +10,12 @@ export const subjectStatusTableName = 'moderation_subject_status'
|
|
|
10
10
|
|
|
11
11
|
export interface ModerationSubjectStatus {
|
|
12
12
|
id: Generated<number>
|
|
13
|
+
|
|
14
|
+
// unique columns
|
|
13
15
|
did: string
|
|
14
16
|
recordPath: string
|
|
17
|
+
convoId: string
|
|
18
|
+
|
|
15
19
|
recordCid: string | null
|
|
16
20
|
blobCids: string[] | null
|
|
17
21
|
reviewState:
|
package/src/db/schema/report.ts
CHANGED
|
@@ -13,8 +13,9 @@ export interface Report {
|
|
|
13
13
|
status: string // 'open', 'closed', 'escalated', 'queued', 'assigned'
|
|
14
14
|
reportType: string // Denormalized from moderation_event.meta.reportType
|
|
15
15
|
did: string // Denormalized from moderation_event.subjectDid
|
|
16
|
-
recordPath: string // '' = account/message, 'collection/rkey' = record
|
|
16
|
+
recordPath: string // '' = account/message/conversation, 'collection/rkey' = record
|
|
17
17
|
subjectMessageId: string | null // Denormalized from moderation_event.subjectMessageId
|
|
18
|
+
subjectConvoId: string | null // Denormalized from moderation_event.subjectConvoId
|
|
18
19
|
createdAt: string
|
|
19
20
|
updatedAt: string
|
|
20
21
|
assignedTo: string | null // DID of permanently assigned moderator, null if unassigned
|
|
@@ -7,6 +7,7 @@ export type ExpiringTagRow = Selectable<ExpiringTag>
|
|
|
7
7
|
export type ExpiringTagGroup = {
|
|
8
8
|
did: string
|
|
9
9
|
recordPath: string
|
|
10
|
+
convoId: string
|
|
10
11
|
createdBy: string
|
|
11
12
|
tags: string[]
|
|
12
13
|
ids: number[]
|
|
@@ -18,6 +19,7 @@ export async function insertExpiringTags(
|
|
|
18
19
|
eventId: number
|
|
19
20
|
did: string
|
|
20
21
|
recordPath: string
|
|
22
|
+
convoId: string
|
|
21
23
|
tags: string[]
|
|
22
24
|
expiresAt: string
|
|
23
25
|
createdBy: string
|
|
@@ -30,6 +32,7 @@ export async function insertExpiringTags(
|
|
|
30
32
|
eventId: params.eventId,
|
|
31
33
|
did: params.did,
|
|
32
34
|
recordPath: params.recordPath,
|
|
35
|
+
convoId: params.convoId,
|
|
33
36
|
tag,
|
|
34
37
|
expiresAt: params.expiresAt,
|
|
35
38
|
createdBy: params.createdBy,
|
|
@@ -43,6 +46,7 @@ export async function removeExpiringTags(
|
|
|
43
46
|
params: {
|
|
44
47
|
did: string
|
|
45
48
|
recordPath: string
|
|
49
|
+
convoId: string
|
|
46
50
|
tags: string[]
|
|
47
51
|
},
|
|
48
52
|
): Promise<void> {
|
|
@@ -50,6 +54,7 @@ export async function removeExpiringTags(
|
|
|
50
54
|
.deleteFrom('expiring_tag')
|
|
51
55
|
.where('did', '=', params.did)
|
|
52
56
|
.where('recordPath', '=', params.recordPath)
|
|
57
|
+
.where('convoId', '=', params.convoId)
|
|
53
58
|
.where('tag', 'in', params.tags)
|
|
54
59
|
.execute()
|
|
55
60
|
}
|
|
@@ -73,15 +78,16 @@ export async function getExpiredTags(
|
|
|
73
78
|
|
|
74
79
|
if (!rows.length) return []
|
|
75
80
|
|
|
76
|
-
// Group by (did, recordPath, createdBy) so each reversal event has the correct author
|
|
81
|
+
// Group by (did, recordPath, convoId, createdBy) so each reversal event has the correct author
|
|
77
82
|
const grouped = new Map<string, ExpiringTagGroup>()
|
|
78
83
|
for (const row of rows) {
|
|
79
|
-
const key = `${row.did}|${row.recordPath}|${row.createdBy}`
|
|
84
|
+
const key = `${row.did}|${row.recordPath}|${row.convoId}|${row.createdBy}`
|
|
80
85
|
let group = grouped.get(key)
|
|
81
86
|
if (!group) {
|
|
82
87
|
group = {
|
|
83
88
|
did: row.did,
|
|
84
89
|
recordPath: row.recordPath,
|
|
90
|
+
convoId: row.convoId,
|
|
85
91
|
createdBy: row.createdBy,
|
|
86
92
|
tags: [],
|
|
87
93
|
ids: [],
|
package/src/mod-service/index.ts
CHANGED
|
@@ -235,21 +235,34 @@ export class ModerationService {
|
|
|
235
235
|
|
|
236
236
|
if (subject) {
|
|
237
237
|
const isSubjectAtUri = subject.startsWith('at://')
|
|
238
|
+
const subjectAtUri = isSubjectAtUri ? new AtUri(subject) : null
|
|
238
239
|
const subjectDid = isSubjectAtUri ? new AtUri(subject).hostname : subject
|
|
239
240
|
const subjectUri = isSubjectAtUri ? subject : null
|
|
240
241
|
// regardless of subjectUri check, we always want to query against subjectDid column since that's indexed
|
|
241
242
|
builder = builder.where('subjectDid', '=', subjectDid)
|
|
242
243
|
|
|
243
|
-
//
|
|
244
|
+
// subjectUri or subjectConvoId
|
|
244
245
|
if (!includeAllUserRecords) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
246
|
+
if (subjectAtUri?.collection === 'chat.bsky.convo') {
|
|
247
|
+
builder = builder.where('subjectConvoId', '=', subjectAtUri.rkey)
|
|
248
|
+
} else if (subjectUri) {
|
|
249
|
+
builder = builder.where('subjectUri', '=', subjectUri)
|
|
250
|
+
} else {
|
|
251
|
+
// Account-level: subjectUri IS NULL also matches conversation events,
|
|
252
|
+
// so explicitly exclude them.
|
|
253
|
+
builder = builder
|
|
254
|
+
.where('subjectUri', 'is', null)
|
|
255
|
+
.where('subjectConvoId', 'is', null)
|
|
256
|
+
}
|
|
248
257
|
}
|
|
249
258
|
} else if (subjectType === 'account') {
|
|
250
|
-
builder = builder
|
|
259
|
+
builder = builder
|
|
260
|
+
.where('subjectUri', 'is', null)
|
|
261
|
+
.where('subjectConvoId', 'is', null)
|
|
251
262
|
} else if (subjectType === 'record') {
|
|
252
263
|
builder = builder.where('subjectUri', 'is not', null)
|
|
264
|
+
} else if (subjectType === 'conversation') {
|
|
265
|
+
builder = builder.where('subjectConvoId', 'is not', null)
|
|
253
266
|
}
|
|
254
267
|
|
|
255
268
|
// If subjectType is set to 'account' let that take priority and ignore collections filter
|
|
@@ -433,7 +446,9 @@ export class ModerationService {
|
|
|
433
446
|
const subjectsToBeResolved = await this.db.db
|
|
434
447
|
.selectFrom('moderation_subject_status')
|
|
435
448
|
.where('did', '=', did)
|
|
436
|
-
.where(
|
|
449
|
+
.where((qb) =>
|
|
450
|
+
qb.where('recordPath', '!=', '').orWhere('convoId', '!=', ''),
|
|
451
|
+
)
|
|
437
452
|
.where('reviewState', 'in', [REVIEWESCALATED, REVIEWOPEN])
|
|
438
453
|
.selectAll()
|
|
439
454
|
.execute()
|
|
@@ -686,6 +701,7 @@ export class ModerationService {
|
|
|
686
701
|
subjectCid: subjectInfo.subjectCid,
|
|
687
702
|
subjectBlobCids: jsonb(subjectInfo.subjectBlobCids),
|
|
688
703
|
subjectMessageId: subjectInfo.subjectMessageId,
|
|
704
|
+
subjectConvoId: subjectInfo.subjectConvoId,
|
|
689
705
|
modTool: modTool ? jsonb(modTool) : null,
|
|
690
706
|
externalId: externalId ?? null,
|
|
691
707
|
severityLevel,
|
|
@@ -712,6 +728,7 @@ export class ModerationService {
|
|
|
712
728
|
eventId: modEvent.id,
|
|
713
729
|
did: subjectInfo.subjectDid,
|
|
714
730
|
recordPath: subjectInfo.subjectUri ?? '',
|
|
731
|
+
convoId: subjectInfo.subjectConvoId ?? '',
|
|
715
732
|
tags: event.add,
|
|
716
733
|
expiresAt,
|
|
717
734
|
createdBy,
|
|
@@ -721,6 +738,7 @@ export class ModerationService {
|
|
|
721
738
|
await removeExpiringTags(this.db, {
|
|
722
739
|
did: subjectInfo.subjectDid,
|
|
723
740
|
recordPath: subjectInfo.subjectUri ?? '',
|
|
741
|
+
convoId: subjectInfo.subjectConvoId ?? '',
|
|
724
742
|
tags: event.remove,
|
|
725
743
|
})
|
|
726
744
|
}
|
|
@@ -815,6 +833,7 @@ export class ModerationService {
|
|
|
815
833
|
.selectFrom('moderation_subject_status')
|
|
816
834
|
.where('did', '=', did)
|
|
817
835
|
.where('recordPath', '=', '')
|
|
836
|
+
.where('convoId', '=', '')
|
|
818
837
|
.where('suspendUntil', '>', new Date().toISOString())
|
|
819
838
|
.select('did')
|
|
820
839
|
.limit(1)
|
|
@@ -1135,20 +1154,34 @@ export class ModerationService {
|
|
|
1135
1154
|
)
|
|
1136
1155
|
|
|
1137
1156
|
if (!includeAllUserRecords) {
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1157
|
+
if (subjectInfo.convoId) {
|
|
1158
|
+
builder = builder.where(
|
|
1159
|
+
'moderation_subject_status.convoId',
|
|
1160
|
+
'=',
|
|
1161
|
+
subjectInfo.convoId,
|
|
1162
|
+
)
|
|
1163
|
+
} else if (subjectInfo.recordPath) {
|
|
1164
|
+
builder = builder.where(
|
|
1165
|
+
'moderation_subject_status.recordPath',
|
|
1166
|
+
'=',
|
|
1167
|
+
subjectInfo.recordPath,
|
|
1168
|
+
)
|
|
1169
|
+
} else {
|
|
1170
|
+
// Account-level: recordPath = '' also matches conversation statuses,
|
|
1171
|
+
// so explicitly exclude them.
|
|
1172
|
+
builder = builder
|
|
1173
|
+
.where('moderation_subject_status.recordPath', '=', '')
|
|
1174
|
+
.where('moderation_subject_status.convoId', '=', '')
|
|
1175
|
+
}
|
|
1147
1176
|
}
|
|
1148
1177
|
} else if (subjectType === 'account') {
|
|
1149
|
-
builder = builder
|
|
1178
|
+
builder = builder
|
|
1179
|
+
.where('moderation_subject_status.recordPath', '=', '')
|
|
1180
|
+
.where('moderation_subject_status.convoId', '=', '')
|
|
1150
1181
|
} else if (subjectType === 'record') {
|
|
1151
1182
|
builder = builder.where('moderation_subject_status.recordPath', '!=', '')
|
|
1183
|
+
} else if (subjectType === 'conversation') {
|
|
1184
|
+
builder = builder.where('moderation_subject_status.convoId', '!=', '')
|
|
1152
1185
|
}
|
|
1153
1186
|
|
|
1154
1187
|
// Only fetch items that belongs to the specified queue when specified
|
|
@@ -1438,6 +1471,7 @@ export class ModerationService {
|
|
|
1438
1471
|
.selectFrom('moderation_subject_status')
|
|
1439
1472
|
.where('did', '=', subject.did)
|
|
1440
1473
|
.where('recordPath', '=', subject.recordPath ?? '')
|
|
1474
|
+
.where('convoId', '=', subject.convoId ?? '')
|
|
1441
1475
|
.selectAll()
|
|
1442
1476
|
.executeTakeFirst()
|
|
1443
1477
|
return result ?? null
|
|
@@ -1450,6 +1484,7 @@ export class ModerationService {
|
|
|
1450
1484
|
.selectFrom('moderation_subject_status')
|
|
1451
1485
|
.where('did', '=', did)
|
|
1452
1486
|
.where('recordPath', '=', '')
|
|
1487
|
+
.where('convoId', '=', '')
|
|
1453
1488
|
.where('muteReportingUntil', '>', new Date().toISOString())
|
|
1454
1489
|
.select(sql`true`.as('status'))
|
|
1455
1490
|
.executeTakeFirst()
|
|
@@ -1463,6 +1498,7 @@ export class ModerationService {
|
|
|
1463
1498
|
.selectFrom('moderation_subject_status')
|
|
1464
1499
|
.where('did', '=', did)
|
|
1465
1500
|
.where('recordPath', '=', '')
|
|
1501
|
+
.where('convoId', '=', '')
|
|
1466
1502
|
.where('muteUntil', '>', new Date().toISOString())
|
|
1467
1503
|
.select(sql`true`.as('status'))
|
|
1468
1504
|
.executeTakeFirst()
|
|
@@ -283,6 +283,7 @@ export const adjustModerationSubjectStatus = async (
|
|
|
283
283
|
subjectDid,
|
|
284
284
|
subjectUri,
|
|
285
285
|
subjectCid,
|
|
286
|
+
subjectConvoId,
|
|
286
287
|
createdBy,
|
|
287
288
|
meta,
|
|
288
289
|
addedTags,
|
|
@@ -292,7 +293,10 @@ export const adjustModerationSubjectStatus = async (
|
|
|
292
293
|
} = moderationEvent
|
|
293
294
|
|
|
294
295
|
// If subjectUri exists, it's not a repoRef so pass along the uri to get identifier back
|
|
295
|
-
const identifier = getStatusIdentifierFromSubject(
|
|
296
|
+
const identifier = getStatusIdentifierFromSubject(
|
|
297
|
+
subjectUri || subjectDid,
|
|
298
|
+
subjectConvoId,
|
|
299
|
+
)
|
|
296
300
|
|
|
297
301
|
db.assertTransaction()
|
|
298
302
|
|
|
@@ -301,6 +305,7 @@ export const adjustModerationSubjectStatus = async (
|
|
|
301
305
|
.selectFrom('moderation_subject_status')
|
|
302
306
|
.where('did', '=', identifier.did)
|
|
303
307
|
.where('recordPath', '=', identifier.recordPath)
|
|
308
|
+
.where('convoId', '=', identifier.convoId)
|
|
304
309
|
// Make sure we respect other updates that may be happening at the same time
|
|
305
310
|
.forUpdate()
|
|
306
311
|
.selectAll()
|
|
@@ -504,14 +509,20 @@ export const adjustModerationSubjectStatus = async (
|
|
|
504
509
|
return status || null
|
|
505
510
|
}
|
|
506
511
|
|
|
512
|
+
/**
|
|
513
|
+
* Get moderation_subject_status identifier (did, recordPath, convoId).
|
|
514
|
+
* @note Supports addressing conversations explicitly (via convoId) and implicitly (via properly formed at-uri)
|
|
515
|
+
*/
|
|
507
516
|
export const getStatusIdentifierFromSubject = (
|
|
508
517
|
subject: string | AtUri,
|
|
509
|
-
|
|
518
|
+
convoId?: string | null,
|
|
519
|
+
): { did: string; recordPath: string; convoId: string } => {
|
|
510
520
|
const isSubjectString = typeof subject === 'string'
|
|
511
521
|
if (isSubjectString && subject.startsWith('did:')) {
|
|
512
522
|
return {
|
|
513
523
|
did: subject,
|
|
514
524
|
recordPath: '',
|
|
525
|
+
convoId: convoId || '',
|
|
515
526
|
}
|
|
516
527
|
}
|
|
517
528
|
|
|
@@ -520,8 +531,19 @@ export const getStatusIdentifierFromSubject = (
|
|
|
520
531
|
}
|
|
521
532
|
|
|
522
533
|
const uri = isSubjectString ? new AtUri(subject) : subject
|
|
534
|
+
|
|
535
|
+
// Handle conversation URIs
|
|
536
|
+
if (uri.collection === 'chat.bsky.convo') {
|
|
537
|
+
return {
|
|
538
|
+
did: uri.host,
|
|
539
|
+
recordPath: '',
|
|
540
|
+
convoId: uri.rkey,
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
|
|
523
544
|
return {
|
|
524
545
|
did: uri.host,
|
|
525
546
|
recordPath: `${uri.collection}/${uri.rkey}`,
|
|
547
|
+
convoId: '',
|
|
526
548
|
}
|
|
527
549
|
}
|
|
@@ -16,6 +16,9 @@ const isStrongRef = asPredicate(ComAtprotoRepoStrongRef.validateMain)
|
|
|
16
16
|
type MessageRef = ChatBskyConvoDefs.MessageRef
|
|
17
17
|
const isValidMessageRef = asPredicate(ChatBskyConvoDefs.validateMessageRef)
|
|
18
18
|
|
|
19
|
+
type ConvoRef = ChatBskyConvoDefs.ConvoRef
|
|
20
|
+
const isValidConvoRef = asPredicate(ChatBskyConvoDefs.validateConvoRef)
|
|
21
|
+
|
|
19
22
|
const isMessageRefWithoutConvoId = (
|
|
20
23
|
subject: unknown,
|
|
21
24
|
): subject is $Typed<Omit<MessageRef, 'convoId'> & { convoId?: string }> =>
|
|
@@ -41,6 +44,11 @@ export const subjectFromInput = (
|
|
|
41
44
|
if (isValidMessageRef(subject)) {
|
|
42
45
|
return new MessageSubject(subject.did, subject.convoId, subject.messageId)
|
|
43
46
|
}
|
|
47
|
+
// @NOTE #convoRef is a new type for reporting entire conversations.
|
|
48
|
+
// Similar to messageRef, we take advantage of the open union to support this.
|
|
49
|
+
if (isValidConvoRef(subject)) {
|
|
50
|
+
return new ConvoSubject(subject.did, subject.convoId)
|
|
51
|
+
}
|
|
44
52
|
// @TODO we should start to require subject.convoId is a string in order to properly validate
|
|
45
53
|
// the #messageRef. temporarily allowing it to be optional as a stopgap for rollout.
|
|
46
54
|
// The next "if" can be removed once convoId is consistently provided.
|
|
@@ -73,6 +81,11 @@ export const subjectFromEventRow = (row: ModerationEventRow): ModSubject => {
|
|
|
73
81
|
const convoId =
|
|
74
82
|
typeof row.meta?.['convoId'] === 'string' ? row.meta['convoId'] : ''
|
|
75
83
|
return new MessageSubject(row.subjectDid, convoId, row.subjectMessageId)
|
|
84
|
+
} else if (
|
|
85
|
+
row.subjectType === 'chat.bsky.convo.defs#convoRef' &&
|
|
86
|
+
row.subjectConvoId
|
|
87
|
+
) {
|
|
88
|
+
return new ConvoSubject(row.subjectDid, row.subjectConvoId)
|
|
76
89
|
} else {
|
|
77
90
|
return new RepoSubject(row.subjectDid)
|
|
78
91
|
}
|
|
@@ -86,6 +99,9 @@ export const subjectFromStatusRow = (
|
|
|
86
99
|
// which is what the last 2 params of .make() arguments are
|
|
87
100
|
const uri = AtUri.make(row.did, ...row.recordPath.split('/')).toString()
|
|
88
101
|
return new RecordSubject(uri.toString(), row.recordCid, row.blobCids ?? [])
|
|
102
|
+
} else if (row.convoId) {
|
|
103
|
+
// Conversation subject - restore from subject status row
|
|
104
|
+
return new ConvoSubject(row.did, row.convoId)
|
|
89
105
|
} else {
|
|
90
106
|
return new RepoSubject(row.did)
|
|
91
107
|
}
|
|
@@ -96,28 +112,37 @@ type SubjectInfo = {
|
|
|
96
112
|
| 'com.atproto.admin.defs#repoRef'
|
|
97
113
|
| 'com.atproto.repo.strongRef'
|
|
98
114
|
| 'chat.bsky.convo.defs#messageRef'
|
|
115
|
+
| 'chat.bsky.convo.defs#convoRef'
|
|
99
116
|
subjectDid: string
|
|
100
117
|
subjectUri: string | null
|
|
101
118
|
subjectCid: string | null
|
|
102
119
|
subjectBlobCids: string[] | null
|
|
103
120
|
subjectMessageId: string | null
|
|
121
|
+
subjectConvoId: string | null
|
|
104
122
|
meta: Record<string, string | undefined> | null
|
|
105
123
|
}
|
|
106
124
|
|
|
107
125
|
export interface ModSubject {
|
|
108
126
|
did: string
|
|
109
127
|
recordPath: string | undefined
|
|
128
|
+
convoId: string | undefined
|
|
110
129
|
blobCids?: string[]
|
|
111
130
|
isRepo(): this is RepoSubject
|
|
112
131
|
isRecord(): this is RecordSubject
|
|
113
132
|
isMessage(): this is MessageSubject
|
|
133
|
+
isConvo(): this is ConvoSubject
|
|
114
134
|
info(): SubjectInfo
|
|
115
|
-
lex():
|
|
135
|
+
lex():
|
|
136
|
+
| $Typed<RepoRef>
|
|
137
|
+
| $Typed<StrongRef>
|
|
138
|
+
| $Typed<MessageRef>
|
|
139
|
+
| $Typed<ConvoRef>
|
|
116
140
|
}
|
|
117
141
|
|
|
118
142
|
export class RepoSubject implements ModSubject {
|
|
119
143
|
blobCids = undefined
|
|
120
144
|
recordPath = undefined
|
|
145
|
+
convoId = undefined
|
|
121
146
|
constructor(public did: string) {}
|
|
122
147
|
isRepo(): this is RepoSubject {
|
|
123
148
|
return true
|
|
@@ -128,6 +153,9 @@ export class RepoSubject implements ModSubject {
|
|
|
128
153
|
isMessage(): this is MessageSubject {
|
|
129
154
|
return false
|
|
130
155
|
}
|
|
156
|
+
isConvo(): this is ConvoSubject {
|
|
157
|
+
return false
|
|
158
|
+
}
|
|
131
159
|
info() {
|
|
132
160
|
return {
|
|
133
161
|
subjectType: 'com.atproto.admin.defs#repoRef' as const,
|
|
@@ -136,6 +164,7 @@ export class RepoSubject implements ModSubject {
|
|
|
136
164
|
subjectCid: null,
|
|
137
165
|
subjectBlobCids: null,
|
|
138
166
|
subjectMessageId: null,
|
|
167
|
+
subjectConvoId: null,
|
|
139
168
|
meta: null,
|
|
140
169
|
}
|
|
141
170
|
}
|
|
@@ -151,6 +180,7 @@ export class RecordSubject implements ModSubject {
|
|
|
151
180
|
parsedUri: AtUri
|
|
152
181
|
did: string
|
|
153
182
|
recordPath: string
|
|
183
|
+
convoId = undefined
|
|
154
184
|
constructor(
|
|
155
185
|
public uri: string,
|
|
156
186
|
public cid: string,
|
|
@@ -169,6 +199,9 @@ export class RecordSubject implements ModSubject {
|
|
|
169
199
|
isMessage(): this is MessageSubject {
|
|
170
200
|
return false
|
|
171
201
|
}
|
|
202
|
+
isConvo(): this is ConvoSubject {
|
|
203
|
+
return false
|
|
204
|
+
}
|
|
172
205
|
info() {
|
|
173
206
|
return {
|
|
174
207
|
subjectType: 'com.atproto.repo.strongRef' as const,
|
|
@@ -177,6 +210,7 @@ export class RecordSubject implements ModSubject {
|
|
|
177
210
|
subjectCid: this.cid,
|
|
178
211
|
subjectBlobCids: this.blobCids ?? [],
|
|
179
212
|
subjectMessageId: null,
|
|
213
|
+
subjectConvoId: null,
|
|
180
214
|
meta: null,
|
|
181
215
|
}
|
|
182
216
|
}
|
|
@@ -206,6 +240,9 @@ export class MessageSubject implements ModSubject {
|
|
|
206
240
|
isMessage(): this is MessageSubject {
|
|
207
241
|
return true
|
|
208
242
|
}
|
|
243
|
+
isConvo(): this is ConvoSubject {
|
|
244
|
+
return false
|
|
245
|
+
}
|
|
209
246
|
info() {
|
|
210
247
|
return {
|
|
211
248
|
subjectType: 'chat.bsky.convo.defs#messageRef' as const,
|
|
@@ -214,6 +251,7 @@ export class MessageSubject implements ModSubject {
|
|
|
214
251
|
subjectCid: null,
|
|
215
252
|
subjectBlobCids: null,
|
|
216
253
|
subjectMessageId: this.messageId,
|
|
254
|
+
subjectConvoId: this.convoId,
|
|
217
255
|
meta: { convoId: this.convoId || undefined },
|
|
218
256
|
}
|
|
219
257
|
}
|
|
@@ -226,3 +264,43 @@ export class MessageSubject implements ModSubject {
|
|
|
226
264
|
}
|
|
227
265
|
}
|
|
228
266
|
}
|
|
267
|
+
|
|
268
|
+
export class ConvoSubject implements ModSubject {
|
|
269
|
+
blobCids = undefined
|
|
270
|
+
recordPath = undefined
|
|
271
|
+
constructor(
|
|
272
|
+
public did: string,
|
|
273
|
+
public convoId: string,
|
|
274
|
+
) {}
|
|
275
|
+
isRepo(): this is RepoSubject {
|
|
276
|
+
return false
|
|
277
|
+
}
|
|
278
|
+
isRecord(): this is RecordSubject {
|
|
279
|
+
return false
|
|
280
|
+
}
|
|
281
|
+
isMessage(): this is MessageSubject {
|
|
282
|
+
return false
|
|
283
|
+
}
|
|
284
|
+
isConvo(): this is ConvoSubject {
|
|
285
|
+
return true
|
|
286
|
+
}
|
|
287
|
+
info() {
|
|
288
|
+
return {
|
|
289
|
+
subjectType: 'chat.bsky.convo.defs#convoRef' as const,
|
|
290
|
+
subjectDid: this.did,
|
|
291
|
+
subjectUri: null,
|
|
292
|
+
subjectCid: null,
|
|
293
|
+
subjectBlobCids: null,
|
|
294
|
+
subjectMessageId: null,
|
|
295
|
+
subjectConvoId: this.convoId,
|
|
296
|
+
meta: { convoId: this.convoId || undefined },
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
lex(): $Typed<ConvoRef> {
|
|
300
|
+
return {
|
|
301
|
+
$type: 'chat.bsky.convo.defs#convoRef',
|
|
302
|
+
did: this.did,
|
|
303
|
+
convoId: this.convoId,
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|