* lexicons: add germ chat declaration record, and ref from profile view
* codegen germ record for bsky pkg
* make lex-client build happy by including germ ref
* add germ chat declaration methods to dataplane .proto
* dataplane codegen
* start wiring up germ chat records
* germ lex in api package
* api codegen
* initial attempt at germ record test
* update germ lexicon
* make codegen
* updates for germ declaration NSID rename
* implement new germ hydration
* more progress on germ integration
* fix germ profile test
The main issue here was forgetting the '.associated.' bit in the data
path.
* remove unnecessary germ imports/refs
* hydrate germ metadata in basic profile view (as per schema)
* type fixes for germ appview test
* prettier
* synchronize bsky.proto with dataplane; run buf:gen
* add changeset for Germ declaration records
* Integrate new reporting reasons
* Update bnn to BNR, prefix all with reason* to match previous
* Remap deprecations
* Update naming, add notes about Bluesky-only reasons
* Update reason
* Move new defs to tools.ozone namespace
* Add ozone lexicons to app view
* Copy known values to merge defs
* Update comments
* Add reasonAppeal to new ozone namespace defs
* Changeset
* ❇️ Support new reporting categories in ozone (#3974)
* ✨ Validate report reason using labeler service profile
* ✅ Rename test
* :rotating_lights: Fix lint issue
* ✨ Use both appeal reason type for materialized views
* ✨ Add old to new reason mapping for fallback
* ✅ Update test snapshot
* :rotating_lights: Fix lint issue
* 🧹 Cleanup
* :rotating_lights: Fix lint issue
* ✨ Adjust report reason tagging
* 📝 Additional comment for new migration
---------
Co-authored-by: Foysal Ahamed <foysal@blueskyweb.xyz>
* ✨ Add userAgent tracking for events
* :rotating_lights: Fix lint issue
* ♻️ Refactor userAgent to modTool
* ✨ Rename extra to meta
* 📝 Add changeset
* ✨ Support modTools param in createReport
* ✨ Add support for mod tool in createReport
* new host status com.atproto.sync lexicons
* add description
* add specific error response from request crawl if host is banned
* lint
* break out hostStatus to com.atproto.sync.defs
* add a changeset
* codegen
* deprecate blobs & tooBig
* add sync event, deprecate handle & tombstone
* fix up tests
* small tidy
* add test for sync account on account activation
* use new sync event in another place
* remove deprecated events from lexicons
* formatting
* pr cleanup
* changeset
* updates to com.atproto.moderation.* for report routing
* updates to labeler service declaration; and new reason types
* Apply suggestions from code review
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* remove dupe reasonAppeal
* iterate on labeler declaration lexicons
* Makefile: fast helper for formatting just lex json
* external, not link
* change default when subjectCollections is not defined
* remove 'example reason' disclaimers
* simplify lex report proposal: just labeler declartions
* missed knownValues list
* Codegen, changeset
---------
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
* mark 'blobs' as deprecated (can parse from records blocks)
* add 'prev' CID to record ops
* add inductive changes and #resync event
* updates from recent discussion
* add sync v1.1 account hosting status states (broken, throttled)
* prettier
* updates from discussion
* remove 'data' from #sync message
* add note on 'repo' field about inconsistent name
* codegen
* changeset
* schema
* reset rate limit codegen
* codegen
* send prev cids on firehose
* fix test
* fix some test compiler errors & add experimental note
* fix linting
* build branch
* add prevData to commit event
* fix cbor undefined err
* add sibling proofs to relevant blocks
* bump depth of obj in test
* fix bug on right sibling proof & add some tests
* another test
* refactor proof construction
* more tests
* factor into fixtures
* fix styles in json
* lint: import ordering
* pr feedback
* add invertible op test
* remove prev from outgoing events
* return to original proof construction
* dont build branch
* changeset
* lex: use 'tid' and 'record-key' formats in lexicons
* more TID formats; and remove redundant maxLength
* add maxLength back, with a comment/description
* revert accidential change to applyWrites
* codegen
* changeset
* update test for invalid record-key
* com.atproto.sync.listReposByCollection, for collections directory
* bump listReposByCollection limit
* update max+default to align more with listRepos
* codegen
* changeset for listReposByCollection
* ✨ Add getRepos and getRecords endpoints for bulk fetching
* ✨ Fix issues and add tests for get repos and get records
* ✨ Use the right lxm
* 🐛 Revert changes in lockfile
* ✨ Add getAccountInfos in PDS
* 🐛 Fix type def for repo and record view detail
* ✅ Update snapshots
* ✅ Update snapshots
* ✨ Consolidate error type for com.atproto and tools.ozone getRecord error type
* 🧹 Cleanup
* ✅ Update snapshots
* ✅ Update snapshots
* ✨ Changeset
* ✨ Search accounts by email domain works
* ✨ Add Search against normalized email column
* 🐛 Fix pagination
* ✨ Make email field optional in the response
* 🧹 Cleanup implementation
* 🧹 More cleanup
* 🧹 Cleanup and reuse accountView for searchAccounts response
* 📝 Add changeset
* ✨ Add min max and default to limit
* lex: limit createReport size
This has actually be limited on the *output* for a long time, apparently
as a mistake/typo when locking down string length fields earlier.
Going with the existing length there (2000 graphemes). 1200 might also
be good; a longer description could be a future additional field or
out-of-band or something.
* codegen lex changes
* Rename bsky_labeler_did
* Use labeldef default setting
* Add definedBy to interpretted label defs
* Improve dev-env mocks for labels
* Remove global label defs for dmca-violation, doxxing, and !no-promote
* Change nudity global label def to default to ignore and no longer be adult-only
* Remove old !no-promote tests
* Add mod authorities header and move bsky labeler into it
* Rename modsPref and addModService/removeModService to labelersPref and add/removeLabeler
* Add defaultSetting and adultOnly to custom label value definitions
* Rename InterprettedLabelValueDefinition to InterpretedLabelValueDefinition
* Update dev-env mock
* Move muted words and hidden posts into moderationPrefs
* Add muted word and hidden post handling to moderatePost
* Add mutewords tests
* Finish muteword tests
* Add mod-authority.test to dev-env
* Rename global label value def gore to graphic-media
* Fix typo
* Stop converting old label values
* Update label target=profile behaviors: dont filter content on hide, dont blur display names, but do show the info cards
* Update label target=account behaviors: dont blur media of content
* Add muteword moderation behaviors
* Fix mock label defs
* Implement quote-post moderation handling
* Add adult content test
* Handle sync legacy labels (#2291)
* Handle sync legacy labels
* Remap values on read
* Filter out double-written legacy label values
* Better naming, fix types
* Fix test
* Update moderation docs in sdk
* Update to new atproto-accept-labelers header behavior
* Add getLabelDefinitions() helper method
* Add proxy header support to agent
* Update mock moderation
* lint
* Implement moderation for userlists and feedgens
* Add another test label
* fix labeler in dev-env agents
* fix label hydration test
* fix lint error
* fix agent test
* fix takedown labels test
---------
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: dholms <dtholmgren@gmail.com>
* lexicons
* clean up old admin schemas
* codegen
* renaming all routes
* fix more
* fix snaps
* fix test
* format
* hook up ozone routes on pds
* publish next version
* build branch
* dont build branch
* 🚧 Working through an nullable review state
* ✅ Update snapshots on some tests
* ✅ Update snapshots on some tests
* ✅ Add test for reviewOptional status mutation
* ✨ Add divertBlobs event to send blobs to abyss
* ♻️ Rename reviewOptional -> reviewNone
* ♻️ Rename modEventDivertBlobs -> modEventDivert
* 🐛 Rename event type checker
* ✨ Use pds resolver to get blob straight from pds
* ✅ Use FOR UPDATE to respect db transactions
* ♻️ Refactor to use event_pusher table instead of new table
* ✨ Bring back missing lines in pnpm-lock
* 🔨 Rebuild?
* 🚨 Formatting
* ♻️ Refactor to divert blob sync
* 🧹 Cleanup
* ✅ Use modClient seed client in blob-divert test
* update divert blob config to use basic admin auth
* fix
* build
---------
Co-authored-by: Devin Ivy <devinivy@gmail.com>
* sketching out label sequencer
* refactor sequencer
* sequencer tests
* tests
* add query labels endpoint & tests
* add pagination
* fix label formatting on temp
* tidy
* format labels
* make use listen/notify for sequencer
* ensure sig on all outgoing labels from ozone
* fixing up tests
* fix sequencer tests
* fix hanging server test
* add log on failure to update label
* update description for sig
* add expiration to labels
* fix test
* use bytes for label sigs
* fix tests
* add ver to labels
* tidy up background queue
* store signing keys as ids
* fix sequencer teest
* sketching out label sequencer
* refactor sequencer
* sequencer tests
* tests
* add query labels endpoint & tests
* add pagination
* fix label formatting on temp
* tidy
* format labels
* make use listen/notify for sequencer
* ensure sig on all outgoing labels from ozone
* fixing up tests
* fix sequencer tests
* fix hanging server test
* add log on failure to update label
* update description for sig
* use bytes for label sigs
* fix tests
* add ver to labels
* tidy up background queue
* store signing keys as ids
* fix sequencer teest
* adding some basic views
* feed hydration, add blocks to post hydration
* pass over notification hydration
* tidy
* merge
* implement getProfile
* hydrate post aggregation and viewer state
* fix
* fix codegen
* get some tests passing!
* add takedowns & some like bugfixing
* all profile tests passing!
* likes test
* follow endpoints using data plane
* reorg follow block rules
* reposts
* post views!
* implement getList w/ dataplane caveat
* adjust dataplane getListMembers to return listitem uris
* implement getListMutes and -Blocks w/ dataplane
* suggestions
* timeline
* misc view fixes
* view fixes for mutes, self-mute/block
* author feed
* feed gen routes
* tidy
* misc block/mute fixes
* list feed & actor likes
* implement getLists, fix some empty cursors
* implement getMutes, empty profile description fix
* implement getBlocks, block application fix
* implement getSuggestedFollowsByActor, needs some fixes
* feed generation
* search routes
* threads
* tidy
* fix some snaps
* fix getSuggestedFollowsByActor
* implement listNotifications
* implement getUnreadCount w/ dataplane
* implement notifications.updateSeen w/ dataplane
* 3rd party blocking tests
* blocked profile viewer
* add search mocks
* refactor getFeed
* createPipeline -> createPipelineNew
* basic replygating functionality on dataplane w/o filtering violating replies
* hack threadgates into dataplane, apply gates
* deterministic thread orders in dataplane
* misc cleanup around dataplane
* upgrade typescript to v5.3
* update typescript linter deps
* sync bsky proto, codegen
* update dataplane, sync with bsky proto updates
* remove indexer, ingester, daemon, moderation services from appview
* convert more bsky internals to dataplane, remove custom feedgens, implement mute/unmuting in mock dataplane
* remove bsky services. db and indexing logic into mock dataplane.
* remove tests not needed by appview v2, misc reorg
* add basic in-mem repo subscription to dataplane mock
* fix dev-env, bsky tests, bsky build
* cull bsky service entrypoint
* add bsky service readme
* build
* tidy
* tidy, fix pds proxy tests
* fix
* fix bsky entrypoint deps
* support http2 grpc client
* build
* fix dataplane bad tls config/default
* support multiple dataplane urls, retry when unavailable
* build
* tidy/fix
* move dataplane mock tests into their own dir
* cover label hydration through timeline test
* bring back labels in appview tests
* remove unused db primary/replica/coordinator from bsky dataplane
* bsky proto add cids to contracts, buf codegen
* sync-up bsky data-plane w/ codegen updates
* start using dataplane interaction endpoints
* add file
* avoid overfetching from dataplane, plumb feed items and cids
* pass refs through for post viewer state
* Lexicons: Add labeler prefs, labeler declaration, and get labeler routes
* Add labelerViewBasic and update embed views
* Fix typo
* switch list feeds to use feed item in dataplane
* handle not found err on get-thread dataplane call
* support use of search service rather than dataplane methods
* mark some appview v2 todos
* tidy
* still use dataplane on search endpoints when search service is not configured
* fix pds test
* Switch to labelerViewDetailed
* Move label and report values to refs
* Add getActorLabelers
* lint
* fix up bsky tests & snaps
* small diff to open pr
* rm new line
* codegen schemas
* tidy migrations
* table + indexing
* protos
* rename lexicons
* views, hydration + rename lexicons
* rest of routes
* data plane routes
* parse labelers from req
* fix appview-v2 docker build
* Support label issuer tied to appview v2 (#2033)
support label issuer tied to appview
* hydrate context
* tidy header logic
* integrating into more routes
* more routes
* wrap up rest
* add mock labeler
* rework labelerlexicons
* tidy lexs
* codegen new lexicons
* integrate lexicon rework
* add proxy logic
* forward labeler headers through pds
* tweak label header parsing
* remove did from scheams
* update indexing for lexs
* tests for mod service views
* label hydration test
* Add 'associated' to profileViewDetailed
* Rename labelers to mods in preferences
* Change uri to did in mod preferences
* couple more
* syntax tweaks
* integrate updated lexicons
* update view snap
* handle mod service embeds
* tidy
* fix mock
* lint
* base default labels of config var
* fix label hydration
* Appview v2: handle empty cursor on list notifications (#2017)
handle empty cursor on appview listnotifs
* Update appview v2 to use author feed enum (#2047)
* update bsky protos with author feed enum, misc feed item changes
* support new author feed enums in dataplane
* fix build
* Appview v2: utilize sorted-at field in bsky protos (#2050)
utilize new sorted-at field in bsky protos
* remove all dataplane usage of GetLikeCounts, switch to GetInteractionCounts
* Appview v2, sync w/ changes to protos (#2071)
* sync bsky protos
* sync-up bsky implementation w/ proto changes
* Appview v2 initial implementation for getPopularFeedGenerators (#2072)
add an initial implementation for getPopularFeedGenerators on appview v2
* merge
* fixes
* fix feed tests
* fix bsync mock
* format
* remove unused config
* fix lockfile
* another lockfile fix
* fix duplicate type
* fix dupplicate test
* Appview v2 handling clearly bad cursors (#2092)
* make mock dataplane cursors different from v1 cursors
* fail open on clearly bad appview cursors
* fix pds appview proxy snaps
* Appview v2 no notifs seen behavior (#2096)
* alter behavior for presenting notifications w/ no last-seen time
* fix pds proxy tests
* Appview v2 dataplane retries based on client host (#2098)
choose dataplane client for retries based on host when possible/relevant
* don't apply negated labels
* display suspensions on actor profile in appview v2
* Appview v2 use dataplane for identity lookups (#2095)
* update bsky proto w/ identity methods
* setup identity endpoints on mock dataplane
* move from idresolver to dataplane for identity lookups on appview
* tidy
* Appview v2: apply safe takedown refs to records, actors (#2107)
apply safe takedown refs to records, actors
* Fix timing on appview v2 repo rev header (#2113)
fix timing on appview repo rev
* fix post thread responses
* Appview v2 don't apply 3p self blocks (#2112)
do not apply 3p self-blocks
* Appview v2 search for feed generators (#2118)
* add protos for feedgen search
* support feed search on getPopularFeedGenerators
* Appview v2 config tidy (#2117)
* remove mod and triage roles from appview
* rename cdn and search config
* remove custom feed harness from appview v2
* Appview v2: don't apply missing modlists (#2122)
* dont apply missing mod lists
* update mock dataplane
* Update packages/bsky/src/hydration/hydrator.ts
Co-authored-by: devin ivy <devinivy@gmail.com>
* refactor & document a bit better
* fix up other routes
---------
Co-authored-by: devin ivy <devinivy@gmail.com>
* Appview v2 enforce post thread root boundary (#2120)
* enforce post thread root boundary
* test thread root boundary
* Appview v2 fix admin environment variable (#2137)
fix admin env in appview v2
* Remove re-pagination from getSuggestions (#2145)
* remove re-pagination from getSuggestions
* fix test
* Adjust wording for account suspension (#2153)
adjust wording for account suspension
* Appview v2: fix not-found and blocked uris in threads (#2201)
* fix uris of not-found and blocked posts in threads
* update snaps
* ✨ Show author feed of takendown author to admins only (#2197)
* fold in cid, auth, tracing, node version changes
* remove dead config from bsky service entrypoint
* build
* remove ozone test codepaths for appview v2
* tidy, docs fix
* fix test
* add additional user counts
* add associated data to profiles
* update snaps
* update to is_mod_service
* format
* tidy
* 3p labeler sdk updates (#2176)
* Update sdk to support 3p labeler preferences
* Stick with intolerance instead of hate for the label group id
* wip expand labels and label groups
* Output moderationOpts (computed) and modsPref (unaltered)
* Add tests for enabling/disabling mod services
* Add atproto-labelers header config
* Expand labels and label groups in definitions
* Fix tests
* Tweaks to labels
* Remove label descriptions and improve output types on labels and label groups
* Add mocker to exported API
* Improve types of label and label group definitions
* Rework moderation prefs to continue using global labelgroup settings and only disable label groups per moderator
* Simplify encoding of the label preferences in definitions
* Add target constraints to labels
* Refactor the moderation sdk to derive more behaviors from the definition files
* Small cleanup
* Add hiding tool to modsdk
* Track filter causes
* Make mute state an alert
* Fix: dont blur profileview for blocks
* Prioritize causes by severity
* Add moderateNotification() and drop quote post moderation code
* Add mocker functions for notifications
* Improve mock data
* Lexicon: Add custom label definitions and remove modservice descriptions
* Lexicon: Update moderation prefs
* SDK updates: remove label groups, reduce builtin labels, update mod-preference apis
* Lexicon: Update global labels with new reduced set
* Lexicon: Remove moderation.getService and add detailed option to getServices
* Lexicons: add severity=none to custom label value defs
* Implement custom label-value definition tooling
* All custom labels are no-self
* Backend impl for labeler lexicon updates (#2258)
* codegen
* clean up impl
* fix up tests
* Lexicon: modservice -> labeler
* Remove x- prefix behavior; add label value syntax rules; add custom label precedence rules
* Lexicon: Remove the ability to choose a defaultSetting from custom labels
* Rework test suites
* Give behaviors to all labels regardless of target
* sync up backend with lex changes
* fix labelers in dev-env agent
* lint protos
* update protos & views
* small bugfix & update tests
* tweak protos
* fix build issue from merge
---------
Co-authored-by: Devin Ivy <devinivy@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Foysal Ahamed <foysal@blueskyweb.xyz>
* 🚧 Working through an nullable review state
* ✅ Update snapshots on some tests
* ✅ Update snapshots on some tests
* ✅ Add test for reviewOptional status mutation
* ♻️ Rename reviewOptional -> reviewNone
* ✅ Use FOR UPDATE to respect db transactions