2.1 KiB
2.1 KiB
Tasks: drive-transport-webrtc-port
Blocked on:
drive-mesh-port. Soft-blocked onnetwork-webrtc-port(will integrate when available).
1. Scaffold
- 1.1
packages/drive/drive-transport-webrtc/withpackage.json(@suaveplan/drive-transport-webrtc@0.0.0),tsconfig.json,vitest.config.ts,README.md. - 1.2 Workspace deps:
@suaveplan/drive-mesh(interface),@suaveplan/error,@suaveplan/types,@suaveplan/streams,@opentelemetry/api,zod.
2. Framing codec
- 2.1
src/framing/encode.ts— length-prefix + frame-type writer. - 2.2
src/framing/decode.ts— accumulator-based reader; surfaces complete frames. - 2.3
src/framing/types.ts—FrameTypeenum, frame structs.
3. Peer connection
- 3.1
src/peer/connection.ts— wrapsRTCPeerConnection, lifecycle, ICE handling via injectedSignallerClient. - 3.2
src/peer/datachannel.ts— open/close, send with backpressure, receive with framing decode.
4. Transport impl
- 4.1
src/transport.ts—webrtcTransport(options)factory. Maintains aMap<peerId, PeerConnection>. ImplementsrequestChunk,advertise,onAdvertisement,peers. - 4.2
src/transport.ts— pending-request map (request-id ↔ deferred), so chunk-response frames resolve the right awaiter.
5. Backpressure
- 5.1
src/backpressure/watermark.ts—bufferedamountlowevent integration; pause/resume.
6. Spec
- 6.1
openspec/specs/drive-transport-webrtc/spec.md—TRANSPORT-WRTC-01…-05with**Verified by:**lines.
7. Conformance tests
- 7.1
src/framing/codec.spec-conformance.test.ts— round-trip framing (TRANSPORT-WRTC-01). - 7.2
src/transport.spec-conformance.test.ts— request/response correlation, advertisement broadcast, backpressure pause (TRANSPORT-WRTC-02…-05) — uses fakeRTCPeerConnectiondoubles.
8. Verify
- 8.1
bunx turbo lint typecheck test --filter=@suaveplan/drive-transport-webrtcgreen. - 8.2
bunx turbo test:coverage --filter=@suaveplan/drive-transport-webrtc100/100/100/100. - 8.3
bun scripts/openspec-conformance.ts @suaveplan/drive-transport-webrtcPASS.