feat(xmtp_api_d14n): XmtpMlsBidiStreams trait + v3 Subscribe transport#3771
Conversation
|
Claude finished @tylerhawkes's task —— View job Code Review CompletedReview Date: June 25, 2026 SummaryThis PR successfully introduces the XIP-83 bidirectional streaming capability for native-only targets. The author has already addressed multiple rounds of feedback, including the critical AuthMiddleware forwarding issue mentioned in the most recent comment. The implementation is thorough and follows existing patterns well. ✅ What's Good
📊 Test Coverage NoteCodecov reports 72.56% patch coverage with 31 lines missing. Most uncovered lines are:
This is acceptable given these are defensive/fallback code paths that are difficult to meaningfully test. 🟢 VerdictReady to merge. All previous review comments have been addressed, the implementation is sound, and test coverage is appropriate for the changes. No blocking issues remain. |
5329964 to
ba3c4de
Compare
22b2c8b to
a9ffc28
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3771 +/- ##
==========================================
- Coverage 84.44% 84.44% -0.01%
==========================================
Files 408 409 +1
Lines 59880 60013 +133
==========================================
+ Hits 50567 50675 +108
- Misses 9313 9338 +25 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
ba3c4de to
cf43cdd
Compare
249cf99 to
13bce00
Compare
cf43cdd to
7ef18f0
Compare
…#3769) **Stack 1/4** of the XIP-83 bidi client lane: #3769 → #3770 → #3771 → #3772. Regenerated `xmtp.mls.api.v1` from xmtp/proto#337: the bidirectional `Subscribe` RPC with versioned `SubscribeRequest`/`SubscribeResponse`, id-based `Mutate` (cursors, `history_only`), `Ping`/`Pong`, `TopicsLive`, `CATCHUP_COMPLETE`, and STARTED `capabilities`. Purely additive (+1,896 generated lines); `proto_version` pinned to that branch's sha — draft until the proto PR merges.
7ef18f0 to
af6ab11
Compare
13bce00 to
0f1cead
Compare
…efault-unsupported elsewhere) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
af6ab11 to
74f05a8
Compare
0f1cead to
8bd3ec0
Compare
**Stack 2/4** of the XIP-83 bidi client lane: #3769 → #3770 → #3771 → #3772. Adds one primitive to the protocol-agnostic `Client` trait: `bidi_stream(request, path, BoxDynStream<Bytes>) -> http::Response<BytesStream>` — outbound stream of encoded protobuf messages in, inbound message stream out. Default implementation errors ("not supported by this transport"), so gRPC-Web/wasm and mocks are untouched; forwarded through the `&T`/`Box`/`Arc`/boxed-client impls. `GrpcClient` overrides it natively via tonic `Grpc::streaming` + the existing `TransparentCodec`, reusing the NonBlocking stream machinery verbatim. `build_tonic_request` made generic over the body type. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ApprovabilityVerdict: Needs human review This PR introduces new bidirectional streaming infrastructure (XIP-83 trait and v3 Subscribe transport) which represents a new feature capability. While the implementation is well-structured and the author owns all changed files, new features introducing new communication patterns warrant human review. You can customize Macroscope's approvability policy. Learn more. |
8bd3ec0 to
b65f00e
Compare
Dismissing prior approval to re-evaluate b65f00e
…t (XIP-83, native-only) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
b65f00e to
c793213
Compare
Stack 3/4 of the XIP-83 bidi client lane: #3769 → #3770 → #3771 → #3772.
Native-only
XmtpMlsBidiStreamstrait inxmtp_proto::api_client—subscribe_bidi(BoxStream<SubscribeRequest>) -> Stream<Result<SubscribeResponse>>— and itsV3Clientimplementation: prost-encode outbound frames overbidi_stream("/xmtp.mls.api.v1.MlsApi/Subscribe"), decode inbound via the existingXmtpStream. Browsers stay onXmtpMlsStreams+ watchdog (gRPC-Web cannot full-duplex).🤖 Generated with Claude Code
Note
Add
XmtpMlsBidiStreamstrait and bidirectional streaming support to the v3 Subscribe transportXmtpMlsBidiStreamstrait inxmtp_proto(native-only) defining asubscribe_bidimethod for full-duplex MLS subscriptions per XIP-83.subscribe_bidiforV3Clientinbidi.rs, encoding outboundSubscribeRequestframes and decoding inboundSubscribeResponseframes over the underlyingClient::bidi_stream.bidi_streamto theClienttrait with a default implementation returning "not supported";GrpcClientoverrides this on native targets usingtonicbidirectional streaming.bidi_streamthrough all middleware layers:AuthMiddleware,MultiNodeClient,ReadWriteClient,ReadonlyClient, andBoxedClient.ReadonlyClientnow enforces write-deny checks on bidirectional streaming paths; wasm targets always return an unsupported error.Macroscope summarized c793213.