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

44 lines
2.1 KiB
Markdown

# Tasks: drive-transport-webrtc-port
> Blocked on: `drive-mesh-port`. Soft-blocked on `network-webrtc-port` (will integrate when available).
## 1. Scaffold
- [ ] 1.1 `packages/drive/drive-transport-webrtc/` with `package.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` — `FrameType` enum, frame structs.
## 3. Peer connection
- [ ] 3.1 `src/peer/connection.ts` — wraps `RTCPeerConnection`, lifecycle, ICE handling via injected `SignallerClient`.
- [ ] 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 a `Map<peerId, PeerConnection>`. Implements `requestChunk`, `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` — `bufferedamountlow` event integration; pause/resume.
## 6. Spec
- [ ] 6.1 `openspec/specs/drive-transport-webrtc/spec.md` — `TRANSPORT-WRTC-01` … `-05` with `**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 fake `RTCPeerConnection` doubles.
## 8. Verify
- [ ] 8.1 `bunx turbo lint typecheck test --filter=@suaveplan/drive-transport-webrtc` green.
- [ ] 8.2 `bunx turbo test:coverage --filter=@suaveplan/drive-transport-webrtc` 100/100/100/100.
- [ ] 8.3 `bun scripts/openspec-conformance.ts @suaveplan/drive-transport-webrtc` PASS.