@atproto/ozone 0.1.174 → 0.1.175
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/bin/migration-create.ts +1 -1
- package/dist/api/chat/getActorMetadata.d.ts +2 -2
- package/dist/api/chat/getActorMetadata.d.ts.map +1 -1
- package/dist/api/chat/getActorMetadata.js +5 -8
- package/dist/api/chat/getActorMetadata.js.map +1 -1
- package/dist/api/chat/getMessageContext.d.ts +2 -2
- package/dist/api/chat/getMessageContext.d.ts.map +1 -1
- package/dist/api/chat/getMessageContext.js +6 -9
- package/dist/api/chat/getMessageContext.js.map +1 -1
- package/dist/api/chat/index.d.ts +2 -2
- package/dist/api/chat/index.d.ts.map +1 -1
- package/dist/api/chat/index.js +5 -11
- package/dist/api/chat/index.js.map +1 -1
- package/dist/api/communication/createTemplate.d.ts +2 -2
- package/dist/api/communication/createTemplate.d.ts.map +1 -1
- package/dist/api/communication/createTemplate.js +7 -10
- package/dist/api/communication/createTemplate.js.map +1 -1
- package/dist/api/communication/deleteTemplate.d.ts +2 -2
- package/dist/api/communication/deleteTemplate.d.ts.map +1 -1
- package/dist/api/communication/deleteTemplate.js +3 -6
- package/dist/api/communication/deleteTemplate.js.map +1 -1
- package/dist/api/communication/listTemplates.d.ts +2 -2
- package/dist/api/communication/listTemplates.d.ts.map +1 -1
- package/dist/api/communication/listTemplates.js +3 -6
- package/dist/api/communication/listTemplates.js.map +1 -1
- package/dist/api/communication/updateTemplate.d.ts +2 -2
- package/dist/api/communication/updateTemplate.d.ts.map +1 -1
- package/dist/api/communication/updateTemplate.js +8 -11
- package/dist/api/communication/updateTemplate.js.map +1 -1
- package/dist/api/health.d.ts +1 -1
- package/dist/api/health.d.ts.map +1 -1
- package/dist/api/health.js +5 -9
- package/dist/api/health.js.map +1 -1
- package/dist/api/index.d.ts +4 -4
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +137 -177
- package/dist/api/index.js.map +1 -1
- package/dist/api/label/fetchLabels.d.ts +2 -2
- package/dist/api/label/fetchLabels.d.ts.map +1 -1
- package/dist/api/label/fetchLabels.js +1 -4
- package/dist/api/label/fetchLabels.js.map +1 -1
- package/dist/api/label/queryLabels.d.ts +2 -2
- package/dist/api/label/queryLabels.d.ts.map +1 -1
- package/dist/api/label/queryLabels.js +6 -9
- package/dist/api/label/queryLabels.js.map +1 -1
- package/dist/api/label/subscribeLabels.d.ts +2 -2
- package/dist/api/label/subscribeLabels.d.ts.map +1 -1
- package/dist/api/label/subscribeLabels.js +5 -8
- package/dist/api/label/subscribeLabels.js.map +1 -1
- package/dist/api/moderation/cancelScheduledActions.d.ts +2 -2
- package/dist/api/moderation/cancelScheduledActions.d.ts.map +1 -1
- package/dist/api/moderation/cancelScheduledActions.js +8 -11
- package/dist/api/moderation/cancelScheduledActions.js.map +1 -1
- package/dist/api/moderation/emitEvent.d.ts +2 -2
- package/dist/api/moderation/emitEvent.d.ts.map +1 -1
- package/dist/api/moderation/emitEvent.js +62 -66
- package/dist/api/moderation/emitEvent.js.map +1 -1
- package/dist/api/moderation/getAccountTimeline.d.ts +2 -2
- package/dist/api/moderation/getAccountTimeline.d.ts.map +1 -1
- package/dist/api/moderation/getAccountTimeline.js +10 -15
- package/dist/api/moderation/getAccountTimeline.js.map +1 -1
- package/dist/api/moderation/getEvent.d.ts +2 -2
- package/dist/api/moderation/getEvent.d.ts.map +1 -1
- package/dist/api/moderation/getEvent.js +1 -4
- package/dist/api/moderation/getEvent.js.map +1 -1
- package/dist/api/moderation/getRecord.d.ts +2 -2
- package/dist/api/moderation/getRecord.d.ts.map +1 -1
- package/dist/api/moderation/getRecord.js +7 -10
- package/dist/api/moderation/getRecord.js.map +1 -1
- package/dist/api/moderation/getRecords.d.ts +2 -2
- package/dist/api/moderation/getRecords.d.ts.map +1 -1
- package/dist/api/moderation/getRecords.js +5 -8
- package/dist/api/moderation/getRecords.js.map +1 -1
- package/dist/api/moderation/getRepo.d.ts +2 -2
- package/dist/api/moderation/getRepo.d.ts.map +1 -1
- package/dist/api/moderation/getRepo.js +6 -9
- package/dist/api/moderation/getRepo.js.map +1 -1
- package/dist/api/moderation/getReporterStats.d.ts +2 -2
- package/dist/api/moderation/getReporterStats.d.ts.map +1 -1
- package/dist/api/moderation/getReporterStats.js +1 -4
- package/dist/api/moderation/getReporterStats.js.map +1 -1
- package/dist/api/moderation/getRepos.d.ts +2 -2
- package/dist/api/moderation/getRepos.d.ts.map +1 -1
- package/dist/api/moderation/getRepos.js +4 -7
- package/dist/api/moderation/getRepos.js.map +1 -1
- package/dist/api/moderation/getSubjects.d.ts +2 -2
- package/dist/api/moderation/getSubjects.d.ts.map +1 -1
- package/dist/api/moderation/getSubjects.js +7 -10
- package/dist/api/moderation/getSubjects.js.map +1 -1
- package/dist/api/moderation/listScheduledActions.d.ts +2 -2
- package/dist/api/moderation/listScheduledActions.d.ts.map +1 -1
- package/dist/api/moderation/listScheduledActions.js +3 -6
- package/dist/api/moderation/listScheduledActions.js.map +1 -1
- package/dist/api/moderation/queryEvents.d.ts +2 -2
- package/dist/api/moderation/queryEvents.d.ts.map +1 -1
- package/dist/api/moderation/queryEvents.js +3 -6
- package/dist/api/moderation/queryEvents.js.map +1 -1
- package/dist/api/moderation/queryStatuses.d.ts +2 -2
- package/dist/api/moderation/queryStatuses.d.ts.map +1 -1
- package/dist/api/moderation/queryStatuses.js +1 -4
- package/dist/api/moderation/queryStatuses.js.map +1 -1
- package/dist/api/moderation/scheduleAction.d.ts +2 -2
- package/dist/api/moderation/scheduleAction.d.ts.map +1 -1
- package/dist/api/moderation/scheduleAction.js +15 -18
- package/dist/api/moderation/scheduleAction.js.map +1 -1
- package/dist/api/moderation/searchRepos.d.ts +2 -2
- package/dist/api/moderation/searchRepos.d.ts.map +1 -1
- package/dist/api/moderation/searchRepos.js +5 -8
- package/dist/api/moderation/searchRepos.js.map +1 -1
- package/dist/api/moderation/util.d.ts +2 -2
- package/dist/api/moderation/util.d.ts.map +1 -1
- package/dist/api/moderation/util.js +10 -15
- package/dist/api/moderation/util.js.map +1 -1
- package/dist/api/proxied.d.ts +2 -2
- package/dist/api/proxied.d.ts.map +1 -1
- package/dist/api/proxied.js +24 -27
- package/dist/api/proxied.js.map +1 -1
- package/dist/api/queue/assignModerator.d.ts +2 -2
- package/dist/api/queue/assignModerator.d.ts.map +1 -1
- package/dist/api/queue/assignModerator.js +6 -9
- package/dist/api/queue/assignModerator.js.map +1 -1
- package/dist/api/queue/createQueue.d.ts +2 -2
- package/dist/api/queue/createQueue.d.ts.map +1 -1
- package/dist/api/queue/createQueue.js +5 -8
- package/dist/api/queue/createQueue.js.map +1 -1
- package/dist/api/queue/deleteQueue.d.ts +2 -2
- package/dist/api/queue/deleteQueue.d.ts.map +1 -1
- package/dist/api/queue/deleteQueue.js +5 -8
- package/dist/api/queue/deleteQueue.js.map +1 -1
- package/dist/api/queue/getAssignments.d.ts +2 -2
- package/dist/api/queue/getAssignments.d.ts.map +1 -1
- package/dist/api/queue/getAssignments.js +1 -4
- package/dist/api/queue/getAssignments.js.map +1 -1
- package/dist/api/queue/listQueues.d.ts +2 -2
- package/dist/api/queue/listQueues.d.ts.map +1 -1
- package/dist/api/queue/listQueues.js +1 -4
- package/dist/api/queue/listQueues.js.map +1 -1
- package/dist/api/queue/routeReports.d.ts +2 -2
- package/dist/api/queue/routeReports.d.ts.map +1 -1
- package/dist/api/queue/routeReports.js +5 -8
- package/dist/api/queue/routeReports.js.map +1 -1
- package/dist/api/queue/unassignModerator.d.ts +2 -2
- package/dist/api/queue/unassignModerator.d.ts.map +1 -1
- package/dist/api/queue/unassignModerator.js +6 -9
- package/dist/api/queue/unassignModerator.js.map +1 -1
- package/dist/api/queue/updateQueue.d.ts +2 -2
- package/dist/api/queue/updateQueue.d.ts.map +1 -1
- package/dist/api/queue/updateQueue.js +5 -8
- package/dist/api/queue/updateQueue.js.map +1 -1
- package/dist/api/report/assignModerator.d.ts +2 -2
- package/dist/api/report/assignModerator.d.ts.map +1 -1
- package/dist/api/report/assignModerator.js +6 -9
- package/dist/api/report/assignModerator.js.map +1 -1
- package/dist/api/report/createActivity.d.ts +2 -2
- package/dist/api/report/createActivity.d.ts.map +1 -1
- package/dist/api/report/createActivity.js +8 -11
- package/dist/api/report/createActivity.js.map +1 -1
- package/dist/api/report/createReport.d.ts +2 -2
- package/dist/api/report/createReport.d.ts.map +1 -1
- package/dist/api/report/createReport.js +14 -17
- package/dist/api/report/createReport.js.map +1 -1
- package/dist/api/report/getAssignments.d.ts +2 -2
- package/dist/api/report/getAssignments.d.ts.map +1 -1
- package/dist/api/report/getAssignments.js +1 -4
- package/dist/api/report/getAssignments.js.map +1 -1
- package/dist/api/report/getHistoricalStats.d.ts +2 -2
- package/dist/api/report/getHistoricalStats.d.ts.map +1 -1
- package/dist/api/report/getHistoricalStats.js +3 -6
- package/dist/api/report/getHistoricalStats.js.map +1 -1
- package/dist/api/report/getLatestReport.d.ts +2 -2
- package/dist/api/report/getLatestReport.d.ts.map +1 -1
- package/dist/api/report/getLatestReport.js +9 -12
- package/dist/api/report/getLatestReport.js.map +1 -1
- package/dist/api/report/getLiveStats.d.ts +2 -2
- package/dist/api/report/getLiveStats.d.ts.map +1 -1
- package/dist/api/report/getLiveStats.js +3 -6
- package/dist/api/report/getLiveStats.js.map +1 -1
- package/dist/api/report/getReport.d.ts +2 -2
- package/dist/api/report/getReport.d.ts.map +1 -1
- package/dist/api/report/getReport.js +9 -12
- package/dist/api/report/getReport.js.map +1 -1
- package/dist/api/report/listActivities.d.ts +2 -2
- package/dist/api/report/listActivities.d.ts.map +1 -1
- package/dist/api/report/listActivities.js +4 -7
- package/dist/api/report/listActivities.js.map +1 -1
- package/dist/api/report/queryReports.d.ts +2 -2
- package/dist/api/report/queryReports.d.ts.map +1 -1
- package/dist/api/report/queryReports.js +7 -10
- package/dist/api/report/queryReports.js.map +1 -1
- package/dist/api/report/reassignQueue.d.ts +2 -2
- package/dist/api/report/reassignQueue.d.ts.map +1 -1
- package/dist/api/report/reassignQueue.js +12 -15
- package/dist/api/report/reassignQueue.js.map +1 -1
- package/dist/api/report/refreshStats.d.ts +2 -2
- package/dist/api/report/refreshStats.d.ts.map +1 -1
- package/dist/api/report/refreshStats.js +1 -4
- package/dist/api/report/refreshStats.js.map +1 -1
- package/dist/api/report/unassignModerator.d.ts +2 -2
- package/dist/api/report/unassignModerator.d.ts.map +1 -1
- package/dist/api/report/unassignModerator.js +3 -6
- package/dist/api/report/unassignModerator.js.map +1 -1
- package/dist/api/safelink/addRule.d.ts +2 -2
- package/dist/api/safelink/addRule.d.ts.map +1 -1
- package/dist/api/safelink/addRule.js +8 -11
- package/dist/api/safelink/addRule.js.map +1 -1
- package/dist/api/safelink/queryEvents.d.ts +2 -2
- package/dist/api/safelink/queryEvents.d.ts.map +1 -1
- package/dist/api/safelink/queryEvents.js +3 -6
- package/dist/api/safelink/queryEvents.js.map +1 -1
- package/dist/api/safelink/queryRules.d.ts +2 -2
- package/dist/api/safelink/queryRules.d.ts.map +1 -1
- package/dist/api/safelink/queryRules.js +5 -8
- package/dist/api/safelink/queryRules.js.map +1 -1
- package/dist/api/safelink/removeRule.d.ts +2 -2
- package/dist/api/safelink/removeRule.d.ts.map +1 -1
- package/dist/api/safelink/removeRule.js +6 -9
- package/dist/api/safelink/removeRule.js.map +1 -1
- package/dist/api/safelink/updateRule.d.ts +2 -2
- package/dist/api/safelink/updateRule.d.ts.map +1 -1
- package/dist/api/safelink/updateRule.js +8 -11
- package/dist/api/safelink/updateRule.js.map +1 -1
- package/dist/api/server/getConfig.d.ts +2 -2
- package/dist/api/server/getConfig.d.ts.map +1 -1
- package/dist/api/server/getConfig.js +5 -8
- package/dist/api/server/getConfig.js.map +1 -1
- package/dist/api/set/addValues.d.ts +2 -2
- package/dist/api/set/addValues.d.ts.map +1 -1
- package/dist/api/set/addValues.js +4 -7
- package/dist/api/set/addValues.js.map +1 -1
- package/dist/api/set/deleteSet.d.ts +2 -2
- package/dist/api/set/deleteSet.d.ts.map +1 -1
- package/dist/api/set/deleteSet.js +4 -7
- package/dist/api/set/deleteSet.js.map +1 -1
- package/dist/api/set/deleteValues.d.ts +2 -2
- package/dist/api/set/deleteValues.d.ts.map +1 -1
- package/dist/api/set/deleteValues.js +4 -7
- package/dist/api/set/deleteValues.js.map +1 -1
- package/dist/api/set/getValues.d.ts +2 -2
- package/dist/api/set/getValues.d.ts.map +1 -1
- package/dist/api/set/getValues.js +4 -7
- package/dist/api/set/getValues.js.map +1 -1
- package/dist/api/set/querySets.d.ts +2 -2
- package/dist/api/set/querySets.d.ts.map +1 -1
- package/dist/api/set/querySets.js +3 -6
- package/dist/api/set/querySets.js.map +1 -1
- package/dist/api/set/upsertSet.d.ts +2 -2
- package/dist/api/set/upsertSet.d.ts.map +1 -1
- package/dist/api/set/upsertSet.js +4 -7
- package/dist/api/set/upsertSet.js.map +1 -1
- package/dist/api/setting/listOptions.d.ts +2 -2
- package/dist/api/setting/listOptions.d.ts.map +1 -1
- package/dist/api/setting/listOptions.js +3 -6
- package/dist/api/setting/listOptions.js.map +1 -1
- package/dist/api/setting/removeOptions.d.ts +2 -2
- package/dist/api/setting/removeOptions.d.ts.map +1 -1
- package/dist/api/setting/removeOptions.js +3 -6
- package/dist/api/setting/removeOptions.js.map +1 -1
- package/dist/api/setting/upsertOption.d.ts +2 -2
- package/dist/api/setting/upsertOption.d.ts.map +1 -1
- package/dist/api/setting/upsertOption.js +25 -31
- package/dist/api/setting/upsertOption.js.map +1 -1
- package/dist/api/team/addMember.d.ts +2 -2
- package/dist/api/team/addMember.d.ts.map +1 -1
- package/dist/api/team/addMember.js +6 -9
- package/dist/api/team/addMember.js.map +1 -1
- package/dist/api/team/deleteMember.d.ts +2 -2
- package/dist/api/team/deleteMember.d.ts.map +1 -1
- package/dist/api/team/deleteMember.js +4 -7
- package/dist/api/team/deleteMember.js.map +1 -1
- package/dist/api/team/listMembers.d.ts +2 -2
- package/dist/api/team/listMembers.d.ts.map +1 -1
- package/dist/api/team/listMembers.js +1 -4
- package/dist/api/team/listMembers.js.map +1 -1
- package/dist/api/team/updateMember.d.ts +2 -2
- package/dist/api/team/updateMember.d.ts.map +1 -1
- package/dist/api/team/updateMember.js +7 -10
- package/dist/api/team/updateMember.js.map +1 -1
- package/dist/api/util.d.ts +4 -4
- package/dist/api/util.d.ts.map +1 -1
- package/dist/api/util.js +39 -56
- package/dist/api/util.js.map +1 -1
- package/dist/api/verification/grantVerifications.d.ts +2 -2
- package/dist/api/verification/grantVerifications.d.ts.map +1 -1
- package/dist/api/verification/grantVerifications.js +6 -9
- package/dist/api/verification/grantVerifications.js.map +1 -1
- package/dist/api/verification/listVerifications.d.ts +2 -2
- package/dist/api/verification/listVerifications.d.ts.map +1 -1
- package/dist/api/verification/listVerifications.js +3 -6
- package/dist/api/verification/listVerifications.js.map +1 -1
- package/dist/api/verification/revokeVerifications.d.ts +2 -2
- package/dist/api/verification/revokeVerifications.d.ts.map +1 -1
- package/dist/api/verification/revokeVerifications.js +4 -7
- package/dist/api/verification/revokeVerifications.js.map +1 -1
- package/dist/api/well-known.d.ts +1 -1
- package/dist/api/well-known.d.ts.map +1 -1
- package/dist/api/well-known.js +3 -7
- package/dist/api/well-known.js.map +1 -1
- package/dist/assignment/index.d.ts +7 -7
- package/dist/assignment/index.d.ts.map +1 -1
- package/dist/assignment/index.js +23 -47
- package/dist/assignment/index.js.map +1 -1
- package/dist/auth-verifier.d.ts +1 -1
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/auth-verifier.js +82 -174
- package/dist/auth-verifier.js.map +1 -1
- package/dist/background.d.ts +1 -1
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +17 -74
- package/dist/background.js.map +1 -1
- package/dist/communication-service/template.d.ts +3 -3
- package/dist/communication-service/template.d.ts.map +1 -1
- package/dist/communication-service/template.js +2 -11
- package/dist/communication-service/template.js.map +1 -1
- package/dist/communication-service/util.js +1 -5
- package/dist/communication-service/util.js.map +1 -1
- package/dist/config/config.d.ts +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +18 -25
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.js +42 -46
- package/dist/config/env.js.map +1 -1
- package/dist/config/index.d.ts +3 -3
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -19
- package/dist/config/index.js.map +1 -1
- package/dist/config/secrets.d.ts +1 -1
- package/dist/config/secrets.d.ts.map +1 -1
- package/dist/config/secrets.js +4 -11
- package/dist/config/secrets.js.map +1 -1
- package/dist/context.d.ts +22 -22
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +63 -113
- package/dist/context.js.map +1 -1
- package/dist/daemon/blob-diverter.d.ts +2 -2
- package/dist/daemon/blob-diverter.d.ts.map +1 -1
- package/dist/daemon/blob-diverter.js +18 -72
- package/dist/daemon/blob-diverter.js.map +1 -1
- package/dist/daemon/context.d.ts +12 -12
- package/dist/daemon/context.d.ts.map +1 -1
- package/dist/daemon/context.js +50 -59
- package/dist/daemon/context.js.map +1 -1
- package/dist/daemon/event-pusher.d.ts +4 -4
- package/dist/daemon/event-pusher.d.ts.map +1 -1
- package/dist/daemon/event-pusher.js +29 -78
- package/dist/daemon/event-pusher.js.map +1 -1
- package/dist/daemon/event-reverser.d.ts +2 -2
- package/dist/daemon/event-reverser.d.ts.map +1 -1
- package/dist/daemon/event-reverser.js +14 -44
- package/dist/daemon/event-reverser.js.map +1 -1
- package/dist/daemon/index.d.ts +8 -8
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +9 -23
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/job-cursor.d.ts +1 -1
- package/dist/daemon/job-cursor.d.ts.map +1 -1
- package/dist/daemon/job-cursor.js +3 -8
- package/dist/daemon/job-cursor.js.map +1 -1
- package/dist/daemon/materialized-view-refresher.d.ts +1 -1
- package/dist/daemon/materialized-view-refresher.d.ts.map +1 -1
- package/dist/daemon/materialized-view-refresher.js +9 -13
- package/dist/daemon/materialized-view-refresher.js.map +1 -1
- package/dist/daemon/queue-router.d.ts +2 -2
- package/dist/daemon/queue-router.d.ts.map +1 -1
- package/dist/daemon/queue-router.js +13 -43
- package/dist/daemon/queue-router.js.map +1 -1
- package/dist/daemon/scheduled-action-processor.d.ts +9 -9
- package/dist/daemon/scheduled-action-processor.d.ts.map +1 -1
- package/dist/daemon/scheduled-action-processor.js +23 -68
- package/dist/daemon/scheduled-action-processor.js.map +1 -1
- package/dist/daemon/stats-computer.d.ts +2 -2
- package/dist/daemon/stats-computer.d.ts.map +1 -1
- package/dist/daemon/stats-computer.js +15 -50
- package/dist/daemon/stats-computer.js.map +1 -1
- package/dist/daemon/strike-expiry-processor.d.ts +2 -2
- package/dist/daemon/strike-expiry-processor.d.ts.map +1 -1
- package/dist/daemon/strike-expiry-processor.js +16 -46
- package/dist/daemon/strike-expiry-processor.js.map +1 -1
- package/dist/daemon/team-profile-synchronizer.d.ts +2 -2
- package/dist/daemon/team-profile-synchronizer.d.ts.map +1 -1
- package/dist/daemon/team-profile-synchronizer.js +4 -8
- package/dist/daemon/team-profile-synchronizer.js.map +1 -1
- package/dist/daemon/verification-listener.d.ts +2 -2
- package/dist/daemon/verification-listener.d.ts.map +1 -1
- package/dist/daemon/verification-listener.js +20 -70
- package/dist/daemon/verification-listener.js.map +1 -1
- package/dist/db/index.d.ts +7 -5
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +27 -107
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations/20231219T205730722Z-init.js +2 -6
- package/dist/db/migrations/20231219T205730722Z-init.js.map +1 -1
- package/dist/db/migrations/20240116T085607200Z-communication-template.js +2 -6
- package/dist/db/migrations/20240116T085607200Z-communication-template.js.map +1 -1
- package/dist/db/migrations/20240201T051104136Z-mod-event-blobs.js +2 -6
- package/dist/db/migrations/20240201T051104136Z-mod-event-blobs.js.map +1 -1
- package/dist/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.js +2 -6
- package/dist/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.js.map +1 -1
- package/dist/db/migrations/20240228T003647759Z-add-label-sigs.js +4 -8
- package/dist/db/migrations/20240228T003647759Z-add-label-sigs.js.map +1 -1
- package/dist/db/migrations/20240408T192432676Z-mute-reporting.js +2 -6
- package/dist/db/migrations/20240408T192432676Z-mute-reporting.js.map +1 -1
- package/dist/db/migrations/20240506T225055595Z-message-subject.js +2 -6
- package/dist/db/migrations/20240506T225055595Z-message-subject.js.map +1 -1
- package/dist/db/migrations/20240521T211332580Z-member.js +2 -6
- package/dist/db/migrations/20240521T211332580Z-member.js.map +1 -1
- package/dist/db/migrations/20240814T003647759Z-event-created-at-index.js +2 -6
- package/dist/db/migrations/20240814T003647759Z-event-created-at-index.js.map +1 -1
- package/dist/db/migrations/20240903T205730722Z-add-template-lang.js +2 -6
- package/dist/db/migrations/20240903T205730722Z-add-template-lang.js.map +1 -1
- package/dist/db/migrations/20240904T205730722Z-add-subject-did-index.js +2 -6
- package/dist/db/migrations/20240904T205730722Z-add-subject-did-index.js.map +1 -1
- package/dist/db/migrations/20241001T205730722Z-subject-status-review-state-index.js +2 -6
- package/dist/db/migrations/20241001T205730722Z-subject-status-review-state-index.js.map +1 -1
- package/dist/db/migrations/20241008T205730722Z-sets.js +6 -10
- package/dist/db/migrations/20241008T205730722Z-sets.js.map +1 -1
- package/dist/db/migrations/20241018T205730722Z-setting.js +5 -9
- package/dist/db/migrations/20241018T205730722Z-setting.js.map +1 -1
- package/dist/db/migrations/20241026T205730722Z-add-hosting-status-to-subject-status.js +2 -6
- package/dist/db/migrations/20241026T205730722Z-add-hosting-status-to-subject-status.js.map +1 -1
- package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.d.ts +1 -1
- package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.d.ts.map +1 -1
- package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.js +27 -31
- package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.js.map +1 -1
- package/dist/db/migrations/20250204T003647759Z-add-subject-priority-score.js +2 -6
- package/dist/db/migrations/20250204T003647759Z-add-subject-priority-score.js.map +1 -1
- package/dist/db/migrations/20250211T003647759Z-add-reporter-stats-index.js +7 -11
- package/dist/db/migrations/20250211T003647759Z-add-reporter-stats-index.js.map +1 -1
- package/dist/db/migrations/20250211T132135150Z-moderation-event-message-partial-idx.js +4 -8
- package/dist/db/migrations/20250211T132135150Z-moderation-event-message-partial-idx.js.map +1 -1
- package/dist/db/migrations/20250221T132135150Z-member-details.js +2 -6
- package/dist/db/migrations/20250221T132135150Z-member-details.js.map +1 -1
- package/dist/db/migrations/20250404T201720309Z-subject-status-sort-idxs.js +5 -9
- package/dist/db/migrations/20250404T201720309Z-subject-status-sort-idxs.js.map +1 -1
- package/dist/db/migrations/20250415T201720309Z-verification.js +4 -8
- package/dist/db/migrations/20250415T201720309Z-verification.js.map +1 -1
- package/dist/db/migrations/20250417T201720309Z-firehose-cursor.js +4 -8
- package/dist/db/migrations/20250417T201720309Z-firehose-cursor.js.map +1 -1
- package/dist/db/migrations/20250609T110704000Z-safelink.js +2 -6
- package/dist/db/migrations/20250609T110704000Z-safelink.js.map +1 -1
- package/dist/db/migrations/20250618T180246000Z-add-mod-tool-to-moderation-event.js +4 -8
- package/dist/db/migrations/20250618T180246000Z-add-mod-tool-to-moderation-event.js.map +1 -1
- package/dist/db/migrations/20250701T000000000Z-add-age-assurance-state.js +2 -6
- package/dist/db/migrations/20250701T000000000Z-add-age-assurance-state.js.map +1 -1
- package/dist/db/migrations/20250715T000000000Z-add-mod-event-external-id.js +2 -6
- package/dist/db/migrations/20250715T000000000Z-add-mod-event-external-id.js.map +1 -1
- package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.d.ts +1 -1
- package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.d.ts.map +1 -1
- package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.js +37 -41
- package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.js.map +1 -1
- package/dist/db/migrations/20250813T000000000Z-mod-tool-batch-id-index.js +4 -8
- package/dist/db/migrations/20250813T000000000Z-mod-tool-batch-id-index.js.map +1 -1
- package/dist/db/migrations/20250923T000000000Z-scheduled-actions.js +4 -8
- package/dist/db/migrations/20250923T000000000Z-scheduled-actions.js.map +1 -1
- package/dist/db/migrations/20251008T120000000Z-add-strike-system.js +5 -9
- package/dist/db/migrations/20251008T120000000Z-add-strike-system.js.map +1 -1
- package/dist/db/migrations/20260210T154806448Z-mod-event-created-by-indexes.js +2 -6
- package/dist/db/migrations/20260210T154806448Z-mod-event-created-by-indexes.js.map +1 -1
- package/dist/db/migrations/20260219T164523000Z-create-report-table.js +19 -23
- package/dist/db/migrations/20260219T164523000Z-create-report-table.js.map +1 -1
- package/dist/db/migrations/20260219T165302248Z-moderator-assignment.js +6 -10
- package/dist/db/migrations/20260219T165302248Z-moderator-assignment.js.map +1 -1
- package/dist/db/migrations/20260225T000000000Z-add-report-queue-table.js +5 -9
- package/dist/db/migrations/20260225T000000000Z-add-report-queue-table.js.map +1 -1
- package/dist/db/migrations/20260313T000000000Z-add-report-activity-table.js +4 -8
- package/dist/db/migrations/20260313T000000000Z-add-report-activity-table.js.map +1 -1
- package/dist/db/migrations/20260318T152058935Z-add-report-stat.js +4 -8
- package/dist/db/migrations/20260318T152058935Z-add-report-stat.js.map +1 -1
- package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.js +2 -6
- package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.js.map +1 -1
- package/dist/db/migrations/index.d.ts +38 -38
- package/dist/db/migrations/index.d.ts.map +1 -1
- package/dist/db/migrations/index.js +38 -74
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/migrations/provider.js +3 -17
- package/dist/db/migrations/provider.js.map +1 -1
- package/dist/db/pagination.d.ts +1 -1
- package/dist/db/pagination.d.ts.map +1 -1
- package/dist/db/pagination.js +34 -54
- package/dist/db/pagination.js.map +1 -1
- package/dist/db/schema/account_events_stats.js +1 -4
- package/dist/db/schema/account_events_stats.js.map +1 -1
- package/dist/db/schema/account_record_events_stats.js +1 -4
- package/dist/db/schema/account_record_events_stats.js.map +1 -1
- package/dist/db/schema/account_record_status_stats.js +1 -4
- package/dist/db/schema/account_record_status_stats.js.map +1 -1
- package/dist/db/schema/account_strike.js +1 -4
- package/dist/db/schema/account_strike.js.map +1 -1
- package/dist/db/schema/blob_push_event.js +1 -4
- package/dist/db/schema/blob_push_event.js.map +1 -1
- package/dist/db/schema/communication_template.js +1 -4
- package/dist/db/schema/communication_template.js.map +1 -1
- package/dist/db/schema/expiring_tag.js +1 -4
- package/dist/db/schema/expiring_tag.js.map +1 -1
- package/dist/db/schema/firehose_cursor.js +1 -4
- package/dist/db/schema/firehose_cursor.js.map +1 -1
- package/dist/db/schema/index.d.ts +27 -27
- package/dist/db/schema/index.d.ts.map +1 -1
- package/dist/db/schema/index.js +1 -2
- package/dist/db/schema/index.js.map +1 -1
- package/dist/db/schema/job_cursor.js +1 -4
- package/dist/db/schema/job_cursor.js.map +1 -1
- package/dist/db/schema/label.js +2 -5
- package/dist/db/schema/label.js.map +1 -1
- package/dist/db/schema/member.js +1 -4
- package/dist/db/schema/member.js.map +1 -1
- package/dist/db/schema/moderation_event.js +1 -4
- package/dist/db/schema/moderation_event.js.map +1 -1
- package/dist/db/schema/moderation_subject_status.d.ts +1 -1
- package/dist/db/schema/moderation_subject_status.d.ts.map +1 -1
- package/dist/db/schema/moderation_subject_status.js +1 -4
- package/dist/db/schema/moderation_subject_status.js.map +1 -1
- package/dist/db/schema/moderator_assignment.js +1 -4
- package/dist/db/schema/moderator_assignment.js.map +1 -1
- package/dist/db/schema/ozone_set.js +2 -5
- package/dist/db/schema/ozone_set.js.map +1 -1
- package/dist/db/schema/record_events_stats.js +1 -4
- package/dist/db/schema/record_events_stats.js.map +1 -1
- package/dist/db/schema/record_push_event.js +1 -4
- package/dist/db/schema/record_push_event.js.map +1 -1
- package/dist/db/schema/repo_push_event.js +1 -4
- package/dist/db/schema/repo_push_event.js.map +1 -1
- package/dist/db/schema/report.js +1 -4
- package/dist/db/schema/report.js.map +1 -1
- package/dist/db/schema/report_activity.js +1 -4
- package/dist/db/schema/report_activity.js.map +1 -1
- package/dist/db/schema/report_queue.js +1 -4
- package/dist/db/schema/report_queue.js.map +1 -1
- package/dist/db/schema/report_stat.js +1 -4
- package/dist/db/schema/report_stat.js.map +1 -1
- package/dist/db/schema/safelink.d.ts +1 -1
- package/dist/db/schema/safelink.d.ts.map +1 -1
- package/dist/db/schema/safelink.js +2 -5
- package/dist/db/schema/safelink.js.map +1 -1
- package/dist/db/schema/scheduled-action.js +1 -4
- package/dist/db/schema/scheduled-action.js.map +1 -1
- package/dist/db/schema/setting.d.ts +1 -1
- package/dist/db/schema/setting.d.ts.map +1 -1
- package/dist/db/schema/setting.js +1 -4
- package/dist/db/schema/setting.js.map +1 -1
- package/dist/db/schema/signing_key.js +1 -4
- package/dist/db/schema/signing_key.js.map +1 -1
- package/dist/db/schema/verification.js +1 -4
- package/dist/db/schema/verification.js.map +1 -1
- package/dist/db/types.d.ts +3 -1
- package/dist/db/types.d.ts.map +1 -1
- package/dist/db/types.js +4 -8
- package/dist/db/types.js.map +1 -1
- package/dist/error.js +5 -9
- package/dist/error.js.map +1 -1
- package/dist/image-invalidator.js +1 -2
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -110
- package/dist/index.js.map +1 -1
- package/dist/jetstream/service.d.ts.map +1 -1
- package/dist/jetstream/service.js +4 -26
- package/dist/jetstream/service.js.map +1 -1
- package/dist/lexicon/index.d.ts +2 -2
- package/dist/lexicon/index.js +60 -670
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +992 -28
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +621 -28
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts +34 -34
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/defs.js +69 -137
- package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/getPreferences.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/getPreferences.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/getProfile.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/getProfile.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/getProfiles.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/getProfiles.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/getSuggestions.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/getSuggestions.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/profile.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/actor/profile.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/profile.js +6 -11
- package/dist/lexicon/types/app/bsky/actor/profile.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/putPreferences.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/putPreferences.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/searchActors.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/searchActors.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/status.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/actor/status.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/status.js +7 -13
- package/dist/lexicon/types/app/bsky/actor/status.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/begin.js +3 -5
- package/dist/lexicon/types/app/bsky/ageassurance/begin.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/defs.d.ts +13 -13
- package/dist/lexicon/types/app/bsky/ageassurance/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/defs.js +27 -53
- package/dist/lexicon/types/app/bsky/ageassurance/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/getConfig.js +3 -5
- package/dist/lexicon/types/app/bsky/ageassurance/getConfig.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/getState.js +3 -5
- package/dist/lexicon/types/app/bsky/ageassurance/getState.js.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/createBookmark.js +3 -5
- package/dist/lexicon/types/app/bsky/bookmark/createBookmark.js.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/defs.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/bookmark/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/defs.js +7 -13
- package/dist/lexicon/types/app/bsky/bookmark/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/deleteBookmark.js +3 -5
- package/dist/lexicon/types/app/bsky/bookmark/deleteBookmark.js.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/getBookmarks.js +3 -5
- package/dist/lexicon/types/app/bsky/bookmark/getBookmarks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/defs.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/contact/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/defs.js +9 -17
- package/dist/lexicon/types/app/bsky/contact/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/dismissMatch.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/dismissMatch.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/getMatches.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/getMatches.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/getSyncStatus.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/getSyncStatus.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/importContacts.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/importContacts.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/removeData.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/removeData.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/sendNotification.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/sendNotification.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/verifyPhone.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/verifyPhone.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/createDraft.js +3 -5
- package/dist/lexicon/types/app/bsky/draft/createDraft.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/defs.d.ts +11 -11
- package/dist/lexicon/types/app/bsky/draft/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/defs.js +23 -45
- package/dist/lexicon/types/app/bsky/draft/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/deleteDraft.js +3 -5
- package/dist/lexicon/types/app/bsky/draft/deleteDraft.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/getDrafts.js +3 -5
- package/dist/lexicon/types/app/bsky/draft/getDrafts.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/updateDraft.js +3 -5
- package/dist/lexicon/types/app/bsky/draft/updateDraft.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/defs.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/embed/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/defs.js +5 -9
- package/dist/lexicon/types/app/bsky/embed/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/external.d.ts +6 -5
- package/dist/lexicon/types/app/bsky/embed/external.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/external.js +11 -21
- package/dist/lexicon/types/app/bsky/embed/external.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/images.d.ts +4 -4
- package/dist/lexicon/types/app/bsky/embed/images.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/images.js +11 -21
- package/dist/lexicon/types/app/bsky/embed/images.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/record.d.ts +7 -7
- package/dist/lexicon/types/app/bsky/embed/record.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/record.js +15 -29
- package/dist/lexicon/types/app/bsky/embed/record.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/recordWithMedia.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/embed/recordWithMedia.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/recordWithMedia.js +7 -13
- package/dist/lexicon/types/app/bsky/embed/recordWithMedia.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/video.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/embed/video.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/video.js +9 -17
- package/dist/lexicon/types/app/bsky/embed/video.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/defs.d.ts +19 -19
- package/dist/lexicon/types/app/bsky/feed/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/defs.js +53 -92
- package/dist/lexicon/types/app/bsky/feed/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.js +7 -13
- package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/generator.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/feed/generator.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/generator.js +6 -11
- package/dist/lexicon/types/app/bsky/feed/generator.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getActorFeeds.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getActorFeeds.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getActorLikes.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getActorLikes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getFeed.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getFeed.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getLikes.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/feed/getLikes.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getLikes.js +5 -9
- package/dist/lexicon/types/app/bsky/feed/getLikes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getListFeed.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getListFeed.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getPostThread.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/feed/getPostThread.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getPostThread.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getPostThread.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getPosts.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getPosts.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getQuotes.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getQuotes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getRepostedBy.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getRepostedBy.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getTimeline.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getTimeline.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/like.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/feed/like.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/like.js +6 -11
- package/dist/lexicon/types/app/bsky/feed/like.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/post.d.ts +5 -5
- package/dist/lexicon/types/app/bsky/feed/post.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/post.js +12 -23
- package/dist/lexicon/types/app/bsky/feed/post.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/postgate.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/feed/postgate.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/postgate.js +8 -15
- package/dist/lexicon/types/app/bsky/feed/postgate.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/repost.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/feed/repost.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/repost.js +6 -11
- package/dist/lexicon/types/app/bsky/feed/repost.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/searchPosts.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/searchPosts.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/sendInteractions.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/sendInteractions.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/threadgate.d.ts +6 -6
- package/dist/lexicon/types/app/bsky/feed/threadgate.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/threadgate.js +14 -27
- package/dist/lexicon/types/app/bsky/feed/threadgate.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/block.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/block.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/block.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/block.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/defs.d.ts +8 -8
- package/dist/lexicon/types/app/bsky/graph/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/defs.js +22 -41
- package/dist/lexicon/types/app/bsky/graph/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/follow.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/follow.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/follow.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/follow.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getActorStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getActorStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getBlocks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getBlocks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getFollowers.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getFollowers.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getFollows.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getFollows.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getList.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getList.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListBlocks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getListBlocks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListMutes.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getListMutes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getLists.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getLists.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.js +5 -9
- package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getMutes.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getMutes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getRelationships.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/getRelationships.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getRelationships.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getRelationships.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPack.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getStarterPack.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.js +5 -9
- package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/list.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/graph/list.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/list.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/list.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/listblock.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/listblock.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/listblock.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/listblock.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/listitem.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/listitem.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/listitem.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/listitem.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/muteActor.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/muteActor.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/muteActorList.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/muteActorList.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/muteThread.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/muteThread.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/searchStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/searchStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/starterpack.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/graph/starterpack.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/starterpack.js +8 -15
- package/dist/lexicon/types/app/bsky/graph/starterpack.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/unmuteActor.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/unmuteActor.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/unmuteActorList.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/unmuteActorList.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/unmuteThread.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/unmuteThread.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/verification.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/verification.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/verification.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/verification.js.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/defs.d.ts +4 -4
- package/dist/lexicon/types/app/bsky/labeler/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/defs.js +11 -21
- package/dist/lexicon/types/app/bsky/labeler/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/getServices.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/labeler/getServices.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/getServices.js +3 -5
- package/dist/lexicon/types/app/bsky/labeler/getServices.js.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/service.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/labeler/service.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/service.js +6 -11
- package/dist/lexicon/types/app/bsky/labeler/service.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/declaration.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/notification/declaration.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/declaration.js +6 -11
- package/dist/lexicon/types/app/bsky/notification/declaration.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/defs.d.ts +7 -7
- package/dist/lexicon/types/app/bsky/notification/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/defs.js +17 -33
- package/dist/lexicon/types/app/bsky/notification/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/getPreferences.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/getPreferences.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/getUnreadCount.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/getUnreadCount.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/listActivitySubscriptions.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/listActivitySubscriptions.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.js +5 -9
- package/dist/lexicon/types/app/bsky/notification/listNotifications.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/putActivitySubscription.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/putActivitySubscription.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/putPreferences.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/putPreferences.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/putPreferencesV2.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/putPreferencesV2.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/registerPush.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/registerPush.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/unregisterPush.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/unregisterPush.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/updateSeen.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/updateSeen.js.map +1 -1
- package/dist/lexicon/types/app/bsky/richtext/facet.d.ts +6 -6
- package/dist/lexicon/types/app/bsky/richtext/facet.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/richtext/facet.js +13 -25
- package/dist/lexicon/types/app/bsky/richtext/facet.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts +12 -12
- package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/defs.js +27 -53
- package/dist/lexicon/types/app/bsky/unspecced/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getConfig.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getConfig.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getConfig.js +5 -9
- package/dist/lexicon/types/app/bsky/unspecced/getConfig.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.js +5 -9
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.js +5 -9
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsers.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsers.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscover.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscover.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExplore.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExplore.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.js +5 -9
- package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTrendingTopics.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getTrendingTopics.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTrends.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getTrends.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/initAgeAssurance.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/initAgeAssurance.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/video/defs.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/video/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/video/defs.js +5 -9
- package/dist/lexicon/types/app/bsky/video/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/video/getJobStatus.js +3 -5
- package/dist/lexicon/types/app/bsky/video/getJobStatus.js.map +1 -1
- package/dist/lexicon/types/app/bsky/video/getUploadLimits.js +3 -5
- package/dist/lexicon/types/app/bsky/video/getUploadLimits.js.map +1 -1
- package/dist/lexicon/types/app/bsky/video/uploadVideo.js +3 -5
- package/dist/lexicon/types/app/bsky/video/uploadVideo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/declaration.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/actor/declaration.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/declaration.js +6 -11
- package/dist/lexicon/types/chat/bsky/actor/declaration.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/defs.d.ts +5 -5
- package/dist/lexicon/types/chat/bsky/actor/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/defs.js +11 -21
- package/dist/lexicon/types/chat/bsky/actor/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/deleteAccount.js +3 -5
- package/dist/lexicon/types/chat/bsky/actor/deleteAccount.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/exportAccountData.js +3 -5
- package/dist/lexicon/types/chat/bsky/actor/exportAccountData.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/acceptConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/acceptConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/addReaction.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/addReaction.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts +61 -54
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.js +114 -213
- package/dist/lexicon/types/chat/bsky/convo/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/deleteMessageForSelf.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/deleteMessageForSelf.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoAvailability.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getConvoAvailability.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoMembers.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getConvoMembers.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 +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getLog.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getMessages.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getMessages.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getMessages.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getMessages.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/leaveConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/leaveConvo.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 +3 -5
- package/dist/lexicon/types/chat/bsky/convo/listConvoRequests.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvos.d.ts +2 -0
- package/dist/lexicon/types/chat/bsky/convo/listConvos.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvos.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/listConvos.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/lockConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/lockConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/muteConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/muteConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/removeReaction.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/removeReaction.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessage.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/sendMessage.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.js +5 -9
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/unlockConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/unlockConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/unmuteConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/unmuteConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/updateAllRead.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/updateAllRead.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/updateRead.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/updateRead.js.map +1 -1
- 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 +3 -5
- package/dist/lexicon/types/chat/bsky/group/addMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/approveJoinRequest.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/approveJoinRequest.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 +3 -5
- package/dist/lexicon/types/chat/bsky/group/createGroup.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/createJoinLink.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/createJoinLink.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/defs.d.ts +8 -6
- package/dist/lexicon/types/chat/bsky/group/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/defs.js +12 -20
- package/dist/lexicon/types/chat/bsky/group/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/disableJoinLink.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/disableJoinLink.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/editGroup.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/editGroup.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/editJoinLink.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/editJoinLink.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/enableJoinLink.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/enableJoinLink.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/{getGroupPublicInfo.d.ts → getJoinLinkPreview.d.ts} +2 -2
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreview.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreview.js +5 -0
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreview.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/listJoinRequests.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/listJoinRequests.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/rejectJoinRequest.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/rejectJoinRequest.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/removeMembers.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/removeMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/requestJoin.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/requestJoin.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.js +5 -9
- package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.d.ts +6 -2
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.js +3 -5
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.d.ts +209 -3
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.js +68 -9
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/updateActorAccess.js +3 -5
- package/dist/lexicon/types/chat/bsky/moderation/updateActorAccess.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/defs.d.ts +5 -5
- package/dist/lexicon/types/com/atproto/admin/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/defs.js +13 -25
- package/dist/lexicon/types/com/atproto/admin/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/deleteAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/deleteAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/disableAccountInvites.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/disableAccountInvites.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/disableInviteCodes.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/disableInviteCodes.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/enableAccountInvites.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/enableAccountInvites.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getAccountInfo.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/getAccountInfo.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getAccountInfos.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/getAccountInfos.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getInviteCodes.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/getInviteCodes.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/searchAccounts.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/searchAccounts.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/sendEmail.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/sendEmail.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateAccountEmail.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateAccountEmail.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateAccountHandle.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateAccountHandle.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateAccountPassword.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateAccountPassword.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/defs.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/identity/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/defs.js +5 -9
- package/dist/lexicon/types/com/atproto/identity/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/refreshIdentity.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/refreshIdentity.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/requestPlcOperationSignature.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/requestPlcOperationSignature.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/resolveDid.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/resolveDid.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/resolveHandle.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/resolveHandle.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/resolveIdentity.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/resolveIdentity.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/signPlcOperation.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/signPlcOperation.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/submitPlcOperation.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/submitPlcOperation.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/updateHandle.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/updateHandle.js.map +1 -1
- package/dist/lexicon/types/com/atproto/label/defs.d.ts +5 -5
- package/dist/lexicon/types/com/atproto/label/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/label/defs.js +13 -25
- package/dist/lexicon/types/com/atproto/label/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/label/queryLabels.js +3 -5
- package/dist/lexicon/types/com/atproto/label/queryLabels.js.map +1 -1
- package/dist/lexicon/types/com/atproto/label/subscribeLabels.d.ts +3 -3
- package/dist/lexicon/types/com/atproto/label/subscribeLabels.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/label/subscribeLabels.js +7 -13
- package/dist/lexicon/types/com/atproto/label/subscribeLabels.js.map +1 -1
- package/dist/lexicon/types/com/atproto/lexicon/resolveLexicon.js +3 -5
- package/dist/lexicon/types/com/atproto/lexicon/resolveLexicon.js.map +1 -1
- package/dist/lexicon/types/com/atproto/lexicon/schema.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/lexicon/schema.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/lexicon/schema.js +6 -11
- package/dist/lexicon/types/com/atproto/lexicon/schema.js.map +1 -1
- package/dist/lexicon/types/com/atproto/moderation/createReport.d.ts +2 -2
- package/dist/lexicon/types/com/atproto/moderation/createReport.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/moderation/createReport.js +5 -9
- package/dist/lexicon/types/com/atproto/moderation/createReport.js.map +1 -1
- package/dist/lexicon/types/com/atproto/moderation/defs.js +10 -13
- package/dist/lexicon/types/com/atproto/moderation/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/applyWrites.d.ts +7 -7
- package/dist/lexicon/types/com/atproto/repo/applyWrites.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/applyWrites.js +15 -29
- package/dist/lexicon/types/com/atproto/repo/applyWrites.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/createRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/createRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/defs.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/repo/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/defs.js +5 -9
- package/dist/lexicon/types/com/atproto/repo/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/deleteRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/deleteRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/describeRepo.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/describeRepo.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/getRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/getRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/importRepo.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/importRepo.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.js +5 -9
- package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/listRecords.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/repo/listRecords.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/listRecords.js +5 -9
- package/dist/lexicon/types/com/atproto/repo/listRecords.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/putRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/putRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/strongRef.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/repo/strongRef.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/strongRef.js +5 -9
- package/dist/lexicon/types/com/atproto/repo/strongRef.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/uploadBlob.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/uploadBlob.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/activateAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/server/activateAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/checkAccountStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/server/checkAccountStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/confirmEmail.js +3 -5
- package/dist/lexicon/types/com/atproto/server/confirmEmail.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/server/createAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createAppPassword.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/server/createAppPassword.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createAppPassword.js +5 -9
- package/dist/lexicon/types/com/atproto/server/createAppPassword.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createInviteCode.js +3 -5
- package/dist/lexicon/types/com/atproto/server/createInviteCode.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createInviteCodes.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/server/createInviteCodes.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createInviteCodes.js +5 -9
- package/dist/lexicon/types/com/atproto/server/createInviteCodes.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createSession.js +3 -5
- package/dist/lexicon/types/com/atproto/server/createSession.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/deactivateAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/server/deactivateAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/defs.d.ts +2 -2
- package/dist/lexicon/types/com/atproto/server/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/defs.js +7 -13
- package/dist/lexicon/types/com/atproto/server/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/deleteAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/server/deleteAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/deleteSession.js +3 -5
- package/dist/lexicon/types/com/atproto/server/deleteSession.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/describeServer.d.ts +2 -2
- package/dist/lexicon/types/com/atproto/server/describeServer.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/describeServer.js +7 -13
- package/dist/lexicon/types/com/atproto/server/describeServer.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.js +3 -5
- package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/getServiceAuth.js +3 -5
- package/dist/lexicon/types/com/atproto/server/getServiceAuth.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/getSession.js +3 -5
- package/dist/lexicon/types/com/atproto/server/getSession.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/listAppPasswords.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/server/listAppPasswords.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/listAppPasswords.js +5 -9
- package/dist/lexicon/types/com/atproto/server/listAppPasswords.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/refreshSession.js +3 -5
- package/dist/lexicon/types/com/atproto/server/refreshSession.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/requestAccountDelete.js +3 -5
- package/dist/lexicon/types/com/atproto/server/requestAccountDelete.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/requestEmailConfirmation.js +3 -5
- package/dist/lexicon/types/com/atproto/server/requestEmailConfirmation.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.js +3 -5
- package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/requestPasswordReset.js +3 -5
- package/dist/lexicon/types/com/atproto/server/requestPasswordReset.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/reserveSigningKey.js +3 -5
- package/dist/lexicon/types/com/atproto/server/reserveSigningKey.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/resetPassword.js +3 -5
- package/dist/lexicon/types/com/atproto/server/resetPassword.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/revokeAppPassword.js +3 -5
- package/dist/lexicon/types/com/atproto/server/revokeAppPassword.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/updateEmail.js +3 -5
- package/dist/lexicon/types/com/atproto/server/updateEmail.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/defs.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getBlob.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getBlob.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getBlocks.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getBlocks.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getCheckout.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getCheckout.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getHead.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getHead.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getHostStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getHostStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getLatestCommit.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getLatestCommit.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getRepo.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getRepo.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getRepoStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getRepoStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listBlobs.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/listBlobs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listHosts.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/sync/listHosts.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listHosts.js +5 -9
- package/dist/lexicon/types/com/atproto/sync/listHosts.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listRepos.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/sync/listRepos.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listRepos.js +5 -9
- package/dist/lexicon/types/com/atproto/sync/listRepos.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listReposByCollection.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/sync/listReposByCollection.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listReposByCollection.js +5 -9
- package/dist/lexicon/types/com/atproto/sync/listReposByCollection.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/notifyOfUpdate.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/notifyOfUpdate.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/requestCrawl.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/requestCrawl.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/subscribeRepos.d.ts +7 -7
- package/dist/lexicon/types/com/atproto/sync/subscribeRepos.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/subscribeRepos.js +15 -29
- package/dist/lexicon/types/com/atproto/sync/subscribeRepos.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/addReservedHandle.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/addReservedHandle.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.d.ts +4 -4
- package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.js +9 -17
- package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/dereferenceScope.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/dereferenceScope.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/fetchLabels.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/fetchLabels.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/requestPhoneVerification.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/requestPhoneVerification.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/createTemplate.js +3 -5
- package/dist/lexicon/types/tools/ozone/communication/createTemplate.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/communication/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/defs.js +5 -9
- package/dist/lexicon/types/tools/ozone/communication/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/deleteTemplate.js +3 -5
- package/dist/lexicon/types/tools/ozone/communication/deleteTemplate.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/listTemplates.js +3 -5
- package/dist/lexicon/types/tools/ozone/communication/listTemplates.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/updateTemplate.js +3 -5
- package/dist/lexicon/types/tools/ozone/communication/updateTemplate.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.d.ts +7 -7
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.js +15 -29
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.js +7 -13
- package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +49 -49
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.js +106 -205
- package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.js +5 -9
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.js +7 -13
- package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getEvent.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getEvent.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRecord.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getRecord.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRecords.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRecords.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRecords.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getRecords.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRepo.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getRepo.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getReporterStats.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getReporterStats.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRepos.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRepos.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRepos.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getRepos.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getSubjects.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getSubjects.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts +5 -5
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js +11 -21
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/searchRepos.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/searchRepos.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/assignModerator.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/assignModerator.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/createQueue.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/createQueue.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/defs.d.ts +3 -3
- package/dist/lexicon/types/tools/ozone/queue/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/defs.js +9 -17
- package/dist/lexicon/types/tools/ozone/queue/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/deleteQueue.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/deleteQueue.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/getAssignments.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/getAssignments.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/listQueues.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/listQueues.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/routeReports.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/routeReports.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/unassignModerator.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/unassignModerator.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/updateQueue.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/updateQueue.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/assignModerator.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/assignModerator.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/createActivity.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/report/createActivity.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/createActivity.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/createActivity.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/defs.d.ts +13 -13
- package/dist/lexicon/types/tools/ozone/report/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/defs.js +67 -94
- package/dist/lexicon/types/tools/ozone/report/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getAssignments.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getAssignments.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getHistoricalStats.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getHistoricalStats.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getLatestReport.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getLatestReport.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getLiveStats.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getLiveStats.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getReport.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getReport.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/listActivities.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/listActivities.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/queryReports.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/queryReports.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/reassignQueue.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/reassignQueue.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/refreshStats.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/refreshStats.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/unassignModerator.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/unassignModerator.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/addRule.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/addRule.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/defs.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/safelink/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/defs.js +7 -13
- package/dist/lexicon/types/tools/ozone/safelink/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/queryEvents.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/queryEvents.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/queryRules.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/queryRules.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/removeRule.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/removeRule.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/updateRule.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/updateRule.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/server/getConfig.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/server/getConfig.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/server/getConfig.js +7 -13
- package/dist/lexicon/types/tools/ozone/server/getConfig.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/addValues.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/addValues.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/defs.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/set/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/defs.js +7 -13
- package/dist/lexicon/types/tools/ozone/set/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/deleteSet.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/deleteSet.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/deleteValues.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/deleteValues.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/getValues.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/getValues.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/querySets.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/querySets.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/upsertSet.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/upsertSet.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.js +5 -9
- package/dist/lexicon/types/tools/ozone/setting/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/listOptions.js +3 -5
- package/dist/lexicon/types/tools/ozone/setting/listOptions.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/removeOptions.js +3 -5
- package/dist/lexicon/types/tools/ozone/setting/removeOptions.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/upsertOption.js +3 -5
- package/dist/lexicon/types/tools/ozone/setting/upsertOption.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/signature/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/defs.js +5 -9
- package/dist/lexicon/types/tools/ozone/signature/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/findCorrelation.js +3 -5
- package/dist/lexicon/types/tools/ozone/signature/findCorrelation.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.js +5 -9
- package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/searchAccounts.js +3 -5
- package/dist/lexicon/types/tools/ozone/signature/searchAccounts.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/addMember.js +3 -5
- package/dist/lexicon/types/tools/ozone/team/addMember.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/team/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/defs.js +9 -14
- package/dist/lexicon/types/tools/ozone/team/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/deleteMember.js +3 -5
- package/dist/lexicon/types/tools/ozone/team/deleteMember.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/listMembers.js +3 -5
- package/dist/lexicon/types/tools/ozone/team/listMembers.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/updateMember.js +3 -5
- package/dist/lexicon/types/tools/ozone/team/updateMember.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/defs.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/verification/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/defs.js +5 -9
- package/dist/lexicon/types/tools/ozone/verification/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.js +7 -13
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/listVerifications.js +3 -5
- package/dist/lexicon/types/tools/ozone/verification/listVerifications.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.js +5 -9
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.js.map +1 -1
- package/dist/lexicon/util.js +3 -8
- package/dist/lexicon/util.js.map +1 -1
- package/dist/logger.js +11 -14
- package/dist/logger.js.map +1 -1
- package/dist/mod-service/expiring-tags.d.ts +2 -2
- package/dist/mod-service/expiring-tags.d.ts.map +1 -1
- package/dist/mod-service/expiring-tags.js +4 -10
- package/dist/mod-service/expiring-tags.js.map +1 -1
- package/dist/mod-service/index.d.ts +15 -15
- package/dist/mod-service/index.d.ts.map +1 -1
- package/dist/mod-service/index.js +126 -190
- package/dist/mod-service/index.js.map +1 -1
- package/dist/mod-service/profile.d.ts +1 -1
- package/dist/mod-service/profile.d.ts.map +1 -1
- package/dist/mod-service/profile.js +53 -78
- package/dist/mod-service/profile.js.map +1 -1
- package/dist/mod-service/report.d.ts +3 -3
- package/dist/mod-service/report.d.ts.map +1 -1
- package/dist/mod-service/report.js +22 -29
- package/dist/mod-service/report.js.map +1 -1
- package/dist/mod-service/status.d.ts +117 -117
- package/dist/mod-service/status.d.ts.map +1 -1
- package/dist/mod-service/status.js +30 -36
- package/dist/mod-service/status.js.map +1 -1
- package/dist/mod-service/strike.d.ts +1 -1
- package/dist/mod-service/strike.d.ts.map +1 -1
- package/dist/mod-service/strike.js +2 -11
- package/dist/mod-service/strike.js.map +1 -1
- package/dist/mod-service/subject.d.ts +7 -7
- package/dist/mod-service/subject.d.ts.map +1 -1
- package/dist/mod-service/subject.js +30 -145
- package/dist/mod-service/subject.js.map +1 -1
- package/dist/mod-service/types.d.ts +4 -4
- package/dist/mod-service/types.d.ts.map +1 -1
- package/dist/mod-service/types.js +1 -2
- package/dist/mod-service/types.js.map +1 -1
- package/dist/mod-service/util.d.ts +3 -3
- package/dist/mod-service/util.d.ts.map +1 -1
- package/dist/mod-service/util.js +18 -31
- package/dist/mod-service/util.js.map +1 -1
- package/dist/mod-service/views.d.ts +10 -10
- package/dist/mod-service/views.d.ts.map +1 -1
- package/dist/mod-service/views.js +76 -116
- package/dist/mod-service/views.js.map +1 -1
- package/dist/queue/service.d.ts +2 -2
- package/dist/queue/service.d.ts.map +1 -1
- package/dist/queue/service.js +23 -33
- package/dist/queue/service.js.map +1 -1
- package/dist/report/activity.d.ts +3 -3
- package/dist/report/activity.d.ts.map +1 -1
- package/dist/report/activity.js +12 -18
- package/dist/report/activity.js.map +1 -1
- package/dist/report/handle-report-update.js +9 -35
- package/dist/report/handle-report-update.js.map +1 -1
- package/dist/report/reassign.d.ts +2 -2
- package/dist/report/reassign.d.ts.map +1 -1
- package/dist/report/reassign.js +7 -10
- package/dist/report/reassign.js.map +1 -1
- package/dist/report/stats.d.ts +2 -2
- package/dist/report/stats.d.ts.map +1 -1
- package/dist/report/stats.js +41 -50
- package/dist/report/stats.js.map +1 -1
- package/dist/report/views.d.ts +20 -17
- package/dist/report/views.d.ts.map +1 -1
- package/dist/report/views.js +8 -15
- package/dist/report/views.js.map +1 -1
- package/dist/safelink/service.d.ts +3 -3
- package/dist/safelink/service.d.ts.map +1 -1
- package/dist/safelink/service.js +6 -15
- package/dist/safelink/service.js.map +1 -1
- package/dist/scheduled-action/service.d.ts +5 -5
- package/dist/scheduled-action/service.d.ts.map +1 -1
- package/dist/scheduled-action/service.js +7 -16
- package/dist/scheduled-action/service.js.map +1 -1
- package/dist/scheduled-action/types.d.ts +1 -1
- package/dist/scheduled-action/types.d.ts.map +1 -1
- package/dist/scheduled-action/types.js +1 -2
- package/dist/scheduled-action/types.js.map +1 -1
- package/dist/sequencer/index.d.ts +2 -2
- package/dist/sequencer/index.d.ts.map +1 -1
- package/dist/sequencer/index.js +2 -18
- package/dist/sequencer/index.js.map +1 -1
- package/dist/sequencer/outbox.d.ts +1 -1
- package/dist/sequencer/outbox.d.ts.map +1 -1
- package/dist/sequencer/outbox.js +9 -40
- package/dist/sequencer/outbox.js.map +1 -1
- package/dist/sequencer/sequencer.d.ts +9 -8
- package/dist/sequencer/sequencer.d.ts.map +1 -1
- package/dist/sequencer/sequencer.js +11 -56
- package/dist/sequencer/sequencer.js.map +1 -1
- package/dist/set/service.d.ts +4 -4
- package/dist/set/service.d.ts.map +1 -1
- package/dist/set/service.js +5 -14
- package/dist/set/service.js.map +1 -1
- package/dist/setting/constants.js +3 -6
- package/dist/setting/constants.js.map +1 -1
- package/dist/setting/service.d.ts +4 -4
- package/dist/setting/service.d.ts.map +1 -1
- package/dist/setting/service.js +6 -18
- package/dist/setting/service.js.map +1 -1
- package/dist/setting/types.js +1 -2
- package/dist/setting/validators.d.ts +1 -1
- package/dist/setting/validators.d.ts.map +1 -1
- package/dist/setting/validators.js +33 -36
- package/dist/setting/validators.js.map +1 -1
- package/dist/tag-service/content-tagger.d.ts +3 -3
- package/dist/tag-service/content-tagger.d.ts.map +1 -1
- package/dist/tag-service/content-tagger.js +4 -23
- package/dist/tag-service/content-tagger.js.map +1 -1
- package/dist/tag-service/embed-tagger.d.ts +1 -1
- package/dist/tag-service/embed-tagger.d.ts.map +1 -1
- package/dist/tag-service/embed-tagger.js +13 -22
- package/dist/tag-service/embed-tagger.js.map +1 -1
- package/dist/tag-service/index.d.ts +3 -3
- package/dist/tag-service/index.d.ts.map +1 -1
- package/dist/tag-service/index.js +12 -42
- package/dist/tag-service/index.js.map +1 -1
- package/dist/tag-service/language-data.js +4 -8
- package/dist/tag-service/language-data.js.map +1 -1
- package/dist/tag-service/language-tagger.d.ts +1 -1
- package/dist/tag-service/language-tagger.d.ts.map +1 -1
- package/dist/tag-service/language-tagger.js +13 -56
- package/dist/tag-service/language-tagger.js.map +1 -1
- package/dist/tag-service/util.d.ts +1 -1
- package/dist/tag-service/util.d.ts.map +1 -1
- package/dist/tag-service/util.js +1 -5
- package/dist/tag-service/util.js.map +1 -1
- package/dist/team/index.d.ts +5 -5
- package/dist/team/index.d.ts.map +1 -1
- package/dist/team/index.js +13 -37
- package/dist/team/index.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +19 -32
- package/dist/util.js.map +1 -1
- package/dist/verification/issuer.d.ts +2 -2
- package/dist/verification/issuer.d.ts.map +1 -1
- package/dist/verification/issuer.js +6 -25
- package/dist/verification/issuer.js.map +1 -1
- package/dist/verification/service.d.ts +2 -2
- package/dist/verification/service.d.ts.map +1 -1
- package/dist/verification/service.js +7 -16
- package/dist/verification/service.js.map +1 -1
- package/dist/verification/util.d.ts +3 -3
- package/dist/verification/util.d.ts.map +1 -1
- package/dist/verification/util.js +4 -8
- package/dist/verification/util.js.map +1 -1
- package/jest.config.cjs +22 -0
- package/package.json +28 -22
- package/src/api/chat/getActorMetadata.ts +3 -3
- package/src/api/chat/getMessageContext.ts +3 -3
- package/src/api/chat/index.ts +4 -4
- package/src/api/communication/createTemplate.ts +3 -3
- package/src/api/communication/deleteTemplate.ts +2 -2
- package/src/api/communication/listTemplates.ts +2 -2
- package/src/api/communication/updateTemplate.ts +3 -3
- package/src/api/health.ts +1 -1
- package/src/api/index.ts +71 -71
- package/src/api/label/fetchLabels.ts +2 -2
- package/src/api/label/queryLabels.ts +2 -2
- package/src/api/label/subscribeLabels.ts +3 -3
- package/src/api/moderation/cancelScheduledActions.ts +4 -4
- package/src/api/moderation/emitEvent.ts +16 -16
- package/src/api/moderation/getAccountTimeline.ts +4 -4
- package/src/api/moderation/getEvent.ts +2 -2
- package/src/api/moderation/getRecord.ts +3 -3
- package/src/api/moderation/getRecords.ts +3 -3
- package/src/api/moderation/getRepo.ts +3 -3
- package/src/api/moderation/getReporterStats.ts +2 -2
- package/src/api/moderation/getRepos.ts +3 -3
- package/src/api/moderation/getSubjects.ts +4 -4
- package/src/api/moderation/listScheduledActions.ts +3 -3
- package/src/api/moderation/queryEvents.ts +3 -3
- package/src/api/moderation/queryStatuses.ts +2 -2
- package/src/api/moderation/scheduleAction.ts +6 -6
- package/src/api/moderation/searchRepos.ts +3 -3
- package/src/api/moderation/util.ts +3 -3
- package/src/api/proxied.ts +3 -3
- package/src/api/queue/assignModerator.ts +3 -3
- package/src/api/queue/createQueue.ts +2 -2
- package/src/api/queue/deleteQueue.ts +2 -2
- package/src/api/queue/getAssignments.ts +2 -2
- package/src/api/queue/listQueues.ts +2 -2
- package/src/api/queue/routeReports.ts +2 -2
- package/src/api/queue/unassignModerator.ts +3 -3
- package/src/api/queue/updateQueue.ts +2 -2
- package/src/api/report/assignModerator.ts +3 -3
- package/src/api/report/createActivity.ts +4 -4
- package/src/api/report/createReport.ts +8 -8
- package/src/api/report/getAssignments.ts +2 -2
- package/src/api/report/getHistoricalStats.ts +3 -3
- package/src/api/report/getLatestReport.ts +5 -5
- package/src/api/report/getLiveStats.ts +3 -3
- package/src/api/report/getReport.ts +5 -5
- package/src/api/report/listActivities.ts +6 -3
- package/src/api/report/queryReports.ts +5 -5
- package/src/api/report/reassignQueue.ts +6 -6
- package/src/api/report/refreshStats.ts +2 -2
- package/src/api/report/unassignModerator.ts +3 -3
- package/src/api/safelink/addRule.ts +3 -3
- package/src/api/safelink/queryEvents.ts +3 -3
- package/src/api/safelink/queryRules.ts +3 -3
- package/src/api/safelink/removeRule.ts +3 -3
- package/src/api/safelink/updateRule.ts +3 -3
- package/src/api/server/getConfig.ts +2 -2
- package/src/api/set/addValues.ts +2 -2
- package/src/api/set/deleteSet.ts +2 -2
- package/src/api/set/deleteValues.ts +2 -2
- package/src/api/set/getValues.ts +2 -2
- package/src/api/set/querySets.ts +2 -2
- package/src/api/set/upsertSet.ts +2 -2
- package/src/api/setting/listOptions.ts +2 -2
- package/src/api/setting/removeOptions.ts +3 -3
- package/src/api/setting/upsertOption.ts +6 -6
- package/src/api/team/addMember.ts +3 -3
- package/src/api/team/deleteMember.ts +2 -2
- package/src/api/team/listMembers.ts +2 -2
- package/src/api/team/updateMember.ts +3 -3
- package/src/api/util.ts +10 -10
- package/src/api/verification/grantVerifications.ts +4 -4
- package/src/api/verification/listVerifications.ts +3 -3
- package/src/api/verification/revokeVerifications.ts +2 -2
- package/src/api/well-known.ts +1 -1
- package/src/assignment/index.ts +9 -9
- package/src/auth-verifier.ts +1 -1
- package/src/background.ts +9 -5
- package/src/communication-service/template.ts +3 -3
- package/src/config/config.ts +1 -1
- package/src/config/index.ts +3 -3
- package/src/config/secrets.ts +1 -1
- package/src/context.ts +29 -23
- package/src/daemon/blob-diverter.ts +3 -3
- package/src/daemon/context.ts +20 -20
- package/src/daemon/event-pusher.ts +7 -7
- package/src/daemon/event-reverser.ts +8 -5
- package/src/daemon/index.ts +8 -8
- package/src/daemon/job-cursor.ts +1 -1
- package/src/daemon/materialized-view-refresher.ts +2 -2
- package/src/daemon/queue-router.ts +4 -4
- package/src/daemon/scheduled-action-processor.ts +14 -11
- package/src/daemon/stats-computer.ts +3 -3
- package/src/daemon/strike-expiry-processor.ts +4 -4
- package/src/daemon/team-profile-synchronizer.ts +2 -2
- package/src/daemon/verification-listener.ts +5 -5
- package/src/db/index.ts +13 -9
- package/src/db/migrations/20241220T144630860Z-stats-materialized-views.ts +6 -6
- package/src/db/migrations/20250718T150931000Z-update-appeal-reason-stats.ts +5 -5
- package/src/db/migrations/index.ts +38 -38
- package/src/db/pagination.ts +1 -1
- package/src/db/schema/index.ts +27 -27
- package/src/db/schema/moderation_subject_status.ts +1 -1
- package/src/db/schema/safelink.ts +1 -1
- package/src/db/schema/setting.ts +1 -1
- package/src/db/types.ts +3 -1
- package/src/error.ts +1 -1
- package/src/index.ts +19 -15
- package/src/jetstream/service.ts +1 -0
- package/src/lexicon/index.ts +6 -6
- package/src/lexicon/lexicons.ts +638 -14
- package/src/lexicon/types/app/bsky/actor/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/getPreferences.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/getProfile.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/getProfiles.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/getSuggestions.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/profile.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/putPreferences.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/searchActors.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/status.ts +2 -2
- package/src/lexicon/types/app/bsky/ageassurance/begin.ts +2 -2
- package/src/lexicon/types/app/bsky/ageassurance/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/ageassurance/getConfig.ts +2 -2
- package/src/lexicon/types/app/bsky/ageassurance/getState.ts +2 -2
- package/src/lexicon/types/app/bsky/bookmark/createBookmark.ts +2 -2
- package/src/lexicon/types/app/bsky/bookmark/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/bookmark/deleteBookmark.ts +2 -2
- package/src/lexicon/types/app/bsky/bookmark/getBookmarks.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/dismissMatch.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/getMatches.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/getSyncStatus.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/importContacts.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/removeData.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/sendNotification.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/startPhoneVerification.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/verifyPhone.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/createDraft.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/deleteDraft.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/getDrafts.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/updateDraft.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/external.ts +4 -3
- package/src/lexicon/types/app/bsky/embed/images.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/record.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/recordWithMedia.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/video.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/generator.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getActorFeeds.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getActorLikes.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getAuthorFeed.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getFeed.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getFeedGenerator.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getFeedGenerators.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getLikes.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getListFeed.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getPostThread.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getPosts.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getQuotes.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getRepostedBy.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getTimeline.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/like.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/post.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/postgate.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/repost.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/searchPosts.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/sendInteractions.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/threadgate.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/block.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/follow.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getActorStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getBlocks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getFollowers.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getFollows.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getKnownFollowers.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getList.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getListBlocks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getListMutes.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getLists.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getListsWithMembership.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getMutes.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getRelationships.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getStarterPack.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/list.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/listblock.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/listitem.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/muteActor.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/muteActorList.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/muteThread.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/searchStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/starterpack.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/unmuteActor.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/unmuteActorList.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/unmuteThread.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/verification.ts +2 -2
- package/src/lexicon/types/app/bsky/labeler/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/labeler/getServices.ts +2 -2
- package/src/lexicon/types/app/bsky/labeler/service.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/declaration.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/getPreferences.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/getUnreadCount.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/listActivitySubscriptions.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/listNotifications.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/putActivitySubscription.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/putPreferences.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/putPreferencesV2.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/registerPush.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/unregisterPush.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/updateSeen.ts +2 -2
- package/src/lexicon/types/app/bsky/richtext/facet.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getConfig.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getPostThreadV2.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsers.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscover.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExplore.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getTrendingTopics.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getTrends.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/initAgeAssurance.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/video/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/video/getJobStatus.ts +2 -2
- package/src/lexicon/types/app/bsky/video/getUploadLimits.ts +2 -2
- package/src/lexicon/types/app/bsky/video/uploadVideo.ts +2 -2
- package/src/lexicon/types/chat/bsky/actor/declaration.ts +2 -2
- package/src/lexicon/types/chat/bsky/actor/defs.ts +2 -2
- package/src/lexicon/types/chat/bsky/actor/deleteAccount.ts +2 -2
- package/src/lexicon/types/chat/bsky/actor/exportAccountData.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/acceptConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/addReaction.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/defs.ts +19 -3
- package/src/lexicon/types/chat/bsky/convo/deleteMessageForSelf.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getConvoAvailability.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getConvoForMembers.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getConvoMembers.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getLog.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getMessages.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/leaveConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/listConvoRequests.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/listConvos.ts +4 -2
- package/src/lexicon/types/chat/bsky/convo/lockConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/muteConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/removeReaction.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/sendMessage.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/sendMessageBatch.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/unlockConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/unmuteConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/updateAllRead.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/updateRead.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/addMembers.ts +3 -3
- package/src/lexicon/types/chat/bsky/group/approveJoinRequest.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/createGroup.ts +3 -3
- package/src/lexicon/types/chat/bsky/group/createJoinLink.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/defs.ts +11 -9
- package/src/lexicon/types/chat/bsky/group/disableJoinLink.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/editGroup.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/editJoinLink.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/enableJoinLink.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/{getGroupPublicInfo.ts → getJoinLinkPreview.ts} +4 -4
- package/src/lexicon/types/chat/bsky/group/listJoinRequests.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/rejectJoinRequest.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/removeMembers.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/requestJoin.ts +2 -2
- package/src/lexicon/types/chat/bsky/moderation/getActorMetadata.ts +2 -2
- package/src/lexicon/types/chat/bsky/moderation/getMessageContext.ts +6 -3
- package/src/lexicon/types/chat/bsky/moderation/subscribeModEvents.ts +342 -3
- package/src/lexicon/types/chat/bsky/moderation/updateActorAccess.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/deleteAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/disableAccountInvites.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/disableInviteCodes.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/enableAccountInvites.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/getAccountInfo.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/getAccountInfos.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/getInviteCodes.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/getSubjectStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/searchAccounts.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/sendEmail.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateAccountEmail.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateAccountHandle.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateAccountPassword.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/refreshIdentity.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/requestPlcOperationSignature.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/resolveDid.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/resolveHandle.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/resolveIdentity.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/signPlcOperation.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/submitPlcOperation.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/updateHandle.ts +2 -2
- package/src/lexicon/types/com/atproto/label/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/label/queryLabels.ts +2 -2
- package/src/lexicon/types/com/atproto/label/subscribeLabels.ts +2 -2
- package/src/lexicon/types/com/atproto/lexicon/resolveLexicon.ts +2 -2
- package/src/lexicon/types/com/atproto/lexicon/schema.ts +2 -2
- package/src/lexicon/types/com/atproto/moderation/createReport.ts +2 -2
- package/src/lexicon/types/com/atproto/moderation/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/applyWrites.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/createRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/deleteRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/describeRepo.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/getRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/importRepo.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/listMissingBlobs.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/listRecords.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/putRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/strongRef.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/uploadBlob.ts +2 -2
- package/src/lexicon/types/com/atproto/server/activateAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/server/checkAccountStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/server/confirmEmail.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createAppPassword.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createInviteCode.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createInviteCodes.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createSession.ts +2 -2
- package/src/lexicon/types/com/atproto/server/deactivateAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/server/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/server/deleteAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/server/deleteSession.ts +2 -2
- package/src/lexicon/types/com/atproto/server/describeServer.ts +2 -2
- package/src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts +2 -2
- package/src/lexicon/types/com/atproto/server/getServiceAuth.ts +2 -2
- package/src/lexicon/types/com/atproto/server/getSession.ts +2 -2
- package/src/lexicon/types/com/atproto/server/listAppPasswords.ts +2 -2
- package/src/lexicon/types/com/atproto/server/refreshSession.ts +2 -2
- package/src/lexicon/types/com/atproto/server/requestAccountDelete.ts +2 -2
- package/src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts +2 -2
- package/src/lexicon/types/com/atproto/server/requestEmailUpdate.ts +2 -2
- package/src/lexicon/types/com/atproto/server/requestPasswordReset.ts +2 -2
- package/src/lexicon/types/com/atproto/server/reserveSigningKey.ts +2 -2
- package/src/lexicon/types/com/atproto/server/resetPassword.ts +2 -2
- package/src/lexicon/types/com/atproto/server/revokeAppPassword.ts +2 -2
- package/src/lexicon/types/com/atproto/server/updateEmail.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getBlob.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getBlocks.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getCheckout.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getHead.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getHostStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getLatestCommit.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getRepo.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getRepoStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/listBlobs.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/listHosts.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/listRepos.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/listReposByCollection.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/requestCrawl.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/subscribeRepos.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/addReservedHandle.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/checkHandleAvailability.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/checkSignupQueue.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/dereferenceScope.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/fetchLabels.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/revokeAccountCredentials.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/createTemplate.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/deleteTemplate.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/listTemplates.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/updateTemplate.ts +2 -2
- package/src/lexicon/types/tools/ozone/hosting/getAccountHistory.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/cancelScheduledActions.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/emitEvent.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getAccountTimeline.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getEvent.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getRecord.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getRecords.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getRepo.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getReporterStats.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getRepos.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getSubjects.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/listScheduledActions.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/queryEvents.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/queryStatuses.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/scheduleAction.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/searchRepos.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/assignModerator.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/createQueue.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/deleteQueue.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/getAssignments.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/listQueues.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/routeReports.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/unassignModerator.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/updateQueue.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/assignModerator.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/createActivity.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getAssignments.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getHistoricalStats.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getLatestReport.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getLiveStats.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getReport.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/listActivities.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/queryReports.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/reassignQueue.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/refreshStats.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/unassignModerator.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/addRule.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/queryEvents.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/queryRules.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/removeRule.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/updateRule.ts +2 -2
- package/src/lexicon/types/tools/ozone/server/getConfig.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/addValues.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/deleteSet.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/deleteValues.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/getValues.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/querySets.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/upsertSet.ts +2 -2
- package/src/lexicon/types/tools/ozone/setting/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/setting/listOptions.ts +2 -2
- package/src/lexicon/types/tools/ozone/setting/removeOptions.ts +2 -2
- package/src/lexicon/types/tools/ozone/setting/upsertOption.ts +2 -2
- package/src/lexicon/types/tools/ozone/signature/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/signature/findCorrelation.ts +2 -2
- package/src/lexicon/types/tools/ozone/signature/findRelatedAccounts.ts +2 -2
- package/src/lexicon/types/tools/ozone/signature/searchAccounts.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/addMember.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/deleteMember.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/listMembers.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/updateMember.ts +2 -2
- package/src/lexicon/types/tools/ozone/verification/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/verification/grantVerifications.ts +2 -2
- package/src/lexicon/types/tools/ozone/verification/listVerifications.ts +2 -2
- package/src/lexicon/types/tools/ozone/verification/revokeVerifications.ts +2 -2
- package/src/mod-service/expiring-tags.ts +2 -2
- package/src/mod-service/index.ts +30 -27
- package/src/mod-service/profile.ts +3 -3
- package/src/mod-service/report.ts +4 -4
- package/src/mod-service/status.ts +6 -6
- package/src/mod-service/strike.ts +1 -1
- package/src/mod-service/subject.ts +7 -7
- package/src/mod-service/types.ts +4 -4
- package/src/mod-service/util.ts +3 -3
- package/src/mod-service/views.ts +16 -16
- package/src/queue/service.ts +7 -7
- package/src/report/activity.ts +3 -3
- package/src/report/reassign.ts +2 -2
- package/src/report/stats.ts +5 -5
- package/src/report/views.ts +11 -13
- package/src/safelink/service.ts +3 -3
- package/src/scheduled-action/service.ts +6 -6
- package/src/scheduled-action/types.ts +1 -1
- package/src/sequencer/index.ts +2 -2
- package/src/sequencer/outbox.ts +1 -1
- package/src/sequencer/sequencer.ts +11 -9
- package/src/set/service.ts +4 -4
- package/src/setting/service.ts +4 -4
- package/src/setting/validators.ts +2 -2
- package/src/tag-service/content-tagger.ts +3 -3
- package/src/tag-service/embed-tagger.ts +3 -3
- package/src/tag-service/index.ts +7 -7
- package/src/tag-service/language-tagger.ts +4 -5
- package/src/tag-service/util.ts +1 -1
- package/src/team/index.ts +7 -7
- package/src/util.ts +1 -1
- package/src/verification/issuer.ts +2 -2
- package/src/verification/service.ts +3 -3
- package/src/verification/util.ts +7 -4
- package/tests/3p-labeler.test.ts +2 -2
- package/tests/__snapshots__/account-strikes.test.ts.snap +36 -36
- package/tests/__snapshots__/age-assurance.test.ts.snap +13 -13
- package/tests/__snapshots__/blob-divert.test.ts.snap +52 -52
- package/tests/__snapshots__/get-account-timeline.test.ts.snap +8 -8
- package/tests/__snapshots__/get-record.test.ts.snap +68 -68
- package/tests/__snapshots__/get-records.test.ts.snap +46 -46
- package/tests/__snapshots__/get-repo.test.ts.snap +22 -22
- package/tests/__snapshots__/get-repos.test.ts.snap +33 -33
- package/tests/__snapshots__/get-starter-pack.test.ts.snap +141 -141
- package/tests/__snapshots__/get-subjects.test.ts.snap +108 -108
- package/tests/__snapshots__/moderation-events.test.ts.snap +79 -79
- package/tests/__snapshots__/moderation-statuses.test.ts.snap +45 -45
- package/tests/__snapshots__/moderation.test.ts.snap +16 -16
- package/tests/__snapshots__/report-reason.test.ts.snap +3 -3
- package/tests/__snapshots__/safelink.test.ts.snap +19 -19
- package/tests/__snapshots__/scheduled-action.test.ts.snap +11 -11
- package/tests/__snapshots__/sets.test.ts.snap +7 -7
- package/tests/__snapshots__/settings.test.ts.snap +10 -10
- package/tests/__snapshots__/team.test.ts.snap +64 -64
- package/tests/__snapshots__/verification-listener.test.ts.snap +35 -35
- package/tests/__snapshots__/verification.test.ts.snap +71 -71
- package/tests/_util.ts +3 -3
- package/tests/account-strikes.test.ts +3 -3
- package/tests/ack-all-subjects-of-account.test.ts +3 -3
- package/tests/age-assurance.test.ts +1 -1
- package/tests/blob-divert.test.ts +2 -1
- package/tests/communication-templates.test.ts +1 -1
- package/tests/content-tagger.test.ts +2 -2
- package/tests/db.test.ts +1 -1
- package/tests/expiring-label.test.ts +1 -1
- package/tests/expiring-tags.test.ts +2 -2
- package/tests/get-account-timeline.test.ts +3 -3
- package/tests/get-config.test.ts +2 -2
- package/tests/get-lists.test.ts +2 -2
- package/tests/get-record.test.ts +3 -3
- package/tests/get-records.test.ts +3 -3
- package/tests/get-repo.test.ts +3 -3
- package/tests/get-report.test.ts +2 -2
- package/tests/get-repos.test.ts +3 -3
- package/tests/get-starter-pack.test.ts +3 -3
- package/tests/get-subjects.test.ts +3 -3
- package/tests/moderation-appeals.test.ts +2 -2
- package/tests/moderation-events.test.ts +4 -4
- package/tests/moderation-status-tags.test.ts +1 -1
- package/tests/moderation-statuses.test.ts +5 -5
- package/tests/moderation.test.ts +7 -7
- package/tests/protected-tags.test.ts +2 -2
- package/tests/query-labels.test.ts +5 -5
- package/tests/query-reports.test.ts +2 -2
- package/tests/queue-assignment.test.ts +1 -1
- package/tests/queue-router.test.ts +1 -1
- package/tests/queues.test.ts +1 -1
- package/tests/record-and-account-events.test.ts +5 -5
- package/tests/repo-search.test.ts +3 -3
- package/tests/report-action.test.ts +1 -1
- package/tests/report-activity.test.ts +2 -2
- package/tests/report-assignment.test.ts +1 -1
- package/tests/report-muting.test.ts +1 -1
- package/tests/report-reason.test.ts +3 -3
- package/tests/report-reassign-queue.test.ts +2 -2
- package/tests/report-routing.test.ts +1 -1
- package/tests/report-stats.test.ts +2 -2
- package/tests/safelink.test.ts +2 -2
- package/tests/scheduled-action-processor.test.ts +3 -3
- package/tests/scheduled-action.test.ts +2 -2
- package/tests/sequencer.test.ts +3 -3
- package/tests/server.test.ts +2 -2
- package/tests/sets.test.ts +2 -2
- package/tests/settings.test.ts +3 -3
- package/tests/strike-expiry-processor.test.ts +2 -2
- package/tests/subject-priority-score.test.ts +1 -1
- package/tests/team.test.ts +1 -1
- package/tests/verification-listener.test.ts +1 -1
- package/tests/verification.test.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/lexicon/types/chat/bsky/group/getGroupPublicInfo.d.ts.map +0 -1
- package/dist/lexicon/types/chat/bsky/group/getGroupPublicInfo.js +0 -7
- package/dist/lexicon/types/chat/bsky/group/getGroupPublicInfo.js.map +0 -1
- package/jest.config.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mod-service/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Insertable, RawBuilder, sql } from 'kysely'\nimport { CID } from 'multiformats/cid'\nimport { AtpAgent, ToolsOzoneModerationDefs } from '@atproto/api'\nimport { addHoursToDate, chunkArray } from '@atproto/common'\nimport { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { AtUri, INVALID_HANDLE } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport { getReviewState } from '../api/util'\nimport { BackgroundQueue } from '../background'\nimport { OzoneConfig } from '../config'\nimport { EventPusher } from '../daemon'\nimport { Database } from '../db'\nimport { StatusKeyset, TimeIdKeyset, paginate } from '../db/pagination'\nimport { BlobPushEvent } from '../db/schema/blob_push_event'\nimport { LabelChannel } from '../db/schema/label'\nimport { ModerationEvent } from '../db/schema/moderation_event'\nimport { jsonb } from '../db/types'\nimport { ImageInvalidator } from '../image-invalidator'\nimport { ids } from '../lexicon/lexicons'\nimport { RepoBlobRef, RepoRef } from '../lexicon/types/com/atproto/admin/defs'\nimport { Label } from '../lexicon/types/com/atproto/label/defs'\nimport { ReasonType } from '../lexicon/types/com/atproto/moderation/defs'\nimport { Main as StrongRef } from '../lexicon/types/com/atproto/repo/strongRef'\nimport {\n REVIEWESCALATED,\n REVIEWOPEN,\n isAccountEvent,\n isAgeAssuranceEvent,\n isAgeAssuranceOverrideEvent,\n isAgeAssurancePurgeEvent,\n isIdentityEvent,\n isModEventAcknowledge,\n isModEventComment,\n isModEventEmail,\n isModEventLabel,\n isModEventMute,\n isModEventPriorityScore,\n isModEventReport,\n isModEventReverseTakedown,\n isModEventTag,\n isModEventTakedown,\n isRecordEvent,\n isScheduleTakedownEvent,\n} from '../lexicon/types/tools/ozone/moderation/defs'\nimport { QueryParams as QueryStatusParams } from '../lexicon/types/tools/ozone/moderation/queryStatuses'\nimport { httpLogger as log } from '../logger'\nimport { LABELER_HEADER_NAME, ParsedLabelers } from '../util'\nimport { insertExpiringTags, removeExpiringTags } from './expiring-tags'\nimport {\n adjustModerationSubjectStatus,\n getStatusIdentifierFromSubject,\n moderationSubjectStatusQueryBuilder,\n} from './status'\nimport { StrikeService, StrikeServiceCreator } from './strike'\nimport {\n ModSubject,\n RecordSubject,\n RepoSubject,\n subjectFromStatusRow,\n} from './subject'\nimport {\n ModEventType,\n ModerationEventRow,\n ModerationEventRowWithHandle,\n ModerationSubjectStatusRow,\n ModerationSubjectStatusRowWithHandle,\n ReporterStats,\n ReporterStatsResult,\n ReversibleModerationEvent,\n} from './types'\nimport {\n dateFromDbDatetime,\n formatLabel,\n formatLabelRow,\n getPdsAgentForRepo,\n signLabel,\n} from './util'\nimport { AuthHeaders, ModerationViews } from './views'\n\nexport type ModerationServiceCreator = (db: Database) => ModerationService\n\nexport class ModerationService {\n constructor(\n public db: Database,\n public signingKey: Keypair,\n public signingKeyId: number,\n public cfg: OzoneConfig,\n public backgroundQueue: BackgroundQueue,\n public idResolver: IdResolver,\n public eventPusher: EventPusher,\n public appviewAgent: AtpAgent,\n private createAuthHeaders: (\n aud: string,\n method: string,\n ) => Promise<AuthHeaders>,\n public strikeService: StrikeService,\n public imgInvalidator?: ImageInvalidator,\n ) {}\n\n static creator(\n signingKey: Keypair,\n signingKeyId: number,\n cfg: OzoneConfig,\n backgroundQueue: BackgroundQueue,\n idResolver: IdResolver,\n eventPusher: EventPusher,\n appviewAgent: AtpAgent,\n createAuthHeaders: (aud: string, method: string) => Promise<AuthHeaders>,\n strikeServiceCreator: StrikeServiceCreator,\n imgInvalidator?: ImageInvalidator,\n ) {\n return (db: Database) => {\n const strikeService = strikeServiceCreator(db)\n return new ModerationService(\n db,\n signingKey,\n signingKeyId,\n cfg,\n backgroundQueue,\n idResolver,\n eventPusher,\n appviewAgent,\n createAuthHeaders,\n strikeService,\n imgInvalidator,\n )\n }\n }\n\n views = new ModerationViews(\n this.db,\n this.signingKey,\n this.signingKeyId,\n this.appviewAgent,\n async (method: string, labelers?: ParsedLabelers) => {\n const authHeaders = await this.createAuthHeaders(\n this.cfg.appview.did,\n method,\n )\n if (labelers?.dids?.length) {\n authHeaders.headers[LABELER_HEADER_NAME] = labelers.dids.join(', ')\n }\n return authHeaders\n },\n this.idResolver,\n this.cfg.service.devMode,\n )\n\n async getEvent(id: number): Promise<ModerationEventRow | undefined> {\n return await this.db.db\n .selectFrom('moderation_event')\n .selectAll()\n .where('id', '=', id)\n .executeTakeFirst()\n }\n\n async getEventOrThrow(id: number): Promise<ModerationEventRow> {\n const event = await this.getEvent(id)\n if (!event) throw new InvalidRequestError('Moderation event not found')\n return event\n }\n\n async getEventByExternalId(\n eventType: ModerationEvent['action'],\n externalId: string,\n subject: ModSubject,\n ): Promise<boolean> {\n const result = await this.db.db\n .selectFrom('moderation_event')\n .where('action', '=', eventType)\n .where('externalId', '=', externalId)\n .where('subjectDid', '=', subject.did)\n .select(sql`1`.as('exists'))\n .limit(1)\n .executeTakeFirst()\n return !!result\n }\n\n async getEvents(opts: {\n subject?: string\n createdBy?: string\n limit: number\n cursor?: string\n includeAllUserRecords: boolean\n types: ModerationEvent['action'][]\n sortDirection?: 'asc' | 'desc'\n hasComment?: boolean\n comment?: string\n createdAfter?: string\n createdBefore?: string\n addedLabels: string[]\n removedLabels: string[]\n addedTags: string[]\n removedTags: string[]\n reportTypes?: string[]\n collections: string[]\n subjectType?: string\n policies?: string[]\n modTool?: string[]\n ageAssuranceState?: string\n batchId?: string\n withStrike?: boolean\n }): Promise<{ cursor?: string; events: ModerationEventRow[] }> {\n const {\n subject,\n createdBy,\n limit,\n cursor,\n includeAllUserRecords,\n sortDirection = 'desc',\n types,\n hasComment,\n comment,\n createdAfter,\n createdBefore,\n addedLabels,\n removedLabels,\n addedTags,\n removedTags,\n reportTypes,\n collections,\n subjectType,\n policies,\n modTool,\n ageAssuranceState,\n batchId,\n withStrike,\n } = opts\n const { ref } = this.db.db.dynamic\n let builder = this.db.db.selectFrom('moderation_event').selectAll()\n\n if (subject) {\n const isSubjectAtUri = subject.startsWith('at://')\n const subjectDid = isSubjectAtUri ? new AtUri(subject).hostname : subject\n const subjectUri = isSubjectAtUri ? subject : null\n // regardless of subjectUri check, we always want to query against subjectDid column since that's indexed\n builder = builder.where('subjectDid', '=', subjectDid)\n\n // if requester wants to include all user records, let's ignore matching on subjectUri\n if (!includeAllUserRecords) {\n builder = builder\n .if(!subjectUri, (q) => q.where('subjectUri', 'is', null))\n .if(!!subjectUri, (q) => q.where('subjectUri', '=', subjectUri))\n }\n } else if (subjectType === 'account') {\n builder = builder.where('subjectUri', 'is', null)\n } else if (subjectType === 'record') {\n builder = builder.where('subjectUri', 'is not', null)\n }\n\n // If subjectType is set to 'account' let that take priority and ignore collections filter\n if (collections.length && subjectType !== 'account') {\n builder = builder.where('subjectUri', 'is not', null).where((qb) => {\n collections.forEach((collection) => {\n qb = qb.orWhere('subjectUri', 'like', `%/${collection}/%`)\n })\n return qb\n })\n }\n\n if (types.length) {\n builder = builder.where((qb) => {\n if (types.length === 1) {\n return qb.where('action', '=', types[0])\n }\n\n return qb.where('action', 'in', types)\n })\n }\n if (createdBy) {\n builder = builder.where('createdBy', '=', createdBy)\n }\n if (createdAfter) {\n builder = builder.where('createdAt', '>=', createdAfter)\n }\n if (createdBefore) {\n builder = builder.where('createdAt', '<=', createdBefore)\n }\n\n if (comment) {\n // the input may end in || in which case, there may be item in the array which is just '' and we want to ignore those\n const keywords = comment.split('||').filter((keyword) => !!keyword.trim())\n if (keywords.length > 1) {\n builder = builder.where((qb) => {\n keywords.forEach((keyword) => {\n qb = qb.orWhere('comment', 'ilike', `%${keyword}%`)\n })\n return qb\n })\n } else if (keywords.length === 1) {\n builder = builder.where('comment', 'ilike', `%${keywords[0]}%`)\n }\n }\n if (hasComment) {\n builder = builder.where('comment', 'is not', null)\n }\n\n // If multiple labels are passed, then only retrieve events where all those labels exist\n if (addedLabels.length) {\n addedLabels.forEach((label) => {\n builder = builder.where('createLabelVals', 'ilike', `%${label}%`)\n })\n }\n if (removedLabels.length) {\n removedLabels.forEach((label) => {\n builder = builder.where('negateLabelVals', 'ilike', `%${label}%`)\n })\n }\n if (addedTags.length) {\n builder = builder.where(sql`${ref('addedTags')} @> ${jsonb(addedTags)}`)\n }\n if (removedTags.length) {\n builder = builder.where(\n sql`${ref('removedTags')} @> ${jsonb(removedTags)}`,\n )\n }\n if (reportTypes?.length) {\n builder = builder.where(sql`meta->>'reportType'`, 'in', reportTypes)\n }\n if (policies?.length) {\n builder = builder.where((qb) => {\n policies.forEach((policy) => {\n qb = qb.orWhere(sql`meta->>'policies'`, 'ilike', `%${policy}%`)\n })\n return qb\n })\n }\n if (modTool?.length) {\n builder = builder\n .where('modTool', 'is not', null)\n .where(sql`(\"modTool\" ->> 'name')`, 'in', modTool)\n }\n if (batchId) {\n builder = builder\n .where('modTool', 'is not', null)\n .where(sql`(\"modTool\" -> 'meta' ->> 'batchId')`, '=', batchId)\n }\n if (ageAssuranceState) {\n builder = builder\n .where('action', 'in', [\n 'tools.ozone.moderation.defs#ageAssuranceEvent',\n 'tools.ozone.moderation.defs#ageAssuranceOverrideEvent',\n ])\n .where(sql`meta->>'status'`, '=', ageAssuranceState)\n }\n\n if (withStrike !== undefined) {\n builder = builder.where('strikeCount', 'is not', null)\n }\n\n const keyset = new TimeIdKeyset(\n ref(`moderation_event.createdAt`),\n ref('moderation_event.id'),\n )\n const paginatedBuilder = paginate(builder, {\n limit,\n cursor,\n keyset,\n direction: sortDirection,\n tryIndex: true,\n })\n\n const result = await paginatedBuilder.execute()\n\n const infos = await this.views.getAccoutInfosByDid([\n ...result.map((row) => row.subjectDid),\n ...result.map((row) => row.createdBy),\n ])\n\n const resultWithHandles = result.map((r) => ({\n ...r,\n creatorHandle: infos.get(r.createdBy)?.handle,\n subjectHandle: infos.get(r.subjectDid)?.handle,\n }))\n\n return { cursor: keyset.packFromResult(result), events: resultWithHandles }\n }\n\n async getEventsByIds(ids: number[]): Promise<ModerationEventRowWithHandle[]> {\n if (!ids.length) return []\n\n const result = await this.db.db\n .selectFrom('moderation_event')\n .selectAll()\n .where('id', 'in', ids)\n .execute()\n\n if (!result.length) return []\n\n const infos = await this.views.getAccoutInfosByDid([\n ...result.map((row) => row.subjectDid),\n ...result.map((row) => row.createdBy),\n ])\n\n return result.map((r) => ({\n ...r,\n creatorHandle: infos.get(r.createdBy)?.handle,\n subjectHandle: infos.get(r.subjectDid)?.handle,\n }))\n }\n\n async getReport(id: number): Promise<ModerationEventRow | undefined> {\n return await this.db.db\n .selectFrom('moderation_event')\n .where('action', '=', 'tools.ozone.moderation.defs#modEventReport')\n .selectAll()\n .where('id', '=', id)\n .executeTakeFirst()\n }\n\n async getCurrentStatus(\n subject: { did: string } | { uri: AtUri } | { cids: CID[] },\n ) {\n let builder = this.db.db.selectFrom('moderation_subject_status').selectAll()\n if ('did' in subject) {\n builder = builder.where('did', '=', subject.did)\n } else if ('uri' in subject) {\n builder = builder.where('recordPath', '=', subject.uri.toString())\n }\n // TODO: Handle the cid status\n return await builder.execute()\n }\n\n async resolveSubjectsForAccount(\n did: string,\n createdBy: string,\n accountEvent: ModerationEventRow,\n ) {\n const subjectsToBeResolved = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', did)\n .where('recordPath', '!=', '')\n .where('reviewState', 'in', [REVIEWESCALATED, REVIEWOPEN])\n .selectAll()\n .execute()\n\n if (subjectsToBeResolved.length === 0) {\n return\n }\n\n let accountEventInfo = `Account Event ID: ${accountEvent.id}`\n if (accountEvent.comment) {\n accountEventInfo += ` | Account Event Comment: ${accountEvent.comment}`\n }\n // Process subjects in chunks of 100 since each of these will trigger multiple db queries\n for (const subjects of chunkArray(subjectsToBeResolved, 100)) {\n await Promise.all(\n subjects.map(async (subject) => {\n const eventData = {\n createdBy,\n subject: subjectFromStatusRow(subject),\n }\n\n // For consistency's sake, when acknowledging appealed subjects, we should first resolve the appeal\n if (subject.appealed) {\n await this.logEvent({\n event: {\n $type: 'tools.ozone.moderation.defs#modEventResolveAppeal',\n comment: `[AUTO_RESOLVE_ON_ACCOUNT_ACTION]: Automatically resolving all appealed content due to account level action | ${accountEventInfo}`,\n },\n ...eventData,\n })\n }\n\n await this.logEvent({\n event: {\n $type: 'tools.ozone.moderation.defs#modEventAcknowledge',\n comment: `[AUTO_RESOLVE_ON_ACCOUNT_ACTION]: Automatically resolving all reported content due to account level action | ${accountEventInfo}`,\n },\n ...eventData,\n })\n }),\n )\n }\n }\n\n async logEvent(info: {\n event: ModEventType\n subject: ModSubject\n createdBy: string\n createdAt?: Date\n modTool?: ToolsOzoneModerationDefs.ModTool\n externalId?: string\n }): Promise<{\n event: ModerationEventRow\n subjectStatus: ModerationSubjectStatusRow | null\n }> {\n this.db.assertTransaction()\n const {\n event,\n subject,\n createdBy,\n externalId,\n createdAt = new Date(),\n modTool,\n } = info\n\n const createLabelVals =\n isModEventLabel(event) && event.createLabelVals.length > 0\n ? event.createLabelVals.join(' ')\n : undefined\n const negateLabelVals =\n isModEventLabel(event) && event.negateLabelVals.length > 0\n ? event.negateLabelVals.join(' ')\n : undefined\n\n const meta: Record<string, string | number | boolean> = {}\n\n const addedTags = isModEventTag(event) ? jsonb(event.add) : null\n const removedTags = isModEventTag(event) ? jsonb(event.remove) : null\n\n if (isModEventReport(event)) {\n meta.reportType = event.reportType\n }\n\n if (isModEventComment(event) && event.sticky) {\n meta.sticky = event.sticky\n }\n\n if (isModEventEmail(event)) {\n meta.subjectLine = event.subjectLine\n meta.isDelivered = !!event.isDelivered\n if (event.content) {\n meta.content = event.content\n }\n if (event.policies?.length) {\n meta.policies = event.policies.join(',')\n }\n }\n\n if (isAccountEvent(event)) {\n meta.active = event.active\n meta.timestamp = event.timestamp\n if (event.status) meta.status = event.status\n }\n\n if (isModEventPriorityScore(event)) {\n meta.priorityScore = event.score\n }\n\n if (isIdentityEvent(event)) {\n meta.timestamp = event.timestamp\n if (event.handle) meta.handle = event.handle\n if (event.pdsHost) meta.pdsHost = event.pdsHost\n if (event.tombstone) meta.tombstone = event.tombstone\n }\n\n if (isRecordEvent(event)) {\n meta.timestamp = event.timestamp\n meta.op = event.op\n if (event.cid) meta.cid = event.cid\n }\n\n if (isAgeAssuranceEvent(event)) {\n meta.status = event.status\n meta.createdAt = event.createdAt\n if (event.attemptId) {\n meta.attemptId = event.attemptId\n }\n if (event.access) {\n meta.access = event.access\n }\n if (event.initIp) {\n meta.initIp = event.initIp\n }\n if (event.initUa) {\n meta.initUa = event.initUa\n }\n if (event.completeIp) {\n meta.completeIp = event.completeIp\n }\n if (event.completeUa) {\n meta.completeUa = event.completeUa\n }\n }\n\n if (isAgeAssuranceOverrideEvent(event)) {\n meta.status = event.status\n if (event.access) {\n meta.access = event.access\n }\n }\n\n if (isScheduleTakedownEvent(event)) {\n if (event.executeAfter) {\n meta.executeAfter = event.executeAfter\n }\n if (event.executeAt) {\n meta.executeAt = event.executeAt\n }\n if (event.executeUntil) {\n meta.executeUntil = event.executeUntil\n }\n }\n\n if (\n (isModEventTakedown(event) || isModEventAcknowledge(event)) &&\n event.acknowledgeAccountSubjects\n ) {\n meta.acknowledgeAccountSubjects = true\n }\n\n if (isModEventTakedown(event) && event.policies?.length) {\n meta.policies = event.policies.join(',')\n }\n\n if (isModEventTakedown(event) && event.targetServices?.length) {\n meta.targetServices = event.targetServices.join(',')\n }\n\n // Keep trace of reports that came in while the reporter was in muted stated\n if (isModEventReport(event)) {\n const isReportingMuted = await this.isReportingMutedForSubject(createdBy)\n if (isReportingMuted) {\n meta.isReporterMuted = true\n }\n // Also capture whether the subject was muted at event-creation time, so\n // the queue-router daemon can populate report.isMuted later without\n // racing against subsequent mute/unmute changes.\n const isSubjectMuted = await this.isSubjectMuted(subject.did)\n if (isSubjectMuted) {\n meta.isSubjectMuted = true\n }\n }\n\n const subjectInfo = subject.info()\n\n // Store severityLevel, strikeCount, and strikeExpiresAt if provided\n // These values should be calculated by the client based on configuration\n // processNewEvent will update the account_strike table with the new strike count\n let severityLevel: string | null = null\n let strikeCount: number | null = null\n let strikeExpiresAt: string | null = null\n\n if (\n isModEventTakedown(event) ||\n isModEventEmail(event) ||\n isModEventReverseTakedown(event)\n ) {\n // Store severityLevel if provided (for display/tracking)\n if (event.severityLevel) {\n severityLevel = event.severityLevel\n }\n // Store explicit strikeCount if provided\n if (event.strikeCount !== undefined) {\n strikeCount = event.strikeCount\n }\n // Store strikeExpiresAt if provided by client\n if ('strikeExpiresAt' in event && event.strikeExpiresAt) {\n strikeExpiresAt = event.strikeExpiresAt\n }\n }\n\n const modEvent = await this.db.db\n .insertInto('moderation_event')\n .values({\n comment:\n ('comment' in event &&\n typeof event.comment === 'string' &&\n event.comment) ||\n null,\n action: event.$type as ModerationEvent['action'],\n createdAt: createdAt.toISOString(),\n createdBy,\n createLabelVals,\n negateLabelVals,\n addedTags,\n removedTags,\n durationInHours:\n 'durationInHours' in event && event.durationInHours\n ? Number(event.durationInHours)\n : null,\n meta: Object.assign(meta, subjectInfo.meta),\n expiresAt:\n (isModEventTakedown(event) || isModEventMute(event)) &&\n event.durationInHours\n ? addHoursToDate(event.durationInHours, createdAt).toISOString()\n : undefined,\n subjectType: subjectInfo.subjectType,\n subjectDid: subjectInfo.subjectDid,\n subjectUri: subjectInfo.subjectUri,\n subjectCid: subjectInfo.subjectCid,\n subjectBlobCids: jsonb(subjectInfo.subjectBlobCids),\n subjectMessageId: subjectInfo.subjectMessageId,\n modTool: modTool ? jsonb(modTool) : null,\n externalId: externalId ?? null,\n severityLevel,\n strikeCount,\n strikeExpiresAt,\n })\n .returningAll()\n .executeTakeFirstOrThrow()\n\n const subjectStatus = await adjustModerationSubjectStatus(\n this.db,\n modEvent,\n subject.blobCids,\n )\n\n // Manage expiring tag rows for temporary tags\n if (isModEventTag(event)) {\n if (event.durationInHours && event.add.length > 0) {\n const expiresAt = addHoursToDate(\n event.durationInHours,\n createdAt,\n ).toISOString()\n await insertExpiringTags(this.db, {\n eventId: modEvent.id,\n did: subjectInfo.subjectDid,\n recordPath: subjectInfo.subjectUri ?? '',\n tags: event.add,\n expiresAt,\n createdBy,\n })\n }\n if (event.remove.length > 0) {\n await removeExpiringTags(this.db, {\n did: subjectInfo.subjectDid,\n recordPath: subjectInfo.subjectUri ?? '',\n tags: event.remove,\n })\n }\n }\n\n if (isAgeAssurancePurgeEvent(event)) {\n await this.purgeAgeAssuranceEvents(subjectInfo.subjectDid)\n }\n\n // Updates are only needed if strikeCount is numeric (in some cases even 0)\n if (modEvent.strikeCount !== null) {\n try {\n await this.strikeService.updateSubjectStrikeCount(modEvent.subjectDid)\n } catch (error) {\n // Log error but don't fail the entire operation to ensure that events are logged even if updating strike count fails\n log.error(\n { err: error, modEventId: modEvent.id },\n 'Error processing strikes for moderation event',\n )\n }\n }\n\n return { event: modEvent, subjectStatus }\n }\n\n async purgeAgeAssuranceEvents(subjectDid: string) {\n this.db.assertTransaction()\n await this.db.db\n .deleteFrom('moderation_event')\n .where('subjectDid', '=', subjectDid)\n .where('action', '=', 'tools.ozone.moderation.defs#ageAssuranceEvent')\n .execute()\n }\n\n async getLastReversibleEventForSubject(subject: ReversalSubject) {\n // If the subject is neither suspended nor muted don't bother finding the last reversible event\n // Ideally, this should never happen because the caller of this method should only call this\n // after ensuring that the suspended or muted subjects are being reversed\n if (!subject.reverseMute && !subject.reverseSuspend) {\n return null\n }\n\n let builder = this.db.db\n .selectFrom('moderation_event')\n .where('subjectDid', '=', subject.subject.did)\n\n if (subject.subject.recordPath) {\n builder = builder.where(\n 'subjectUri',\n 'like',\n `%${subject.subject.recordPath}%`,\n )\n }\n\n // Means the subject was suspended and needs to be unsuspended\n if (subject.reverseSuspend) {\n builder = builder\n .where('action', '=', 'tools.ozone.moderation.defs#modEventTakedown')\n .where('durationInHours', 'is not', null)\n }\n if (subject.reverseMute) {\n builder = builder\n .where('action', '=', 'tools.ozone.moderation.defs#modEventMute')\n .where('durationInHours', 'is not', null)\n }\n\n return await builder\n .orderBy('id', 'desc')\n .selectAll()\n .limit(1)\n .executeTakeFirst()\n }\n\n async getSubjectsDueForReversal(): Promise<ReversalSubject[]> {\n const now = new Date().toISOString()\n const subjects = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('suspendUntil', '<', now)\n .orWhere('muteUntil', '<', now)\n .selectAll()\n .execute()\n\n return subjects.map((row) => ({\n subject: subjectFromStatusRow(row),\n reverseSuspend: !!row.suspendUntil && row.suspendUntil < now,\n reverseMute: !!row.muteUntil && row.muteUntil < now,\n }))\n }\n\n async isSubjectSuspended(did: string): Promise<boolean> {\n const res = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', did)\n .where('recordPath', '=', '')\n .where('suspendUntil', '>', new Date().toISOString())\n .select('did')\n .limit(1)\n .executeTakeFirst()\n return !!res\n }\n\n async revertState({\n createdBy,\n createdAt,\n comment,\n action,\n subject,\n }: ReversibleModerationEvent): Promise<ModerationEventRow> {\n const isRevertingTakedown =\n action === 'tools.ozone.moderation.defs#modEventTakedown'\n this.db.assertTransaction()\n const { event } = await this.logEvent({\n event: {\n $type: isRevertingTakedown\n ? 'tools.ozone.moderation.defs#modEventReverseTakedown'\n : 'tools.ozone.moderation.defs#modEventUnmute',\n comment: comment ?? undefined,\n },\n createdAt,\n createdBy,\n subject,\n })\n\n if (isRevertingTakedown) {\n if (subject.isRepo()) {\n await this.reverseTakedownRepo(subject)\n } else if (subject.isRecord()) {\n await this.reverseTakedownRecord(subject)\n }\n }\n\n return event\n }\n\n async takedownRepo(\n subject: RepoSubject,\n takedownId: number,\n targetServices: Set<string>,\n isSuspend = false,\n ) {\n const takedownRef = `BSKY-${\n isSuspend ? 'SUSPEND' : 'TAKEDOWN'\n }-${takedownId}`\n\n const values = this.eventPusher\n .getTakedownServices(targetServices)\n .map((eventType) => ({\n eventType,\n subjectDid: subject.did,\n takedownRef,\n }))\n\n // The label is consumed by appview if we opt for appview only takedown, this is needed\n // if we opt for pds level takedown, adding the label doesn't hurt\n const takedownLabel = isSuspend ? SUSPEND_LABEL : TAKEDOWN_LABEL\n await this.formatAndCreateLabels(subject.did, null, {\n create: [takedownLabel],\n })\n\n // If we dont have to push any events, return early\n if (!values.length) {\n return\n }\n\n const repoEvts = await this.db.db\n .insertInto('repo_push_event')\n .values(values)\n .onConflict((oc) =>\n oc.columns(['subjectDid', 'eventType']).doUpdateSet({\n takedownRef,\n confirmedAt: null,\n attempts: 0,\n lastAttempted: null,\n }),\n )\n .returning('id')\n .execute()\n\n this.db.onCommit(() => {\n this.backgroundQueue.add(async () => {\n await Promise.all(\n repoEvts.map((evt) => this.eventPusher.attemptRepoEvent(evt.id)),\n )\n })\n })\n }\n\n async reverseTakedownRepo(subject: RepoSubject) {\n const repoEvts = await this.db.db\n .updateTable('repo_push_event')\n .where('eventType', 'in', TAKEDOWNS)\n .where('subjectDid', '=', subject.did)\n .set({\n takedownRef: null,\n confirmedAt: null,\n attempts: 0,\n lastAttempted: null,\n })\n .returning('id')\n .execute()\n\n const existingTakedownLabels = await this.db.db\n .selectFrom('label')\n .where('label.uri', '=', subject.did)\n .where('label.val', 'in', [TAKEDOWN_LABEL, SUSPEND_LABEL])\n .where('neg', '=', false)\n .selectAll()\n .execute()\n\n const takedownVals = existingTakedownLabels.map((row) => row.val)\n await this.formatAndCreateLabels(subject.did, null, {\n negate: takedownVals,\n })\n\n this.db.onCommit(() => {\n this.backgroundQueue.add(async () => {\n await Promise.all(\n repoEvts.map((evt) => this.eventPusher.attemptRepoEvent(evt.id)),\n )\n })\n })\n }\n\n async takedownRecord(\n subject: RecordSubject,\n takedownId: number,\n targetServices: Set<string>,\n ) {\n this.db.assertTransaction()\n await this.formatAndCreateLabels(subject.uri, subject.cid, {\n create: [TAKEDOWN_LABEL],\n })\n\n const takedownRef = `BSKY-TAKEDOWN-${takedownId}`\n const blobCids = subject.blobCids\n if (blobCids && blobCids.length > 0) {\n const blobValues: Insertable<BlobPushEvent>[] = []\n for (const eventType of this.eventPusher.getTakedownServices(\n targetServices,\n )) {\n for (const cid of blobCids) {\n blobValues.push({\n eventType,\n takedownRef,\n subjectDid: subject.did,\n subjectUri: subject.uri || null,\n subjectBlobCid: cid.toString(),\n })\n }\n }\n const blobEvts = await this.eventPusher.logBlobPushEvent(\n blobValues,\n takedownRef,\n )\n\n this.db.onCommit(() => {\n this.backgroundQueue.add(async () => {\n await Promise.allSettled(\n blobEvts.map((evt) =>\n this.eventPusher\n .attemptBlobEvent(evt.id)\n .catch((err) =>\n log.error({ ...evt, err }, 'failed to push blob event'),\n ),\n ),\n )\n\n if (this.imgInvalidator) {\n await Promise.allSettled(\n (subject.blobCids ?? []).map((cid) => {\n const paths = (this.cfg.cdn.paths ?? []).map((path) =>\n path.replace('%s', subject.did).replace('%s', cid),\n )\n return this.imgInvalidator\n ?.invalidate(cid, paths)\n .catch((err) =>\n log.error(\n { err, paths, cid },\n 'failed to invalidate blob on cdn',\n ),\n )\n }),\n )\n }\n })\n })\n }\n }\n\n async reverseTakedownRecord(subject: RecordSubject) {\n this.db.assertTransaction()\n await this.formatAndCreateLabels(subject.uri, subject.cid, {\n negate: [TAKEDOWN_LABEL],\n })\n\n const blobCids = subject.blobCids\n if (blobCids && blobCids.length > 0) {\n const blobEvts = await this.db.db\n .updateTable('blob_push_event')\n .where('eventType', 'in', TAKEDOWNS)\n .where('subjectDid', '=', subject.did)\n .where(\n 'subjectBlobCid',\n 'in',\n blobCids.map((c) => c.toString()),\n )\n .set({\n takedownRef: null,\n confirmedAt: null,\n attempts: 0,\n lastAttempted: null,\n })\n .returning('id')\n .execute()\n\n this.db.onCommit(() => {\n this.backgroundQueue.add(async () => {\n await Promise.all(\n blobEvts.map((evt) => this.eventPusher.attemptBlobEvent(evt.id)),\n )\n })\n })\n }\n }\n\n async report(info: {\n reasonType: ReasonType\n reason?: string\n subject: ModSubject\n reportedBy: string\n createdAt?: Date\n modTool?: {\n name: string\n meta?: { [_ in string]: unknown }\n }\n }): Promise<{\n event: ModerationEventRow\n subjectStatus: ModerationSubjectStatusRow | null\n }> {\n const {\n reasonType,\n reason,\n reportedBy,\n createdAt = new Date(),\n subject,\n modTool,\n } = info\n\n return await this.logEvent({\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReport',\n reportType: reasonType,\n comment: reason,\n },\n createdBy: reportedBy,\n subject,\n createdAt,\n modTool,\n })\n }\n\n async getSubjectStatuses({\n queueCount,\n queueIndex,\n queueSeed = '',\n includeAllUserRecords,\n cursor,\n limit = 50,\n takendown,\n appealed,\n reviewState,\n reviewedAfter,\n reviewedBefore,\n reportedAfter,\n reportedBefore,\n includeMuted = false,\n hostingDeletedBefore,\n hostingDeletedAfter,\n hostingUpdatedBefore,\n hostingUpdatedAfter,\n hostingStatuses,\n onlyMuted = false,\n ignoreSubjects,\n sortDirection = 'desc',\n lastReviewedBy,\n sortField = 'lastReportedAt',\n subject,\n tags,\n excludeTags,\n collections,\n subjectType,\n minAccountSuspendCount,\n minReportedRecordsCount,\n minTakendownRecordsCount,\n minPriorityScore,\n minStrikeCount,\n ageAssuranceState,\n }: QueryStatusParams): Promise<{\n statuses: ModerationSubjectStatusRowWithHandle[]\n cursor?: string\n }> {\n let builder = moderationSubjectStatusQueryBuilder(this.db.db)\n\n const { ref } = this.db.db.dynamic\n\n if (subject) {\n const subjectInfo = getStatusIdentifierFromSubject(subject)\n builder = builder.where(\n 'moderation_subject_status.did',\n '=',\n subjectInfo.did,\n )\n\n if (!includeAllUserRecords) {\n builder = builder.where((qb) =>\n subjectInfo.recordPath\n ? qb.where(\n 'moderation_subject_status.recordPath',\n '=',\n subjectInfo.recordPath,\n )\n : qb.where('moderation_subject_status.recordPath', '=', ''),\n )\n }\n } else if (subjectType === 'account') {\n builder = builder.where('moderation_subject_status.recordPath', '=', '')\n } else if (subjectType === 'record') {\n builder = builder.where('moderation_subject_status.recordPath', '!=', '')\n }\n\n // Only fetch items that belongs to the specified queue when specified\n if (\n !subject &&\n queueCount &&\n queueCount > 0 &&\n queueIndex !== undefined &&\n queueIndex >= 0 &&\n queueIndex < queueCount\n ) {\n builder = builder.where(\n queueSeed\n ? sql`ABS(HASHTEXT(${queueSeed} || moderation_subject_status.did)) % ${queueCount}`\n : sql`ABS(HASHTEXT(moderation_subject_status.did)) % ${queueCount}`,\n '=',\n queueIndex,\n )\n }\n\n // If subjectType is set to 'account' let that take priority and ignore collections filter\n if (subjectType !== 'account' && collections?.length) {\n builder = builder\n .where('moderation_subject_status.recordPath', '!=', '')\n .where((qb) => {\n for (const collection of collections) {\n qb = qb.orWhere(\n 'moderation_subject_status.recordPath',\n 'like',\n `${collection}/%`,\n )\n }\n return qb\n })\n }\n\n if (ignoreSubjects?.length) {\n builder = builder\n .where('moderation_subject_status.did', 'not in', ignoreSubjects)\n .where('moderation_subject_status.recordPath', 'not in', ignoreSubjects)\n }\n\n const reviewStateNormalized = getReviewState(reviewState)\n if (reviewStateNormalized) {\n builder = builder.where(\n 'moderation_subject_status.reviewState',\n '=',\n reviewStateNormalized,\n )\n }\n\n if (lastReviewedBy) {\n builder = builder.where(\n 'moderation_subject_status.lastReviewedBy',\n '=',\n lastReviewedBy,\n )\n }\n\n if (reviewedAfter) {\n builder = builder.where(\n 'moderation_subject_status.lastReviewedAt',\n '>',\n reviewedAfter,\n )\n }\n\n if (reviewedBefore) {\n builder = builder.where(\n 'moderation_subject_status.lastReviewedAt',\n '<',\n reviewedBefore,\n )\n }\n\n if (hostingUpdatedAfter) {\n builder = builder.where(\n 'moderation_subject_status.hostingUpdatedAt',\n '>',\n hostingUpdatedAfter,\n )\n }\n\n if (hostingUpdatedBefore) {\n builder = builder.where(\n 'moderation_subject_status.hostingUpdatedAt',\n '<',\n hostingUpdatedBefore,\n )\n }\n\n if (hostingDeletedAfter) {\n builder = builder.where(\n 'moderation_subject_status.hostingDeletedAt',\n '>',\n hostingDeletedAfter,\n )\n }\n\n if (hostingDeletedBefore) {\n builder = builder.where(\n 'moderation_subject_status.hostingDeletedAt',\n '<',\n hostingDeletedBefore,\n )\n }\n\n if (hostingStatuses?.length) {\n builder = builder.where(\n 'moderation_subject_status.hostingStatus',\n 'in',\n hostingStatuses,\n )\n }\n\n if (reportedAfter) {\n builder = builder.where(\n 'moderation_subject_status.lastReviewedAt',\n '>',\n reportedAfter,\n )\n }\n\n if (reportedBefore) {\n builder = builder.where(\n 'moderation_subject_status.lastReportedAt',\n '<',\n reportedBefore,\n )\n }\n\n if (takendown) {\n builder = builder.where('moderation_subject_status.takendown', '=', true)\n }\n\n if (appealed !== undefined) {\n builder =\n appealed === false\n ? builder.where('moderation_subject_status.appealed', 'is', null)\n : builder.where('moderation_subject_status.appealed', '=', appealed)\n }\n\n if (!includeMuted) {\n builder = builder.where((qb) =>\n qb\n .where(\n 'moderation_subject_status.muteUntil',\n '<',\n new Date().toISOString(),\n )\n .orWhere('moderation_subject_status.muteUntil', 'is', null),\n )\n }\n\n if (onlyMuted) {\n builder = builder.where((qb) =>\n qb\n .where(\n 'moderation_subject_status.muteUntil',\n '>',\n new Date().toISOString(),\n )\n .orWhere(\n 'moderation_subject_status.muteReportingUntil',\n '>',\n new Date().toISOString(),\n ),\n )\n }\n\n // [\"tag1\", \"tag2 && tag3\", \"tag4\"] => [[\"tag1\"], [\"tag2\", \"tag3\"], [\"tag4\"]]\n const conditions = parseTags(tags)\n if (conditions?.length) {\n // [[\"tag1\"], [\"tag2\", \"tag3\"], [\"tag4\"]] => (tags ? 'tag1') OR (tags ? 'tag2' AND tags ? 'tag3') OR (tags ? 'tag4')\n builder = builder.where((qb) => {\n for (const subTags of conditions) {\n // OR between every conditions items (subTags)\n qb = qb.orWhere((qb) => {\n // AND between every subTags items (subTag)\n for (const subTag of subTags) {\n qb = qb.where(\n sql`${ref('moderation_subject_status.tags')} ? ${subTag}`,\n )\n }\n return qb\n })\n }\n return qb\n })\n }\n\n if (excludeTags?.length) {\n builder = builder.where((qb) =>\n qb\n .where(\n sql`NOT(${ref('moderation_subject_status.tags')} ?| array[${sql.join(excludeTags)}]::TEXT[])`,\n )\n .orWhere('tags', 'is', null),\n )\n }\n\n if (minAccountSuspendCount != null && minAccountSuspendCount > 0) {\n builder = builder.where(\n 'account_events_stats.suspendCount',\n '>=',\n minAccountSuspendCount,\n )\n }\n\n if (minTakendownRecordsCount != null && minTakendownRecordsCount > 0) {\n builder = builder.where(\n 'account_record_status_stats.takendownCount',\n '>=',\n minTakendownRecordsCount,\n )\n }\n\n if (minReportedRecordsCount != null && minReportedRecordsCount > 0) {\n builder = builder.where(\n 'account_record_events_stats.reportedCount',\n '>=',\n minReportedRecordsCount,\n )\n }\n\n if (minPriorityScore != null && minPriorityScore >= 0) {\n builder = builder.where(\n 'moderation_subject_status.priorityScore',\n '>=',\n minPriorityScore,\n )\n }\n\n if (minStrikeCount != null && minStrikeCount >= 0) {\n builder = builder.where(\n 'account_strike.activeStrikeCount',\n '>=',\n minStrikeCount,\n )\n }\n\n if (ageAssuranceState) {\n builder = builder.where(\n 'moderation_subject_status.ageAssuranceState',\n '=',\n ageAssuranceState,\n )\n }\n\n const keyset = new StatusKeyset(\n sortField === 'reportedRecordsCount'\n ? ref(`account_record_events_stats.reportedCount`)\n : sortField === 'takendownRecordsCount'\n ? ref(`account_record_status_stats.takendownCount`)\n : sortField === 'priorityScore'\n ? ref(`moderation_subject_status.priorityScore`)\n : ref(`moderation_subject_status.${sortField}`),\n ref('moderation_subject_status.id'),\n )\n const paginatedBuilder = paginate(builder, {\n limit,\n cursor,\n keyset,\n direction: sortDirection,\n tryIndex: true,\n nullsLast: true,\n })\n const results = await paginatedBuilder.execute()\n\n const infos = await this.views.getAccoutInfosByDid(\n results.map((r) => r.did),\n )\n\n return {\n statuses: results.map((r) => ({\n ...r,\n handle: infos.get(r.did)?.handle ?? INVALID_HANDLE,\n })),\n cursor: keyset.packFromResult(results),\n }\n }\n\n async getStatus(\n subject: ModSubject,\n ): Promise<ModerationSubjectStatusRow | null> {\n const result = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', subject.did)\n .where('recordPath', '=', subject.recordPath ?? '')\n .selectAll()\n .executeTakeFirst()\n return result ?? null\n }\n\n // This is used to check if the reporter of an incoming report is muted from reporting\n // so we want to make sure this look up is as fast as possible\n async isReportingMutedForSubject(did: string) {\n const result = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', did)\n .where('recordPath', '=', '')\n .where('muteReportingUntil', '>', new Date().toISOString())\n .select(sql`true`.as('status'))\n .executeTakeFirst()\n\n return !!result\n }\n\n // Check if a subject (the account being reported) has an active mute\n async isSubjectMuted(did: string) {\n const result = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', did)\n .where('recordPath', '=', '')\n .where('muteUntil', '>', new Date().toISOString())\n .select(sql`true`.as('status'))\n .executeTakeFirst()\n\n return !!result\n }\n\n async formatAndCreateLabels(\n uri: string,\n cid: string | null,\n labels: { create?: string[]; negate?: string[] },\n durationInHours?: number,\n ): Promise<Label[]> {\n const exp =\n durationInHours !== undefined\n ? addHoursToDate(durationInHours).toISOString()\n : undefined\n const { create = [], negate = [] } = labels\n const toCreate = create.map((val) => ({\n src: this.cfg.service.did,\n uri,\n cid: cid ?? undefined,\n val,\n exp,\n cts: new Date().toISOString(),\n }))\n const toNegate = negate.map((val) => ({\n src: this.cfg.service.did,\n uri,\n cid: cid ?? undefined,\n val,\n neg: true,\n cts: new Date().toISOString(),\n }))\n const formatted = [...toCreate, ...toNegate]\n return this.createLabels(formatted)\n }\n\n async createLabels(labels: Label[]): Promise<Label[]> {\n if (labels.length < 1) return []\n const signedLabels = await Promise.all(\n labels.map((l) => signLabel(l, this.signingKey)),\n )\n const dbVals = signedLabels.map((l) => formatLabelRow(l, this.signingKeyId))\n const { ref } = this.db.db.dynamic\n const excluded = (col: string) => ref(`excluded.${col}`)\n const res = await this.db.db\n .insertInto('label')\n .values(dbVals)\n .onConflict((oc) =>\n oc.columns(['src', 'uri', 'cid', 'val']).doUpdateSet({\n id: sql`${excluded('id')}`,\n neg: sql`${excluded('neg')}`,\n cts: sql`${excluded('cts')}`,\n exp: sql`${excluded('exp')}`,\n sig: sql`${excluded('sig')}`,\n signingKeyId: sql`${excluded('signingKeyId')}`,\n }),\n )\n .returningAll()\n .execute()\n await sql`notify ${ref(LabelChannel)}`.execute(this.db.db)\n return res.map((row) => formatLabel(row))\n }\n\n async sendEmail(opts: {\n content: string\n recipientDid: string\n subject: string\n }) {\n const { subject, content, recipientDid } = opts\n const { agent: pdsAgent, url } = await getPdsAgentForRepo(\n this.idResolver,\n recipientDid,\n this.cfg.service.devMode,\n )\n if (!pdsAgent) {\n throw new InvalidRequestError('Invalid pds service in DID doc')\n }\n const { data: serverInfo } =\n await pdsAgent.com.atproto.server.describeServer()\n if (serverInfo.did !== `did:web:${url.hostname}`) {\n // @TODO do bidirectional check once implemented. in the meantime,\n // matching did to hostname we're talking to is pretty good.\n throw new InvalidRequestError('Invalid pds service in DID doc')\n }\n const { data: delivery } = await pdsAgent.com.atproto.admin.sendEmail(\n {\n subject,\n content,\n recipientDid,\n senderDid: this.cfg.service.did,\n },\n {\n encoding: 'application/json',\n ...(await this.createAuthHeaders(\n serverInfo.did,\n ids.ComAtprotoAdminSendEmail,\n )),\n },\n )\n if (!delivery.sent) {\n throw new InvalidRequestError('Email was accepted but not sent')\n }\n }\n\n async buildModerationQuery(\n subjectType: 'account' | 'record',\n createdByDids: string[],\n isActionQuery: boolean,\n ): Promise<(Partial<ReporterStatsResult> & { did: string })[]> {\n if (!createdByDids.length) return []\n\n const actionTypes = [\n 'tools.ozone.moderation.defs#modEventTakedown',\n 'tools.ozone.moderation.defs#modEventLabel',\n ] as const\n\n const countAll = () => {\n return sql<number>`COUNT(*)`\n }\n const countAllDistinctBy = (ref: RawBuilder) => {\n return sql<number>`COUNT(DISTINCT ${ref})`\n }\n const countTakedownsDistinctBy = (ref: RawBuilder) => {\n return sql<number>`COUNT(DISTINCT ${ref}) FILTER (\n WHERE actions.\"action\" = 'tools.ozone.moderation.defs#modEventTakedown'\n )`\n }\n const countLabelsDistinctBy = (ref: RawBuilder) => {\n return sql<number>`COUNT(DISTINCT ${ref}) FILTER (\n WHERE actions.\"action\" = 'tools.ozone.moderation.defs#modEventLabel'\n )`\n }\n\n const query = this.db.db\n .selectFrom('moderation_event as reports')\n .where(\n 'reports.action',\n '=',\n 'tools.ozone.moderation.defs#modEventReport',\n )\n .where(\n 'reports.subjectUri',\n subjectType === 'account' ? 'is' : 'is not',\n null,\n )\n .where('reports.createdBy', 'in', createdByDids)\n .select(['reports.createdBy as did'])\n\n if (!isActionQuery) {\n if (subjectType === 'account') {\n return query\n .select([\n () => countAll().as('accountReportCount'),\n (eb) =>\n countAllDistinctBy(eb.ref('reports.subjectDid')).as(\n 'reportedAccountCount',\n ),\n ])\n .groupBy('reports.createdBy')\n .execute()\n } else {\n return query\n .select([\n () => countAll().as('recordReportCount'),\n (eb) =>\n countAllDistinctBy(eb.ref('reports.subjectUri')).as(\n 'reportedRecordCount',\n ),\n ])\n .groupBy('reports.createdBy')\n .execute()\n }\n }\n\n if (subjectType === 'account') {\n return query\n .leftJoin('moderation_event as actions', (join) =>\n join\n .onRef('actions.subjectDid', '=', 'reports.subjectDid')\n .on('actions.subjectUri', 'is', null)\n .onRef('actions.createdAt', '>', 'reports.createdAt')\n .on('actions.action', 'in', actionTypes),\n )\n .select([\n (eb) =>\n countTakedownsDistinctBy(eb.ref('actions.subjectDid')).as(\n 'takendownAccountCount',\n ),\n (eb) =>\n countLabelsDistinctBy(eb.ref('actions.subjectDid')).as(\n 'labeledAccountCount',\n ),\n ])\n .groupBy('reports.createdBy')\n .execute()\n } else {\n return query\n .leftJoin('moderation_event as actions', (join) =>\n join\n .onRef('actions.subjectDid', '=', 'reports.subjectDid')\n .onRef('actions.subjectUri', '=', 'reports.subjectUri')\n .onRef('actions.createdAt', '>', 'reports.createdAt')\n .on('actions.action', 'in', actionTypes),\n )\n .select([\n (eb) =>\n countTakedownsDistinctBy(eb.ref('actions.subjectUri')).as(\n 'takendownRecordCount',\n ),\n (eb) =>\n countLabelsDistinctBy(eb.ref('actions.subjectUri')).as(\n 'labeledRecordCount',\n ),\n ])\n .groupBy('reports.createdBy')\n .execute()\n }\n }\n\n async getReporterStats(dids: string[]) {\n const [accountReports, recordReports, accountActions, recordActions] =\n await Promise.all([\n this.buildModerationQuery('account', dids, false),\n this.buildModerationQuery('record', dids, false),\n this.buildModerationQuery('account', dids, true),\n this.buildModerationQuery('record', dids, true),\n ])\n\n // Create a map to hold the aggregated stats for each `did`\n const statsMap = new Map<string, ReporterStats>()\n\n // Helper function to ensure a `did` entry exists in the map\n const ensureDidEntry = (did: string) => {\n if (!statsMap.has(did)) {\n statsMap.set(did, {\n did,\n accountReportCount: 0,\n recordReportCount: 0,\n reportedAccountCount: 0,\n reportedRecordCount: 0,\n takendownAccountCount: 0,\n takendownRecordCount: 0,\n labeledAccountCount: 0,\n labeledRecordCount: 0,\n })\n }\n return statsMap.get(did)!\n }\n\n // Merge accountReports\n for (const report of accountReports) {\n const entry = ensureDidEntry(report.did)\n entry.accountReportCount = report.accountReportCount ?? 0\n entry.reportedAccountCount = report.reportedAccountCount ?? 0\n }\n\n // Merge recordReports\n for (const report of recordReports) {\n const entry = ensureDidEntry(report.did)\n entry.recordReportCount = report.recordReportCount ?? 0\n entry.reportedRecordCount = report.reportedRecordCount ?? 0\n }\n\n // Merge accountActions\n for (const action of accountActions) {\n const entry = ensureDidEntry(action.did)\n entry.takendownAccountCount = action.takendownAccountCount ?? 0\n entry.labeledAccountCount = action.labeledAccountCount ?? 0\n }\n\n // Merge recordActions\n for (const action of recordActions) {\n const entry = ensureDidEntry(action.did)\n entry.takendownRecordCount = action.takendownRecordCount ?? 0\n entry.labeledRecordCount = action.labeledRecordCount ?? 0\n }\n\n // Convert map values to an array and return\n return Array.from(statsMap.values())\n }\n\n async getAccountTimeline(did: string) {\n const { ref } = this.db.db.dynamic\n // Without the subquery approach, pg tries to do the sort operation first which can be super expensive when a subjectDid has too many entries\n const result = await this.db.db\n .selectFrom(\n this.db.db\n .selectFrom('moderation_event')\n .where('subjectDid', '=', did)\n .select([\n dateFromDbDatetime(ref('createdAt')).as('day'),\n 'subjectUri',\n 'action',\n sql<number>`count(*)`.as('count'),\n ])\n .groupBy(['day', 'subjectUri', 'action'])\n .as('results'),\n )\n .selectAll()\n .orderBy('day', 'desc')\n .execute()\n return result\n }\n}\n\nconst parseTags = (tags?: string[]) =>\n tags\n ?.map((tag) =>\n tag\n .split(/\\s*&&\\s*/g)\n .map((subTag) => subTag.trim())\n // Ignore invalid syntax (\"\", \"tag1 &&\", \"&& tag2\", \"tag1 && && tag2\", etc.)\n .filter(Boolean),\n )\n // Ignore invalid items\n .filter((subTags): subTags is [string, ...string[]] => subTags.length > 0)\n\nconst TAKEDOWNS = ['pds_takedown' as const, 'appview_takedown' as const]\n\nexport const TAKEDOWN_LABEL = '!takedown'\nexport const SUSPEND_LABEL = '!suspend'\n\nexport type TakedownSubjects = {\n did: string\n subjects: (RepoRef | RepoBlobRef | StrongRef)[]\n}\n\nexport type ReversalSubject = {\n subject: ModSubject\n reverseSuspend: boolean\n reverseMute: boolean\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mod-service/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Insertable, RawBuilder, sql } from 'kysely'\nimport { CID } from 'multiformats/cid'\nimport { AtpAgent, ToolsOzoneModerationDefs } from '@atproto/api'\nimport { addHoursToDate, chunkArray } from '@atproto/common'\nimport { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { AtUri, INVALID_HANDLE } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport { getReviewState } from '../api/util.js'\nimport { BackgroundQueue } from '../background.js'\nimport { OzoneConfig } from '../config/index.js'\nimport { EventPusher } from '../daemon/index.js'\nimport { Database } from '../db/index.js'\nimport { StatusKeyset, TimeIdKeyset, paginate } from '../db/pagination.js'\nimport { BlobPushEvent } from '../db/schema/blob_push_event.js'\nimport { LabelChannel } from '../db/schema/label.js'\nimport { ModerationEvent } from '../db/schema/moderation_event.js'\nimport { jsonb } from '../db/types.js'\nimport { ImageInvalidator } from '../image-invalidator.js'\nimport { ids } from '../lexicon/lexicons.js'\nimport {\n RepoBlobRef,\n RepoRef,\n} from '../lexicon/types/com/atproto/admin/defs.js'\nimport { Label } from '../lexicon/types/com/atproto/label/defs.js'\nimport { ReasonType } from '../lexicon/types/com/atproto/moderation/defs.js'\nimport { Main as StrongRef } from '../lexicon/types/com/atproto/repo/strongRef.js'\nimport {\n REVIEWESCALATED,\n REVIEWOPEN,\n isAccountEvent,\n isAgeAssuranceEvent,\n isAgeAssuranceOverrideEvent,\n isAgeAssurancePurgeEvent,\n isIdentityEvent,\n isModEventAcknowledge,\n isModEventComment,\n isModEventEmail,\n isModEventLabel,\n isModEventMute,\n isModEventPriorityScore,\n isModEventReport,\n isModEventReverseTakedown,\n isModEventTag,\n isModEventTakedown,\n isRecordEvent,\n isScheduleTakedownEvent,\n} from '../lexicon/types/tools/ozone/moderation/defs.js'\nimport { QueryParams as QueryStatusParams } from '../lexicon/types/tools/ozone/moderation/queryStatuses.js'\nimport { httpLogger as log } from '../logger.js'\nimport { LABELER_HEADER_NAME, ParsedLabelers } from '../util.js'\nimport { insertExpiringTags, removeExpiringTags } from './expiring-tags.js'\nimport {\n adjustModerationSubjectStatus,\n getStatusIdentifierFromSubject,\n moderationSubjectStatusQueryBuilder,\n} from './status.js'\nimport { StrikeService, StrikeServiceCreator } from './strike.js'\nimport {\n ModSubject,\n RecordSubject,\n RepoSubject,\n subjectFromStatusRow,\n} from './subject.js'\nimport {\n ModEventType,\n ModerationEventRow,\n ModerationEventRowWithHandle,\n ModerationSubjectStatusRow,\n ModerationSubjectStatusRowWithHandle,\n ReporterStats,\n ReporterStatsResult,\n ReversibleModerationEvent,\n} from './types.js'\nimport {\n dateFromDbDatetime,\n formatLabel,\n formatLabelRow,\n getPdsAgentForRepo,\n signLabel,\n} from './util.js'\nimport { AuthHeaders, ModerationViews } from './views.js'\n\nexport type ModerationServiceCreator = (db: Database) => ModerationService\n\nexport class ModerationService {\n constructor(\n public db: Database,\n public signingKey: Keypair,\n public signingKeyId: number,\n public cfg: OzoneConfig,\n public backgroundQueue: BackgroundQueue,\n public idResolver: IdResolver,\n public eventPusher: EventPusher,\n public appviewAgent: AtpAgent,\n private createAuthHeaders: (\n aud: string,\n method: string,\n ) => Promise<AuthHeaders>,\n public strikeService: StrikeService,\n public imgInvalidator?: ImageInvalidator,\n ) {}\n\n static creator(\n signingKey: Keypair,\n signingKeyId: number,\n cfg: OzoneConfig,\n backgroundQueue: BackgroundQueue,\n idResolver: IdResolver,\n eventPusher: EventPusher,\n appviewAgent: AtpAgent,\n createAuthHeaders: (aud: string, method: string) => Promise<AuthHeaders>,\n strikeServiceCreator: StrikeServiceCreator,\n imgInvalidator?: ImageInvalidator,\n ) {\n return (db: Database) => {\n const strikeService = strikeServiceCreator(db)\n return new ModerationService(\n db,\n signingKey,\n signingKeyId,\n cfg,\n backgroundQueue,\n idResolver,\n eventPusher,\n appviewAgent,\n createAuthHeaders,\n strikeService,\n imgInvalidator,\n )\n }\n }\n\n views = new ModerationViews(\n this.db,\n this.signingKey,\n this.signingKeyId,\n this.appviewAgent,\n async (method: string, labelers?: ParsedLabelers) => {\n const authHeaders = await this.createAuthHeaders(\n this.cfg.appview.did,\n method,\n )\n if (labelers?.dids?.length) {\n authHeaders.headers[LABELER_HEADER_NAME] = labelers.dids.join(', ')\n }\n return authHeaders\n },\n this.idResolver,\n this.cfg.service.devMode,\n )\n\n async getEvent(id: number): Promise<ModerationEventRow | undefined> {\n return await this.db.db\n .selectFrom('moderation_event')\n .selectAll()\n .where('id', '=', id)\n .executeTakeFirst()\n }\n\n async getEventOrThrow(id: number): Promise<ModerationEventRow> {\n const event = await this.getEvent(id)\n if (!event) throw new InvalidRequestError('Moderation event not found')\n return event\n }\n\n async getEventByExternalId(\n eventType: ModerationEvent['action'],\n externalId: string,\n subject: ModSubject,\n ): Promise<boolean> {\n const result = await this.db.db\n .selectFrom('moderation_event')\n .where('action', '=', eventType)\n .where('externalId', '=', externalId)\n .where('subjectDid', '=', subject.did)\n .select(sql`1`.as('exists'))\n .limit(1)\n .executeTakeFirst()\n return !!result\n }\n\n async getEvents(opts: {\n subject?: string\n createdBy?: string\n limit: number\n cursor?: string\n includeAllUserRecords: boolean\n types: ModerationEvent['action'][]\n sortDirection?: 'asc' | 'desc'\n hasComment?: boolean\n comment?: string\n createdAfter?: string\n createdBefore?: string\n addedLabels: string[]\n removedLabels: string[]\n addedTags: string[]\n removedTags: string[]\n reportTypes?: string[]\n collections: string[]\n subjectType?: string\n policies?: string[]\n modTool?: string[]\n ageAssuranceState?: string\n batchId?: string\n withStrike?: boolean\n }): Promise<{ cursor?: string; events: ModerationEventRow[] }> {\n const {\n subject,\n createdBy,\n limit,\n cursor,\n includeAllUserRecords,\n sortDirection = 'desc',\n types,\n hasComment,\n comment,\n createdAfter,\n createdBefore,\n addedLabels,\n removedLabels,\n addedTags,\n removedTags,\n reportTypes,\n collections,\n subjectType,\n policies,\n modTool,\n ageAssuranceState,\n batchId,\n withStrike,\n } = opts\n const { ref } = this.db.db.dynamic\n let builder = this.db.db.selectFrom('moderation_event').selectAll()\n\n if (subject) {\n const isSubjectAtUri = subject.startsWith('at://')\n const subjectDid = isSubjectAtUri ? new AtUri(subject).hostname : subject\n const subjectUri = isSubjectAtUri ? subject : null\n // regardless of subjectUri check, we always want to query against subjectDid column since that's indexed\n builder = builder.where('subjectDid', '=', subjectDid)\n\n // if requester wants to include all user records, let's ignore matching on subjectUri\n if (!includeAllUserRecords) {\n builder = builder\n .if(!subjectUri, (q) => q.where('subjectUri', 'is', null))\n .if(!!subjectUri, (q) => q.where('subjectUri', '=', subjectUri))\n }\n } else if (subjectType === 'account') {\n builder = builder.where('subjectUri', 'is', null)\n } else if (subjectType === 'record') {\n builder = builder.where('subjectUri', 'is not', null)\n }\n\n // If subjectType is set to 'account' let that take priority and ignore collections filter\n if (collections.length && subjectType !== 'account') {\n builder = builder.where('subjectUri', 'is not', null).where((qb) => {\n collections.forEach((collection) => {\n qb = qb.orWhere('subjectUri', 'like', `%/${collection}/%`)\n })\n return qb\n })\n }\n\n if (types.length) {\n builder = builder.where((qb) => {\n if (types.length === 1) {\n return qb.where('action', '=', types[0])\n }\n\n return qb.where('action', 'in', types)\n })\n }\n if (createdBy) {\n builder = builder.where('createdBy', '=', createdBy)\n }\n if (createdAfter) {\n builder = builder.where('createdAt', '>=', createdAfter)\n }\n if (createdBefore) {\n builder = builder.where('createdAt', '<=', createdBefore)\n }\n\n if (comment) {\n // the input may end in || in which case, there may be item in the array which is just '' and we want to ignore those\n const keywords = comment.split('||').filter((keyword) => !!keyword.trim())\n if (keywords.length > 1) {\n builder = builder.where((qb) => {\n keywords.forEach((keyword) => {\n qb = qb.orWhere('comment', 'ilike', `%${keyword}%`)\n })\n return qb\n })\n } else if (keywords.length === 1) {\n builder = builder.where('comment', 'ilike', `%${keywords[0]}%`)\n }\n }\n if (hasComment) {\n builder = builder.where('comment', 'is not', null)\n }\n\n // If multiple labels are passed, then only retrieve events where all those labels exist\n if (addedLabels.length) {\n addedLabels.forEach((label) => {\n builder = builder.where('createLabelVals', 'ilike', `%${label}%`)\n })\n }\n if (removedLabels.length) {\n removedLabels.forEach((label) => {\n builder = builder.where('negateLabelVals', 'ilike', `%${label}%`)\n })\n }\n if (addedTags.length) {\n builder = builder.where(sql`${ref('addedTags')} @> ${jsonb(addedTags)}`)\n }\n if (removedTags.length) {\n builder = builder.where(\n sql`${ref('removedTags')} @> ${jsonb(removedTags)}`,\n )\n }\n if (reportTypes?.length) {\n builder = builder.where(sql`meta->>'reportType'`, 'in', reportTypes)\n }\n if (policies?.length) {\n builder = builder.where((qb) => {\n policies.forEach((policy) => {\n qb = qb.orWhere(sql`meta->>'policies'`, 'ilike', `%${policy}%`)\n })\n return qb\n })\n }\n if (modTool?.length) {\n builder = builder\n .where('modTool', 'is not', null)\n .where(sql`(\"modTool\" ->> 'name')`, 'in', modTool)\n }\n if (batchId) {\n builder = builder\n .where('modTool', 'is not', null)\n .where(sql`(\"modTool\" -> 'meta' ->> 'batchId')`, '=', batchId)\n }\n if (ageAssuranceState) {\n builder = builder\n .where('action', 'in', [\n 'tools.ozone.moderation.defs#ageAssuranceEvent',\n 'tools.ozone.moderation.defs#ageAssuranceOverrideEvent',\n ])\n .where(sql`meta->>'status'`, '=', ageAssuranceState)\n }\n\n if (withStrike !== undefined) {\n builder = builder.where('strikeCount', 'is not', null)\n }\n\n const keyset = new TimeIdKeyset(\n ref(`moderation_event.createdAt`),\n ref('moderation_event.id'),\n )\n const paginatedBuilder = paginate(builder, {\n limit,\n cursor,\n keyset,\n direction: sortDirection,\n tryIndex: true,\n })\n\n const result = await paginatedBuilder.execute()\n\n const infos = await this.views.getAccoutInfosByDid([\n ...result.map((row) => row.subjectDid),\n ...result.map((row) => row.createdBy),\n ])\n\n const resultWithHandles = result.map((r) => ({\n ...r,\n creatorHandle: infos.get(r.createdBy)?.handle,\n subjectHandle: infos.get(r.subjectDid)?.handle,\n }))\n\n return { cursor: keyset.packFromResult(result), events: resultWithHandles }\n }\n\n async getEventsByIds(ids: number[]): Promise<ModerationEventRowWithHandle[]> {\n if (!ids.length) return []\n\n const result = await this.db.db\n .selectFrom('moderation_event')\n .selectAll()\n .where('id', 'in', ids)\n .execute()\n\n if (!result.length) return []\n\n const infos = await this.views.getAccoutInfosByDid([\n ...result.map((row) => row.subjectDid),\n ...result.map((row) => row.createdBy),\n ])\n\n return result.map((r) => ({\n ...r,\n creatorHandle: infos.get(r.createdBy)?.handle,\n subjectHandle: infos.get(r.subjectDid)?.handle,\n }))\n }\n\n async getReport(id: number): Promise<ModerationEventRow | undefined> {\n return await this.db.db\n .selectFrom('moderation_event')\n .where('action', '=', 'tools.ozone.moderation.defs#modEventReport')\n .selectAll()\n .where('id', '=', id)\n .executeTakeFirst()\n }\n\n async getCurrentStatus(\n subject: { did: string } | { uri: AtUri } | { cids: CID[] },\n ) {\n let builder = this.db.db.selectFrom('moderation_subject_status').selectAll()\n if ('did' in subject) {\n builder = builder.where('did', '=', subject.did)\n } else if ('uri' in subject) {\n builder = builder.where('recordPath', '=', subject.uri.toString())\n }\n // TODO: Handle the cid status\n return await builder.execute()\n }\n\n async resolveSubjectsForAccount(\n did: string,\n createdBy: string,\n accountEvent: ModerationEventRow,\n ) {\n const subjectsToBeResolved = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', did)\n .where('recordPath', '!=', '')\n .where('reviewState', 'in', [REVIEWESCALATED, REVIEWOPEN])\n .selectAll()\n .execute()\n\n if (subjectsToBeResolved.length === 0) {\n return\n }\n\n let accountEventInfo = `Account Event ID: ${accountEvent.id}`\n if (accountEvent.comment) {\n accountEventInfo += ` | Account Event Comment: ${accountEvent.comment}`\n }\n // Process subjects in chunks of 100 since each of these will trigger multiple db queries\n for (const subjects of chunkArray(subjectsToBeResolved, 100)) {\n await Promise.all(\n subjects.map(async (subject) => {\n const eventData = {\n createdBy,\n subject: subjectFromStatusRow(subject),\n }\n\n // For consistency's sake, when acknowledging appealed subjects, we should first resolve the appeal\n if (subject.appealed) {\n await this.logEvent({\n event: {\n $type: 'tools.ozone.moderation.defs#modEventResolveAppeal',\n comment: `[AUTO_RESOLVE_ON_ACCOUNT_ACTION]: Automatically resolving all appealed content due to account level action | ${accountEventInfo}`,\n },\n ...eventData,\n })\n }\n\n await this.logEvent({\n event: {\n $type: 'tools.ozone.moderation.defs#modEventAcknowledge',\n comment: `[AUTO_RESOLVE_ON_ACCOUNT_ACTION]: Automatically resolving all reported content due to account level action | ${accountEventInfo}`,\n },\n ...eventData,\n })\n }),\n )\n }\n }\n\n async logEvent(info: {\n event: ModEventType\n subject: ModSubject\n createdBy: string\n createdAt?: Date\n modTool?: ToolsOzoneModerationDefs.ModTool\n externalId?: string\n }): Promise<{\n event: ModerationEventRow\n subjectStatus: ModerationSubjectStatusRow | null\n }> {\n this.db.assertTransaction()\n const {\n event,\n subject,\n createdBy,\n externalId,\n createdAt = new Date(),\n modTool,\n } = info\n\n const createLabelVals =\n isModEventLabel(event) && event.createLabelVals.length > 0\n ? event.createLabelVals.join(' ')\n : undefined\n const negateLabelVals =\n isModEventLabel(event) && event.negateLabelVals.length > 0\n ? event.negateLabelVals.join(' ')\n : undefined\n\n const meta: Record<string, string | number | boolean> = {}\n\n const addedTags = isModEventTag(event) ? jsonb(event.add) : null\n const removedTags = isModEventTag(event) ? jsonb(event.remove) : null\n\n if (isModEventReport(event)) {\n meta.reportType = event.reportType\n }\n\n if (isModEventComment(event) && event.sticky) {\n meta.sticky = event.sticky\n }\n\n if (isModEventEmail(event)) {\n meta.subjectLine = event.subjectLine\n meta.isDelivered = !!event.isDelivered\n if (event.content) {\n meta.content = event.content\n }\n if (event.policies?.length) {\n meta.policies = event.policies.join(',')\n }\n }\n\n if (isAccountEvent(event)) {\n meta.active = event.active\n meta.timestamp = event.timestamp\n if (event.status) meta.status = event.status\n }\n\n if (isModEventPriorityScore(event)) {\n meta.priorityScore = event.score\n }\n\n if (isIdentityEvent(event)) {\n meta.timestamp = event.timestamp\n if (event.handle) meta.handle = event.handle\n if (event.pdsHost) meta.pdsHost = event.pdsHost\n if (event.tombstone) meta.tombstone = event.tombstone\n }\n\n if (isRecordEvent(event)) {\n meta.timestamp = event.timestamp\n meta.op = event.op\n if (event.cid) meta.cid = event.cid\n }\n\n if (isAgeAssuranceEvent(event)) {\n meta.status = event.status\n meta.createdAt = event.createdAt\n if (event.attemptId) {\n meta.attemptId = event.attemptId\n }\n if (event.access) {\n meta.access = event.access\n }\n if (event.initIp) {\n meta.initIp = event.initIp\n }\n if (event.initUa) {\n meta.initUa = event.initUa\n }\n if (event.completeIp) {\n meta.completeIp = event.completeIp\n }\n if (event.completeUa) {\n meta.completeUa = event.completeUa\n }\n }\n\n if (isAgeAssuranceOverrideEvent(event)) {\n meta.status = event.status\n if (event.access) {\n meta.access = event.access\n }\n }\n\n if (isScheduleTakedownEvent(event)) {\n if (event.executeAfter) {\n meta.executeAfter = event.executeAfter\n }\n if (event.executeAt) {\n meta.executeAt = event.executeAt\n }\n if (event.executeUntil) {\n meta.executeUntil = event.executeUntil\n }\n }\n\n if (\n (isModEventTakedown(event) || isModEventAcknowledge(event)) &&\n event.acknowledgeAccountSubjects\n ) {\n meta.acknowledgeAccountSubjects = true\n }\n\n if (isModEventTakedown(event) && event.policies?.length) {\n meta.policies = event.policies.join(',')\n }\n\n if (isModEventTakedown(event) && event.targetServices?.length) {\n meta.targetServices = event.targetServices.join(',')\n }\n\n // Keep trace of reports that came in while the reporter was in muted stated\n if (isModEventReport(event)) {\n const isReportingMuted = await this.isReportingMutedForSubject(createdBy)\n if (isReportingMuted) {\n meta.isReporterMuted = true\n }\n // Also capture whether the subject was muted at event-creation time, so\n // the queue-router daemon can populate report.isMuted later without\n // racing against subsequent mute/unmute changes.\n const isSubjectMuted = await this.isSubjectMuted(subject.did)\n if (isSubjectMuted) {\n meta.isSubjectMuted = true\n }\n }\n\n const subjectInfo = subject.info()\n\n // Store severityLevel, strikeCount, and strikeExpiresAt if provided\n // These values should be calculated by the client based on configuration\n // processNewEvent will update the account_strike table with the new strike count\n let severityLevel: string | null = null\n let strikeCount: number | null = null\n let strikeExpiresAt: string | null = null\n\n if (\n isModEventTakedown(event) ||\n isModEventEmail(event) ||\n isModEventReverseTakedown(event)\n ) {\n // Store severityLevel if provided (for display/tracking)\n if (event.severityLevel) {\n severityLevel = event.severityLevel\n }\n // Store explicit strikeCount if provided\n if (event.strikeCount !== undefined) {\n strikeCount = event.strikeCount\n }\n // Store strikeExpiresAt if provided by client\n if ('strikeExpiresAt' in event && event.strikeExpiresAt) {\n strikeExpiresAt = event.strikeExpiresAt\n }\n }\n\n const modEvent = await this.db.db\n .insertInto('moderation_event')\n .values({\n comment:\n ('comment' in event &&\n typeof event.comment === 'string' &&\n event.comment) ||\n null,\n action: event.$type as ModerationEvent['action'],\n createdAt: createdAt.toISOString(),\n createdBy,\n createLabelVals,\n negateLabelVals,\n addedTags,\n removedTags,\n durationInHours:\n 'durationInHours' in event && event.durationInHours\n ? Number(event.durationInHours)\n : null,\n meta: Object.assign(meta, subjectInfo.meta),\n expiresAt:\n (isModEventTakedown(event) || isModEventMute(event)) &&\n event.durationInHours\n ? addHoursToDate(event.durationInHours, createdAt).toISOString()\n : undefined,\n subjectType: subjectInfo.subjectType,\n subjectDid: subjectInfo.subjectDid,\n subjectUri: subjectInfo.subjectUri,\n subjectCid: subjectInfo.subjectCid,\n subjectBlobCids: jsonb(subjectInfo.subjectBlobCids),\n subjectMessageId: subjectInfo.subjectMessageId,\n modTool: modTool ? jsonb(modTool) : null,\n externalId: externalId ?? null,\n severityLevel,\n strikeCount,\n strikeExpiresAt,\n })\n .returningAll()\n .executeTakeFirstOrThrow()\n\n const subjectStatus = await adjustModerationSubjectStatus(\n this.db,\n modEvent,\n subject.blobCids,\n )\n\n // Manage expiring tag rows for temporary tags\n if (isModEventTag(event)) {\n if (event.durationInHours && event.add.length > 0) {\n const expiresAt = addHoursToDate(\n event.durationInHours,\n createdAt,\n ).toISOString()\n await insertExpiringTags(this.db, {\n eventId: modEvent.id,\n did: subjectInfo.subjectDid,\n recordPath: subjectInfo.subjectUri ?? '',\n tags: event.add,\n expiresAt,\n createdBy,\n })\n }\n if (event.remove.length > 0) {\n await removeExpiringTags(this.db, {\n did: subjectInfo.subjectDid,\n recordPath: subjectInfo.subjectUri ?? '',\n tags: event.remove,\n })\n }\n }\n\n if (isAgeAssurancePurgeEvent(event)) {\n await this.purgeAgeAssuranceEvents(subjectInfo.subjectDid)\n }\n\n // Updates are only needed if strikeCount is numeric (in some cases even 0)\n if (modEvent.strikeCount !== null) {\n try {\n await this.strikeService.updateSubjectStrikeCount(modEvent.subjectDid)\n } catch (error) {\n // Log error but don't fail the entire operation to ensure that events are logged even if updating strike count fails\n log.error(\n { err: error, modEventId: modEvent.id },\n 'Error processing strikes for moderation event',\n )\n }\n }\n\n return { event: modEvent, subjectStatus }\n }\n\n async purgeAgeAssuranceEvents(subjectDid: string) {\n this.db.assertTransaction()\n await this.db.db\n .deleteFrom('moderation_event')\n .where('subjectDid', '=', subjectDid)\n .where('action', '=', 'tools.ozone.moderation.defs#ageAssuranceEvent')\n .execute()\n }\n\n async getLastReversibleEventForSubject(subject: ReversalSubject) {\n // If the subject is neither suspended nor muted don't bother finding the last reversible event\n // Ideally, this should never happen because the caller of this method should only call this\n // after ensuring that the suspended or muted subjects are being reversed\n if (!subject.reverseMute && !subject.reverseSuspend) {\n return null\n }\n\n let builder = this.db.db\n .selectFrom('moderation_event')\n .where('subjectDid', '=', subject.subject.did)\n\n if (subject.subject.recordPath) {\n builder = builder.where(\n 'subjectUri',\n 'like',\n `%${subject.subject.recordPath}%`,\n )\n }\n\n // Means the subject was suspended and needs to be unsuspended\n if (subject.reverseSuspend) {\n builder = builder\n .where('action', '=', 'tools.ozone.moderation.defs#modEventTakedown')\n .where('durationInHours', 'is not', null)\n }\n if (subject.reverseMute) {\n builder = builder\n .where('action', '=', 'tools.ozone.moderation.defs#modEventMute')\n .where('durationInHours', 'is not', null)\n }\n\n return await builder\n .orderBy('id', 'desc')\n .selectAll()\n .limit(1)\n .executeTakeFirst()\n }\n\n async getSubjectsDueForReversal(): Promise<ReversalSubject[]> {\n const now = new Date().toISOString()\n const subjects = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('suspendUntil', '<', now)\n .orWhere('muteUntil', '<', now)\n .selectAll()\n .execute()\n\n return subjects.map((row) => ({\n subject: subjectFromStatusRow(row),\n reverseSuspend: !!row.suspendUntil && row.suspendUntil < now,\n reverseMute: !!row.muteUntil && row.muteUntil < now,\n }))\n }\n\n async isSubjectSuspended(did: string): Promise<boolean> {\n const res = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', did)\n .where('recordPath', '=', '')\n .where('suspendUntil', '>', new Date().toISOString())\n .select('did')\n .limit(1)\n .executeTakeFirst()\n return !!res\n }\n\n async revertState({\n createdBy,\n createdAt,\n comment,\n action,\n subject,\n }: ReversibleModerationEvent): Promise<ModerationEventRow> {\n const isRevertingTakedown =\n action === 'tools.ozone.moderation.defs#modEventTakedown'\n this.db.assertTransaction()\n const { event } = await this.logEvent({\n event: {\n $type: isRevertingTakedown\n ? 'tools.ozone.moderation.defs#modEventReverseTakedown'\n : 'tools.ozone.moderation.defs#modEventUnmute',\n comment: comment ?? undefined,\n },\n createdAt,\n createdBy,\n subject,\n })\n\n if (isRevertingTakedown) {\n if (subject.isRepo()) {\n await this.reverseTakedownRepo(subject)\n } else if (subject.isRecord()) {\n await this.reverseTakedownRecord(subject)\n }\n }\n\n return event\n }\n\n async takedownRepo(\n subject: RepoSubject,\n takedownId: number,\n targetServices: Set<string>,\n isSuspend = false,\n ) {\n const takedownRef = `BSKY-${\n isSuspend ? 'SUSPEND' : 'TAKEDOWN'\n }-${takedownId}`\n\n const values = this.eventPusher\n .getTakedownServices(targetServices)\n .map((eventType) => ({\n eventType,\n subjectDid: subject.did,\n takedownRef,\n }))\n\n // The label is consumed by appview if we opt for appview only takedown, this is needed\n // if we opt for pds level takedown, adding the label doesn't hurt\n const takedownLabel = isSuspend ? SUSPEND_LABEL : TAKEDOWN_LABEL\n await this.formatAndCreateLabels(subject.did, null, {\n create: [takedownLabel],\n })\n\n // If we dont have to push any events, return early\n if (!values.length) {\n return\n }\n\n const repoEvts = await this.db.db\n .insertInto('repo_push_event')\n .values(values)\n .onConflict((oc) =>\n oc.columns(['subjectDid', 'eventType']).doUpdateSet({\n takedownRef,\n confirmedAt: null,\n attempts: 0,\n lastAttempted: null,\n }),\n )\n .returning('id')\n .execute()\n\n this.db.onCommit(() => {\n this.backgroundQueue.add(async () => {\n await Promise.all(\n repoEvts.map((evt) => this.eventPusher.attemptRepoEvent(evt.id)),\n )\n })\n })\n }\n\n async reverseTakedownRepo(subject: RepoSubject) {\n const repoEvts = await this.db.db\n .updateTable('repo_push_event')\n .where('eventType', 'in', TAKEDOWNS)\n .where('subjectDid', '=', subject.did)\n .set({\n takedownRef: null,\n confirmedAt: null,\n attempts: 0,\n lastAttempted: null,\n })\n .returning('id')\n .execute()\n\n const existingTakedownLabels = await this.db.db\n .selectFrom('label')\n .where('label.uri', '=', subject.did)\n .where('label.val', 'in', [TAKEDOWN_LABEL, SUSPEND_LABEL])\n .where('neg', '=', false)\n .selectAll()\n .execute()\n\n const takedownVals = existingTakedownLabels.map((row) => row.val)\n await this.formatAndCreateLabels(subject.did, null, {\n negate: takedownVals,\n })\n\n this.db.onCommit(() => {\n this.backgroundQueue.add(async () => {\n await Promise.all(\n repoEvts.map((evt) => this.eventPusher.attemptRepoEvent(evt.id)),\n )\n })\n })\n }\n\n async takedownRecord(\n subject: RecordSubject,\n takedownId: number,\n targetServices: Set<string>,\n ) {\n this.db.assertTransaction()\n await this.formatAndCreateLabels(subject.uri, subject.cid, {\n create: [TAKEDOWN_LABEL],\n })\n\n const takedownRef = `BSKY-TAKEDOWN-${takedownId}`\n const blobCids = subject.blobCids\n if (blobCids && blobCids.length > 0) {\n const blobValues: Insertable<BlobPushEvent>[] = []\n for (const eventType of this.eventPusher.getTakedownServices(\n targetServices,\n )) {\n for (const cid of blobCids) {\n blobValues.push({\n eventType,\n takedownRef,\n subjectDid: subject.did,\n subjectUri: subject.uri || null,\n subjectBlobCid: cid.toString(),\n })\n }\n }\n const blobEvts = await this.eventPusher.logBlobPushEvent(\n blobValues,\n takedownRef,\n )\n\n this.db.onCommit(() => {\n this.backgroundQueue.add(async () => {\n await Promise.allSettled(\n blobEvts.map((evt) =>\n this.eventPusher\n .attemptBlobEvent(evt.id)\n .catch((err) =>\n log.error({ ...evt, err }, 'failed to push blob event'),\n ),\n ),\n )\n\n if (this.imgInvalidator) {\n await Promise.allSettled(\n (subject.blobCids ?? []).map((cid) => {\n const paths = (this.cfg.cdn.paths ?? []).map((path) =>\n path.replace('%s', subject.did).replace('%s', cid),\n )\n return this.imgInvalidator\n ?.invalidate(cid, paths)\n .catch((err) =>\n log.error(\n { err, paths, cid },\n 'failed to invalidate blob on cdn',\n ),\n )\n }),\n )\n }\n })\n })\n }\n }\n\n async reverseTakedownRecord(subject: RecordSubject) {\n this.db.assertTransaction()\n await this.formatAndCreateLabels(subject.uri, subject.cid, {\n negate: [TAKEDOWN_LABEL],\n })\n\n const blobCids = subject.blobCids\n if (blobCids && blobCids.length > 0) {\n const blobEvts = await this.db.db\n .updateTable('blob_push_event')\n .where('eventType', 'in', TAKEDOWNS)\n .where('subjectDid', '=', subject.did)\n .where(\n 'subjectBlobCid',\n 'in',\n blobCids.map((c) => c.toString()),\n )\n .set({\n takedownRef: null,\n confirmedAt: null,\n attempts: 0,\n lastAttempted: null,\n })\n .returning('id')\n .execute()\n\n this.db.onCommit(() => {\n this.backgroundQueue.add(async () => {\n await Promise.all(\n blobEvts.map((evt) => this.eventPusher.attemptBlobEvent(evt.id)),\n )\n })\n })\n }\n }\n\n async report(info: {\n reasonType: ReasonType\n reason?: string\n subject: ModSubject\n reportedBy: string\n createdAt?: Date\n modTool?: {\n name: string\n meta?: { [_ in string]: unknown }\n }\n }): Promise<{\n event: ModerationEventRow\n subjectStatus: ModerationSubjectStatusRow | null\n }> {\n const {\n reasonType,\n reason,\n reportedBy,\n createdAt = new Date(),\n subject,\n modTool,\n } = info\n\n return await this.logEvent({\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReport',\n reportType: reasonType,\n comment: reason,\n },\n createdBy: reportedBy,\n subject,\n createdAt,\n modTool,\n })\n }\n\n async getSubjectStatuses({\n queueCount,\n queueIndex,\n queueSeed = '',\n includeAllUserRecords,\n cursor,\n limit = 50,\n takendown,\n appealed,\n reviewState,\n reviewedAfter,\n reviewedBefore,\n reportedAfter,\n reportedBefore,\n includeMuted = false,\n hostingDeletedBefore,\n hostingDeletedAfter,\n hostingUpdatedBefore,\n hostingUpdatedAfter,\n hostingStatuses,\n onlyMuted = false,\n ignoreSubjects,\n sortDirection = 'desc',\n lastReviewedBy,\n sortField = 'lastReportedAt',\n subject,\n tags,\n excludeTags,\n collections,\n subjectType,\n minAccountSuspendCount,\n minReportedRecordsCount,\n minTakendownRecordsCount,\n minPriorityScore,\n minStrikeCount,\n ageAssuranceState,\n }: QueryStatusParams): Promise<{\n statuses: ModerationSubjectStatusRowWithHandle[]\n cursor?: string\n }> {\n let builder = moderationSubjectStatusQueryBuilder(this.db.db)\n\n const { ref } = this.db.db.dynamic\n\n if (subject) {\n const subjectInfo = getStatusIdentifierFromSubject(subject)\n builder = builder.where(\n 'moderation_subject_status.did',\n '=',\n subjectInfo.did,\n )\n\n if (!includeAllUserRecords) {\n builder = builder.where((qb) =>\n subjectInfo.recordPath\n ? qb.where(\n 'moderation_subject_status.recordPath',\n '=',\n subjectInfo.recordPath,\n )\n : qb.where('moderation_subject_status.recordPath', '=', ''),\n )\n }\n } else if (subjectType === 'account') {\n builder = builder.where('moderation_subject_status.recordPath', '=', '')\n } else if (subjectType === 'record') {\n builder = builder.where('moderation_subject_status.recordPath', '!=', '')\n }\n\n // Only fetch items that belongs to the specified queue when specified\n if (\n !subject &&\n queueCount &&\n queueCount > 0 &&\n queueIndex !== undefined &&\n queueIndex >= 0 &&\n queueIndex < queueCount\n ) {\n builder = builder.where(\n queueSeed\n ? sql`ABS(HASHTEXT(${queueSeed} || moderation_subject_status.did)) % ${queueCount}`\n : sql`ABS(HASHTEXT(moderation_subject_status.did)) % ${queueCount}`,\n '=',\n queueIndex,\n )\n }\n\n // If subjectType is set to 'account' let that take priority and ignore collections filter\n if (subjectType !== 'account' && collections?.length) {\n builder = builder\n .where('moderation_subject_status.recordPath', '!=', '')\n .where((qb) => {\n for (const collection of collections) {\n qb = qb.orWhere(\n 'moderation_subject_status.recordPath',\n 'like',\n `${collection}/%`,\n )\n }\n return qb\n })\n }\n\n if (ignoreSubjects?.length) {\n builder = builder\n .where('moderation_subject_status.did', 'not in', ignoreSubjects)\n .where('moderation_subject_status.recordPath', 'not in', ignoreSubjects)\n }\n\n const reviewStateNormalized = getReviewState(reviewState)\n if (reviewStateNormalized) {\n builder = builder.where(\n 'moderation_subject_status.reviewState',\n '=',\n reviewStateNormalized,\n )\n }\n\n if (lastReviewedBy) {\n builder = builder.where(\n 'moderation_subject_status.lastReviewedBy',\n '=',\n lastReviewedBy,\n )\n }\n\n if (reviewedAfter) {\n builder = builder.where(\n 'moderation_subject_status.lastReviewedAt',\n '>',\n reviewedAfter,\n )\n }\n\n if (reviewedBefore) {\n builder = builder.where(\n 'moderation_subject_status.lastReviewedAt',\n '<',\n reviewedBefore,\n )\n }\n\n if (hostingUpdatedAfter) {\n builder = builder.where(\n 'moderation_subject_status.hostingUpdatedAt',\n '>',\n hostingUpdatedAfter,\n )\n }\n\n if (hostingUpdatedBefore) {\n builder = builder.where(\n 'moderation_subject_status.hostingUpdatedAt',\n '<',\n hostingUpdatedBefore,\n )\n }\n\n if (hostingDeletedAfter) {\n builder = builder.where(\n 'moderation_subject_status.hostingDeletedAt',\n '>',\n hostingDeletedAfter,\n )\n }\n\n if (hostingDeletedBefore) {\n builder = builder.where(\n 'moderation_subject_status.hostingDeletedAt',\n '<',\n hostingDeletedBefore,\n )\n }\n\n if (hostingStatuses?.length) {\n builder = builder.where(\n 'moderation_subject_status.hostingStatus',\n 'in',\n hostingStatuses,\n )\n }\n\n if (reportedAfter) {\n builder = builder.where(\n 'moderation_subject_status.lastReviewedAt',\n '>',\n reportedAfter,\n )\n }\n\n if (reportedBefore) {\n builder = builder.where(\n 'moderation_subject_status.lastReportedAt',\n '<',\n reportedBefore,\n )\n }\n\n if (takendown) {\n builder = builder.where('moderation_subject_status.takendown', '=', true)\n }\n\n if (appealed !== undefined) {\n builder =\n appealed === false\n ? builder.where('moderation_subject_status.appealed', 'is', null)\n : builder.where('moderation_subject_status.appealed', '=', appealed)\n }\n\n if (!includeMuted) {\n builder = builder.where((qb) =>\n qb\n .where(\n 'moderation_subject_status.muteUntil',\n '<',\n new Date().toISOString(),\n )\n .orWhere('moderation_subject_status.muteUntil', 'is', null),\n )\n }\n\n if (onlyMuted) {\n builder = builder.where((qb) =>\n qb\n .where(\n 'moderation_subject_status.muteUntil',\n '>',\n new Date().toISOString(),\n )\n .orWhere(\n 'moderation_subject_status.muteReportingUntil',\n '>',\n new Date().toISOString(),\n ),\n )\n }\n\n // [\"tag1\", \"tag2 && tag3\", \"tag4\"] => [[\"tag1\"], [\"tag2\", \"tag3\"], [\"tag4\"]]\n const conditions = parseTags(tags)\n if (conditions?.length) {\n // [[\"tag1\"], [\"tag2\", \"tag3\"], [\"tag4\"]] => (tags ? 'tag1') OR (tags ? 'tag2' AND tags ? 'tag3') OR (tags ? 'tag4')\n builder = builder.where((qb) => {\n for (const subTags of conditions) {\n // OR between every conditions items (subTags)\n qb = qb.orWhere((qb) => {\n // AND between every subTags items (subTag)\n for (const subTag of subTags) {\n qb = qb.where(\n sql`${ref('moderation_subject_status.tags')} ? ${subTag}`,\n )\n }\n return qb\n })\n }\n return qb\n })\n }\n\n if (excludeTags?.length) {\n builder = builder.where((qb) =>\n qb\n .where(\n sql`NOT(${ref('moderation_subject_status.tags')} ?| array[${sql.join(excludeTags)}]::TEXT[])`,\n )\n .orWhere('tags', 'is', null),\n )\n }\n\n if (minAccountSuspendCount != null && minAccountSuspendCount > 0) {\n builder = builder.where(\n 'account_events_stats.suspendCount',\n '>=',\n minAccountSuspendCount,\n )\n }\n\n if (minTakendownRecordsCount != null && minTakendownRecordsCount > 0) {\n builder = builder.where(\n 'account_record_status_stats.takendownCount',\n '>=',\n minTakendownRecordsCount,\n )\n }\n\n if (minReportedRecordsCount != null && minReportedRecordsCount > 0) {\n builder = builder.where(\n 'account_record_events_stats.reportedCount',\n '>=',\n minReportedRecordsCount,\n )\n }\n\n if (minPriorityScore != null && minPriorityScore >= 0) {\n builder = builder.where(\n 'moderation_subject_status.priorityScore',\n '>=',\n minPriorityScore,\n )\n }\n\n if (minStrikeCount != null && minStrikeCount >= 0) {\n builder = builder.where(\n 'account_strike.activeStrikeCount',\n '>=',\n minStrikeCount,\n )\n }\n\n if (ageAssuranceState) {\n builder = builder.where(\n 'moderation_subject_status.ageAssuranceState',\n '=',\n ageAssuranceState,\n )\n }\n\n const keyset = new StatusKeyset(\n sortField === 'reportedRecordsCount'\n ? ref(`account_record_events_stats.reportedCount`)\n : sortField === 'takendownRecordsCount'\n ? ref(`account_record_status_stats.takendownCount`)\n : sortField === 'priorityScore'\n ? ref(`moderation_subject_status.priorityScore`)\n : ref(`moderation_subject_status.${sortField}`),\n ref('moderation_subject_status.id'),\n )\n const paginatedBuilder = paginate(builder, {\n limit,\n cursor,\n keyset,\n direction: sortDirection,\n tryIndex: true,\n nullsLast: true,\n })\n const results = await paginatedBuilder.execute()\n\n const infos = await this.views.getAccoutInfosByDid(\n results.map((r) => r.did),\n )\n\n return {\n statuses: results.map((r) => ({\n ...r,\n handle: infos.get(r.did)?.handle ?? INVALID_HANDLE,\n })),\n cursor: keyset.packFromResult(results),\n }\n }\n\n async getStatus(\n subject: ModSubject,\n ): Promise<ModerationSubjectStatusRow | null> {\n const result = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', subject.did)\n .where('recordPath', '=', subject.recordPath ?? '')\n .selectAll()\n .executeTakeFirst()\n return result ?? null\n }\n\n // This is used to check if the reporter of an incoming report is muted from reporting\n // so we want to make sure this look up is as fast as possible\n async isReportingMutedForSubject(did: string) {\n const result = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', did)\n .where('recordPath', '=', '')\n .where('muteReportingUntil', '>', new Date().toISOString())\n .select(sql`true`.as('status'))\n .executeTakeFirst()\n\n return !!result\n }\n\n // Check if a subject (the account being reported) has an active mute\n async isSubjectMuted(did: string) {\n const result = await this.db.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', did)\n .where('recordPath', '=', '')\n .where('muteUntil', '>', new Date().toISOString())\n .select(sql`true`.as('status'))\n .executeTakeFirst()\n\n return !!result\n }\n\n async formatAndCreateLabels(\n uri: string,\n cid: string | null,\n labels: { create?: string[]; negate?: string[] },\n durationInHours?: number,\n ): Promise<Label[]> {\n const exp =\n durationInHours !== undefined\n ? addHoursToDate(durationInHours).toISOString()\n : undefined\n const { create = [], negate = [] } = labels\n const toCreate = create.map((val) => ({\n src: this.cfg.service.did,\n uri,\n cid: cid ?? undefined,\n val,\n exp,\n cts: new Date().toISOString(),\n }))\n const toNegate = negate.map((val) => ({\n src: this.cfg.service.did,\n uri,\n cid: cid ?? undefined,\n val,\n neg: true,\n cts: new Date().toISOString(),\n }))\n const formatted = [...toCreate, ...toNegate]\n return this.createLabels(formatted)\n }\n\n async createLabels(labels: Label[]): Promise<Label[]> {\n if (labels.length < 1) return []\n const signedLabels = await Promise.all(\n labels.map((l) => signLabel(l, this.signingKey)),\n )\n const dbVals = signedLabels.map((l) => formatLabelRow(l, this.signingKeyId))\n const { ref } = this.db.db.dynamic\n const excluded = (col: string) => ref(`excluded.${col}`)\n const res = await this.db.db\n .insertInto('label')\n .values(dbVals)\n .onConflict((oc) =>\n oc.columns(['src', 'uri', 'cid', 'val']).doUpdateSet({\n id: sql`${excluded('id')}`,\n neg: sql`${excluded('neg')}`,\n cts: sql`${excluded('cts')}`,\n exp: sql`${excluded('exp')}`,\n sig: sql`${excluded('sig')}`,\n signingKeyId: sql`${excluded('signingKeyId')}`,\n }),\n )\n .returningAll()\n .execute()\n await sql`notify ${ref(LabelChannel)}`.execute(this.db.db)\n return res.map((row) => formatLabel(row))\n }\n\n async sendEmail(opts: {\n content: string\n recipientDid: string\n subject: string\n }) {\n const { subject, content, recipientDid } = opts\n const { agent: pdsAgent, url } = await getPdsAgentForRepo(\n this.idResolver,\n recipientDid,\n this.cfg.service.devMode,\n )\n if (!pdsAgent) {\n throw new InvalidRequestError('Invalid pds service in DID doc')\n }\n const { data: serverInfo } =\n await pdsAgent.com.atproto.server.describeServer()\n if (serverInfo.did !== `did:web:${url.hostname}`) {\n // @TODO do bidirectional check once implemented. in the meantime,\n // matching did to hostname we're talking to is pretty good.\n throw new InvalidRequestError('Invalid pds service in DID doc')\n }\n const { data: delivery } = await pdsAgent.com.atproto.admin.sendEmail(\n {\n subject,\n content,\n recipientDid,\n senderDid: this.cfg.service.did,\n },\n {\n encoding: 'application/json',\n ...(await this.createAuthHeaders(\n serverInfo.did,\n ids.ComAtprotoAdminSendEmail,\n )),\n },\n )\n if (!delivery.sent) {\n throw new InvalidRequestError('Email was accepted but not sent')\n }\n }\n\n async buildModerationQuery(\n subjectType: 'account' | 'record',\n createdByDids: string[],\n isActionQuery: boolean,\n ): Promise<(Partial<ReporterStatsResult> & { did: string })[]> {\n if (!createdByDids.length) return []\n\n const actionTypes = [\n 'tools.ozone.moderation.defs#modEventTakedown',\n 'tools.ozone.moderation.defs#modEventLabel',\n ] as const\n\n const countAll = () => {\n return sql<number>`COUNT(*)`\n }\n const countAllDistinctBy = (ref: RawBuilder) => {\n return sql<number>`COUNT(DISTINCT ${ref})`\n }\n const countTakedownsDistinctBy = (ref: RawBuilder) => {\n return sql<number>`COUNT(DISTINCT ${ref}) FILTER (\n WHERE actions.\"action\" = 'tools.ozone.moderation.defs#modEventTakedown'\n )`\n }\n const countLabelsDistinctBy = (ref: RawBuilder) => {\n return sql<number>`COUNT(DISTINCT ${ref}) FILTER (\n WHERE actions.\"action\" = 'tools.ozone.moderation.defs#modEventLabel'\n )`\n }\n\n const query = this.db.db\n .selectFrom('moderation_event as reports')\n .where(\n 'reports.action',\n '=',\n 'tools.ozone.moderation.defs#modEventReport',\n )\n .where(\n 'reports.subjectUri',\n subjectType === 'account' ? 'is' : 'is not',\n null,\n )\n .where('reports.createdBy', 'in', createdByDids)\n .select(['reports.createdBy as did'])\n\n if (!isActionQuery) {\n if (subjectType === 'account') {\n return query\n .select([\n () => countAll().as('accountReportCount'),\n (eb) =>\n countAllDistinctBy(eb.ref('reports.subjectDid')).as(\n 'reportedAccountCount',\n ),\n ])\n .groupBy('reports.createdBy')\n .execute()\n } else {\n return query\n .select([\n () => countAll().as('recordReportCount'),\n (eb) =>\n countAllDistinctBy(eb.ref('reports.subjectUri')).as(\n 'reportedRecordCount',\n ),\n ])\n .groupBy('reports.createdBy')\n .execute()\n }\n }\n\n if (subjectType === 'account') {\n return query\n .leftJoin('moderation_event as actions', (join) =>\n join\n .onRef('actions.subjectDid', '=', 'reports.subjectDid')\n .on('actions.subjectUri', 'is', null)\n .onRef('actions.createdAt', '>', 'reports.createdAt')\n .on('actions.action', 'in', actionTypes),\n )\n .select([\n (eb) =>\n countTakedownsDistinctBy(eb.ref('actions.subjectDid')).as(\n 'takendownAccountCount',\n ),\n (eb) =>\n countLabelsDistinctBy(eb.ref('actions.subjectDid')).as(\n 'labeledAccountCount',\n ),\n ])\n .groupBy('reports.createdBy')\n .execute()\n } else {\n return query\n .leftJoin('moderation_event as actions', (join) =>\n join\n .onRef('actions.subjectDid', '=', 'reports.subjectDid')\n .onRef('actions.subjectUri', '=', 'reports.subjectUri')\n .onRef('actions.createdAt', '>', 'reports.createdAt')\n .on('actions.action', 'in', actionTypes),\n )\n .select([\n (eb) =>\n countTakedownsDistinctBy(eb.ref('actions.subjectUri')).as(\n 'takendownRecordCount',\n ),\n (eb) =>\n countLabelsDistinctBy(eb.ref('actions.subjectUri')).as(\n 'labeledRecordCount',\n ),\n ])\n .groupBy('reports.createdBy')\n .execute()\n }\n }\n\n async getReporterStats(dids: string[]) {\n const [accountReports, recordReports, accountActions, recordActions] =\n await Promise.all([\n this.buildModerationQuery('account', dids, false),\n this.buildModerationQuery('record', dids, false),\n this.buildModerationQuery('account', dids, true),\n this.buildModerationQuery('record', dids, true),\n ])\n\n // Create a map to hold the aggregated stats for each `did`\n const statsMap = new Map<string, ReporterStats>()\n\n // Helper function to ensure a `did` entry exists in the map\n const ensureDidEntry = (did: string) => {\n if (!statsMap.has(did)) {\n statsMap.set(did, {\n did,\n accountReportCount: 0,\n recordReportCount: 0,\n reportedAccountCount: 0,\n reportedRecordCount: 0,\n takendownAccountCount: 0,\n takendownRecordCount: 0,\n labeledAccountCount: 0,\n labeledRecordCount: 0,\n })\n }\n return statsMap.get(did)!\n }\n\n // Merge accountReports\n for (const report of accountReports) {\n const entry = ensureDidEntry(report.did)\n entry.accountReportCount = report.accountReportCount ?? 0\n entry.reportedAccountCount = report.reportedAccountCount ?? 0\n }\n\n // Merge recordReports\n for (const report of recordReports) {\n const entry = ensureDidEntry(report.did)\n entry.recordReportCount = report.recordReportCount ?? 0\n entry.reportedRecordCount = report.reportedRecordCount ?? 0\n }\n\n // Merge accountActions\n for (const action of accountActions) {\n const entry = ensureDidEntry(action.did)\n entry.takendownAccountCount = action.takendownAccountCount ?? 0\n entry.labeledAccountCount = action.labeledAccountCount ?? 0\n }\n\n // Merge recordActions\n for (const action of recordActions) {\n const entry = ensureDidEntry(action.did)\n entry.takendownRecordCount = action.takendownRecordCount ?? 0\n entry.labeledRecordCount = action.labeledRecordCount ?? 0\n }\n\n // Convert map values to an array and return\n return Array.from(statsMap.values())\n }\n\n async getAccountTimeline(did: string) {\n const { ref } = this.db.db.dynamic\n // Without the subquery approach, pg tries to do the sort operation first which can be super expensive when a subjectDid has too many entries\n const result = await this.db.db\n .selectFrom(\n this.db.db\n .selectFrom('moderation_event')\n .where('subjectDid', '=', did)\n .select([\n dateFromDbDatetime(ref('createdAt')).as('day'),\n 'subjectUri',\n 'action',\n sql<number>`count(*)`.as('count'),\n ])\n .groupBy(['day', 'subjectUri', 'action'])\n .as('results'),\n )\n .selectAll()\n .orderBy('day', 'desc')\n .execute()\n return result\n }\n}\n\nconst parseTags = (tags?: string[]) =>\n tags\n ?.map((tag) =>\n tag\n .split(/\\s*&&\\s*/g)\n .map((subTag) => subTag.trim())\n // Ignore invalid syntax (\"\", \"tag1 &&\", \"&& tag2\", \"tag1 && && tag2\", etc.)\n .filter(Boolean),\n )\n // Ignore invalid items\n .filter((subTags): subTags is [string, ...string[]] => subTags.length > 0)\n\nconst TAKEDOWNS = ['pds_takedown' as const, 'appview_takedown' as const]\n\nexport const TAKEDOWN_LABEL = '!takedown'\nexport const SUSPEND_LABEL = '!suspend'\n\nexport type TakedownSubjects = {\n did: string\n subjects: (RepoRef | RepoBlobRef | StrongRef)[]\n}\n\nexport type ReversalSubject = {\n subject: ModSubject\n reverseSuspend: boolean\n reverseMute: boolean\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import AtpAgent, { AppBskyLabelerDefs } from '@atproto/api';
|
|
2
|
-
import { OzoneConfig } from '../config';
|
|
2
|
+
import { OzoneConfig } from '../config/index.js';
|
|
3
3
|
export declare const NEW_TO_OLD_REASON_MAPPING: Record<string, string>;
|
|
4
4
|
export type ModerationServiceProfileCreator = () => ModerationServiceProfile;
|
|
5
5
|
export declare class ModerationServiceProfile {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/mod-service/profile.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/mod-service/profile.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAahD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgD5D,CAAA;AAOD,MAAM,MAAM,+BAA+B,GAAG,MAAM,wBAAwB,CAAA;AAE5E,qBAAa,wBAAwB;IAKjC,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,YAAY;IALtB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,SAAS,CAAQ;gBAGf,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,QAAQ,EAC9B,QAAQ,CAAC,EAAE,MAAM;IAKnB,MAAM,CAAC,OAAO,CACZ,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,QAAQ,GACrB,+BAA+B;IAI5B,UAAU;IAyBV,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAsB9D"}
|