3.0 KiB
3.0 KiB
Tasks: enterprise-browser-network-discovery-trystero
Change ID: enterprise-browser-network-discovery-trystero
Package: @suaveplan/network-discovery-trystero
Target path: browser/network/network-discovery-trystero
Prerequisite packages on Verdaccio: @suaveplan/network, @suaveplan/error, @suaveplan/types, @suaveplan/crypto, @suaveplan/retry
1. Scaffold
- Create directory tree per
proposal.md. package.jsonv0.0.0,"sideEffects": false.dependencies:@suaveplan/network workspace:^,@suaveplan/error workspace:^,@suaveplan/types workspace:^,@suaveplan/crypto workspace:^,@suaveplan/retry workspace:^,trystero,zod catalog:forms,@opentelemetry/api catalog:observability,tslib catalog:builddevDependencies:vitest catalog:testing,@vitest/coverage-istanbul catalog:testing,@suaveplan/testing workspace:^,react catalog:browser,@types/react catalog:browser
tsconfig.json,vitest.config.ts(pool: forks).
2. Error codes + schema
TRYSTERO_RELAY_UNREACHABLE,TRYSTERO_ROOM_JOIN_FAILED. Register eagerly.TrysteroMessageSchemaper variant; register in@suaveplan/schema-registry.
3. Supporting modules
For event-emitter, intervals, room-config, trystero-room-manager, message-handlers:
- Implement each module; validate messages with Zod in
message-handlers. - Write
*.test.tsand*.md.
4. Presets (src/presets/)
- Export
TORRENT_TRACKERS,NOSTR_RELAYSwith{ url, addedAt, lastVerified }freshness metadata. - Write
presets.md.
5. TrysteroDiscovery (src/trystero-discovery/)
- Strict-mode: reject public default relay lists without
strict: false. - Encrypted rooms: if
config.encrypt, wrap messages with@suaveplan/cryptoAES-GCM. - Signed announcements: if
config.sign, sign metadata with@suaveplan/cryptoed25519. - Fallback via
@suaveplan/retry(replace any ad-hoc fallback logic). - Wire OTel metrics per strategy.
- Write
trystero-discovery.test.ts,trystero-discovery.md,trystero-discovery.types.ts.
6. Story
src/trystero-discovery/trystero-discovery.stories.tsxwith React devDep.
7. Tests (≤500 lines each)
tests/core.test.ts— config, strict-mode, start/stop.tests/messaging.test.ts— message send/receive per strategy, Zod validation.tests/messaging-advanced.test.ts— encrypted round-trip, signed announcement verification.
8. Verify + publish
bunx turbo lint typecheck test --filter=@suaveplan/network-discovery-trystero— green.bunx turbo test:coverage— 100%.- Strict-mode blocks public defaults.
- Encrypted-room round trip verified.
- Fallback transition produces typed event with
from/to. bun scripts/publish.ts --package @suaveplan/network-discovery-trystero.- Archive to
openspec/archive/2026-04-24-enterprise-browser-network-discovery-trystero/.