Files
2026-05-27 23:29:53 +01:00

3.1 KiB

Tasks — network-plugin-webrtc

Blocked on: network-core.

1. Scaffold

  • 1.1 packages/network/network-plugin-webrtc/ with package.json (@suaveplan/network-plugin-webrtc@0.0.0), tsconfig.json, vitest.config.ts, README.md.
  • 1.2 Workspace deps: @suaveplan/network, @suaveplan/error, @suaveplan/types, @suaveplan/events, @suaveplan/streams, @suaveplan/timing, @opentelemetry/api, zod.
  • 1.3 sideEffects: false.

2. Types

  • 2.1 src/types/signaling.types.ts — SignalingClient, SignalingMessage, SignalType.
  • 2.2 src/types/webrtc.types.ts — WebRTCConfig, PeerConnectionState, DataChannelConfig.
  • 2.3 src/types/ping.types.ts — PingFrame, PongFrame, LatencyRecord.
  • 2.4 src/error-codes.ts — defineCodes("NET_WEBRTC", [...]).

3. Signaling

  • 3.1 src/signaling/signaling-client.ts — SignalingClient interface.
  • 3.2 src/signaling/websocket-signaling-client.ts — WebSocket implementation with reconnect.

4. ICE management

  • 4.1 src/ice/ice-manager.ts — monitors iceConnectionState, triggers restart on failed.
  • 4.2 Configurable iceServers (STUN + TURN).

5. Data channel

  • 5.1 src/data-channel/data-channel-manager.ts — open/close channels, bufferedAmount backpressure.
  • 5.2 Emits Uint8Array messages on the bus.

6. Transport implementation

  • 6.1 src/transport/webrtc-transport.ts — implements Transport: connect, disconnect, send, onMessage, getConnectedPeers.
  • 6.2 Manages one RTCPeerConnection per peer.

7. Mesh

  • 7.1 src/mesh/webrtc-mesh.ts — auto-connects to discovered peers, maintains full-mesh.
  • 7.2 Removes peers on disconnect or heartbeat timeout.

8. Ping / latency

  • 8.1 src/ping/ping-manager.ts — correlated echo frames, RTT measurement.
  • 8.2 EMA smoothing with configurable window.
  • 8.3 Publishes peer:latency on NetworkBus.

9. Plugin wrapper

  • 9.1 src/plugin/webrtc-plugin.ts — WebRTCPlugin implements NetworkPlugin.
  • 9.2 Registers itself as a transport with the node on install().

10. Spec

  • 10.1 Update openspec/specs/network/spec.md with NET-06, NET-07.

11. Conformance tests

  • 11.1 src/transport/transport.spec-conformance.test.ts — Transport compliance.
  • 11.2 src/mesh/mesh.spec-conformance.test.ts — auto-connect, full-mesh, removal.
  • 11.3 src/ping/ping.spec-conformance.test.ts — echo, RTT, EMA.
  • 11.4 src/ice/ice.spec-conformance.test.ts — restart on failure.
  • 11.5 src/signaling/signaling.spec-conformance.test.ts — interface, WebSocket impl.
  • 11.6 src/backpressure/backpressure.spec-conformance.test.ts — bufferedAmount pause.
  • 11.7 src/error-codes.spec-conformance.test.ts — frozen registry.

12. Verify

  • 12.1 bunx turbo lint typecheck test --filter=@suaveplan/network-plugin-webrtc green.
  • 12.2 bunx turbo test:coverage --filter=@suaveplan/network-plugin-webrtc 100/100/100/100.
  • 12.3 bun scripts/openspec-conformance.ts @suaveplan/network-plugin-webrtc PASS.