nostrrelay/relay
Padreug 4811fcf352
Some checks failed
ci.yml / feat(nip17): support gift-wrapped private direct messages (pull_request) Failing after 0s
ci.yml / feat(nip17): support gift-wrapped private direct messages (push) Failing after 0s
feat(nip17): support gift-wrapped private direct messages
Generalize the AUTH-gated, recipient-only delivery rule from NIP-04 to
also cover NIP-17 kind 1059 gift wraps. When the relay is configured to
require AUTH for kind 1059, only the AUTH'd recipient named in the
event's `p` tag receives it; otherwise gift wraps broadcast like any
regular event.

- relay/event.py: add `is_seal`, `is_gift_wrap`, `is_private_message`
  helpers (kinds 13, 1059)
- relay/client_connection.py: rename `_is_direct_message_for_other` ->
  `_is_private_event_for_other`; key off `is_private_message` so the
  same gating applies to kinds 4 and 1059
- relay/relay.py: advertise NIPs 17, 44, 59 in NIP-11 supported_nips
- README: document NIP-17/44/59 transport-level support
- tests/test_nip17.py: unit tests for kind classification, AUTH-gated
  1059 delivery (recipient vs non-recipient vs unauthenticated), and
  regression coverage for kind 4 gating

NIP-44 (encryption) and NIP-59 (wrap/seal) are client-side concerns;
the relay treats payloads as opaque ciphertext and stores kind 1059
like any regular event.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 13:59:14 +02:00
..
__init__.py refactor: extract client_connection 2023-02-17 14:44:39 +02:00
client_connection.py feat(nip17): support gift-wrapped private direct messages 2026-05-03 13:59:14 +02:00
client_manager.py chore: add uv, linting, fixes (#39) 2025-10-30 10:43:27 +01:00
event.py feat(nip17): support gift-wrapped private direct messages 2026-05-03 13:59:14 +02:00
event_validator.py chore: add uv, linting, fixes (#39) 2025-10-30 10:43:27 +01:00
filter.py chore: add uv, linting, fixes (#39) 2025-10-30 10:43:27 +01:00
relay.py feat(nip17): support gift-wrapped private direct messages 2026-05-03 13:59:14 +02:00