mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
The serverless agent path hand-rolled multi-relay subscribe/reconnect/ resubscribe/dedup in relay.rs — reimplementing what nostr-relay-pool (rust-nostr) already does, with gaps that caused the agent to miss messages when a single relay 502'd mid-session. Replace the serverless backend with nostr-relay-pool's RelayPool, which provides the standard Nostr client model used by damus/0xchat/nostr-tools: - persistent REQ per relay, fanned out across all relays - auto-reconnect (default) with jittered backoff - auto-resubscribe on reconnect (relays replay stored events on REQ) - merge + dedup across relays (Event notification = first-seen only) HarnessRelay now dispatches to ServerlessRelay when serverless; server mode (NIP-42 AUTH + HTTP bridge) is unchanged. RestClient and the typing/ presence publisher share the pool. Subscription IDs match the server-mode scheme so event routing is identical. Proven: e2e_agent_responds passes 3x consecutively (~3s each) against live public relays, surviving damus 503s via nos.lol. - 272 unit tests pass, clippy clean