feat: add Jetstream WebSocket consumer for real-time ATProto ingestion (#1070)
add JetstreamConsumer that connects to ATProto Jetstream, filters for
known artist DIDs, and dispatches record events to the ingest task
layer via Docket.
- WebSocket consumer with auto-reconnect and exponential backoff
- Redis-persisted cursor for idempotent replay after restart
- Periodic DID set refresh from Artist table
- Runs as Docket perpetual task, disabled by default (JETSTREAM_ENABLED)
- JetstreamSettings in config for URL, cursor key, reconnect params
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
authored by