feat: PDS E2EE document storage and intra-PDS sharing (v0)
Adds end-to-end encrypted document storage on the user's AT Proto PDS
with support for sharing between users on the same PDS instance.
Architecture:
- X25519 identity keypair per user (IndexedDB + passphrase-encrypted backup on PDS)
- Document keys wrapped via ECDH + HKDF + AES-256-GCM per-recipient
- Self-share pattern enables cross-device access via any signed-in session
- All document content stored as opaque encrypted blobs on PDS
- Only metadata (type, name, timestamps) visible to PDS operator
New modules:
- identity-keys.ts: X25519 key generation, storage, wrapping, backup/restore
- pds-sync.ts: Low-level AT Proto CRUD for 4 lexicon collections
- pds-documents.ts: High-level orchestration (setup, save, load, share, discover)
- pds-setup.ts: Boot-time identity check and setup/recovery flow
- pds-pull-sync.ts: Pull remote documents missing from local IndexedDB
- pds-share.ts: Share documents with other users by handle
Integration:
- Provider saves trigger non-blocking PDS sync after local IndexedDB write
- Boot sequence checks PDS identity after auth, pulls remote docs before render
- Feature-gated behind instance-info sync/sharing flags