Repository navigation
feat(tunnel): the gateway relays the tunnel socket to the lease's worker - #1125
Merged
Merged
Conversation
…els and gets READY, and a device connection arrives as OPEN with its bytes as DATA (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ctions as OPEN and DATA (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ED and close 4003 (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…de and close 4003 (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…credit pausing only its connection (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…credit (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… a closed connection is ignored (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…lstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…when the socket closes, the lease ends or the daemon stops (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…a tunnel's rules and close its connections (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… may (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… worker (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… loopback listener and removes it on close (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…'s refusal reaches the holder with its code (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ction past 256 is closed (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e connection past 256 is closed (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ckincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ts and manuals (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…layed to the lease's worker (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…allstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…allstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…h a gateway (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…E through a gateway (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…older's socket 4003 through a gateway (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…h its code and reason (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ed 4003 through a gateway (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ly on a device proved its own (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…and closed 4003 through a gateway (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…or#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… gateway 1001 (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…llstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…al to 2 s (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… the gateway keeps it from the holder (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…E are in the OpenAPI document (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e manual describe tunnels through a gateway (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ops with the channel and the largest DATA is tested (callstackincubator#1113)
leonardoxr
marked this pull request as ready for review
October 31, 2026 04:45
Contributor
Author
|
@coderabbitai review Written by an agent. |
… manual budgets (callstackincubator#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Contributor
Author
Review ledgerRound 1: 690b688 {"findings":[{"id":"R1","role":"code","class":"architecture 10","outcome":"fixed","path":"src/tunnel/gateway-link.ts","round":"1","fix":"6c894eb6a9d7e4a3870802fcc3011a15792878f5"}]}Written by an agent. |
Merged
3 tasks done
… rules at start, name the call in refusals (callstackincubator#1112) A removal that fails keeps the loopback listener reserved and the device's reclaim frees it; the start sweep only reads a leased device's rules and reserves their ports; refusal texts follow the spec's shared values; a cancelled TcpStream no longer closes its readable twice. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…r#1112) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…lementation with input (callstackincubator#1113) Merge origin/task/1112. One src/modules/relay-channel.ts now holds the channel framing, channelSocket, the close mapping and the refusal bodies that input and tunnel each copied; the tunnel's coded relay failure answers 503 like input's. Tests: the gateway aborts the relay when the holder closes, when a worker frame is over the limit and when an upgrade is abandoned. The tunnel config row says a gateway serves it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ay channel names it (callstackincubator#1113) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This was referenced Oct 31, 2026
# Conflicts: # src/contract/AGENTS.md # src/contract/protocol.ts # src/daemon-protocol/index.test.ts # src/daemon/AGENTS.md # src/daemon/main.ts # src/drivers/android/index.test.ts # src/drivers/android/index.ts # src/modules/AGENTS.md # src/modules/testing.ts # website/src/content/docs/docs/reference/errors.mdx
# Conflicts: # src/input/AGENTS.md # src/modules/AGENTS.md
Contributor
Review notesNot blocking, not verified. Each is one reviewer's claim.
Written by an agent. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1113
Status
Implement: done Review: round 2 passed, 1 fixed Hardware: n/a Gate: running
openapi.test.tsshows the route's 503TUNNEL_UNAVAILABLEandWORKER_UNREACHABLE. — CI on the reviewed head;src/tunnel/gateway.test.ts,src/input/gateway.test.tsandsrc/http/openapi.test.tsrun in the fix runsremote-agents.mdxandconfiguration.mdx, checked by the claims reviewAssumptions
REFUSED BAD_REQUESTitself and closes 4003, since the worker's channel cannot carry a frame past the bound; a lone worker refuses a DATA over 65536 bytes the same way (fixed in The tunnel module: reverse a leased Android device's port over a lease WebSocket on a worker #1112), so the answer is the same on both doors.Review
Spec review: 0 blocking, 0 fixed, 0 notes. Code review: 1 blocking, 1 fixed, 1 notes. Claims review: 0 blocking, 0 fixed, 0 notes.
Rounds: 2. Tokens: 33.7M.
Runs: 9. Cost USD: 3.7555. Agent seconds: 1459.
Assessment: complete
Written by an agent.