Repository navigation
fix: connection and server runtime fixes (upstream G6) - #998
Merged
Merged
Conversation
… (#15016) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit d668ffcd64d74daba16520cbbfb0fdb431983eac) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…#14893) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 8bc40b4e07bb7b4b0f71876d59520360c9bf958c) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ge (#14915) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit a7b3ce8c0896d123a7c3f02c586ff8193841cc09) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…connect (#15002) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 22e9d35613305a04a28e96f83abc10c1bcf4aa8a) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… sockets (#14897) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 9333509c918083cbfb7e66759ddbcbfa71a3a452) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…4903) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> (cherry picked from commit bf7121d7a25fe84d76561c3142b9433615a703a1) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…14908) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> (cherry picked from commit a8927712f8b3338fa3c47a0c657b6e11d7e9aaec) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 0080e80c00a3e333e3dcafd85b2615d56f84e3b8) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Extract the upstream 8bc40b4e07 refresh mapping into ShellStream so the no-re-enrichment behavior has focused regression coverage. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Add relay-target supervisor coverage for probe-instead-of-replace and credential changes during a probe, hoist the analytics test decoder, and use Effect.undefined in the late editor config test. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
The outdated-host update restarted the remote server, or relaunched a desktop-managed app, on a single click. The runtime now reads the host descriptor, asks for confirmation naming the method and the agent sessions that will stop, and sends nothing when declined. The success toast reports a desktop relaunch, the block message tells clients without an update action that desktop or web can start it, and the connection-runtime doc records the bare-socket path and its four-minute no-recommit timeout. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Replace the EnvironmentRegistry service casts with a helper that builds the full service and dies on unexpected calls. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Oct 3, 2026
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.
Ports upstream group G6 (connection and server runtime) from T3 Code. It covers relay tombstone noise, idle shell metadata reloads, how reconnects back off, analytics retries, Codex API-key identity warnings, slow editor discovery, and updating a server too old for the client to connect to. Part of upstream cycle #996.
Sources
d668ffcd64d74daba16520cbbfb0fdb431983eacsubagent threads stop publishing tombstones to the relaycherry-pick -xinto Pylon'sAgentAwarenessRelay. The relay identity and publish path are unchanged. A subagent thread only skips publishing when this relay has never published state for it.8bc40b4e07bb7b4b0f71876d59520360c9bf958cidle shells stop reloading every project once a minuteprojectsWithResolvedRepositoryIdentitiesinShellStream.tsand adds regression tests, because upstream shipped no test.repositoryIdentityis the only enriched field in Pylon, so the refresh frames carry the same data as before.a7b3ce8c0896d123a7c3f02c586ff8193841cc09Pi and ACP Registry drop the Early Access badgeProviderSettingsForm.test.ts,providerIconUtils.test.ts) still pass.22e9d35613305a04a28e96f83abc10c1bcf4aa8aoutdated servers can be updated when the client can't connectregistry.tskeeps Pylon'sEqual.equals(target/profile)matching and itsexpectedRelayTargetrace guard, and gainsunsupportedState(...). (3) Pylon'sSavedBackendListRowhas a different layout, so theOutdatedServerUpdateActionbutton sits next to "Check again" in Pylon's action column. The installer and self-update boundaries are unchanged. The client only drives an update when the host descriptor advertisesserverSelfUpdate. For adesktop-managedhost it also requiresdesktopAppUpdate === true, so desktop-managed updates stay with the desktop app. Thet3@<version>toast copy matches Pylon's existingServerUpdateAction.9333509c918083cbfb7e66759ddbcbfa71a3a452reconnects back off with jitter and keep healthy socketsAnalyticsServicethe retry, backoff, uuid and flush-lock change was merged on top of Pylon's no-baked-in-key gating: there is still no default PostHog key, and nothing is sent without one. Both Pylon's no-key test and upstream's retry/drop test are kept. Inconnection-runtime.md, Pylon's "retry policy" wording was merged with the new backoff paragraph.bf7121d7a25fe84d76561c3142b9433615a703a1API-key Codex installs no longer warn on every start~/.pylon-code/telemetry/anonymous-idpath.a8927712f8b3338fa3c47a0c657b6e11d7e9aaecCodex auth tokens are an omitted key0080e80c00a3e333e3dcafd85b2615d56f84e3b8editors appear once a slow discovery scan finishesStreaminexternalLauncher.ts). Pylon'sServerConfigStreamEventunion matches upstream's, sowithLateEditorConfigfolds every live event type.No upstream hunks were skipped. G1-owned services (RunExecutionService, ProviderSessionManager, EventSink, EffectOutbox) were not touched.
Pylon additions
test:projectsWithResolvedRepositoryIdentitiesregression tests. A refresh carries only the changed roots, the latest change for a root wins, and unknown roots are ignored.test:relay-target supervisor tests:Together with the upstream tests these cover primary (local), relay, and multi-environment registry reconnects. The new registry test is "keeps one session per environment across concurrent registrations and retries".
Lint cleanup in adopted tests: the analytics decoder is hoisted to module scope, and the editor test uses
Effect.undefined.Review follow-up (
fix(web): confirm before updating a host too old to connect)updateOutdatedHostnow reads the host descriptor, then asks aconfirm(plan)callback before opening the socket or reporting progress, and interrupts with nothing sent if declined. Web showsrequestConfirmDialogwithoutdatedHostUpdateConfirmation(plan):fromVersionnow comes from the fresh descriptor.desktop-app.ShellStream.ts.Verification
vp test runon 13 files: AgentAwarenessRelay, ShellStream, AnalyticsService, Identify, externalLauncher, ws, the client-runtime connection tests (compatibility, onboarding, outdatedHostUpdate, registry, supervisor), ProviderSettingsForm, providerIconUtils. 13 files and 218 tests pass, 1 skipped (already skipped before this change). After the follow-up tests: supervisor and ShellStream 70/70 pass, AnalyticsService and ws 13/13 pass.vp run -F t3 typecheck,@t3tools/client-runtime,@t3tools/web,@t3tools/contractsand@t3tools/mobile. No new diagnostics or suggestions in changed lines; the remaining suggestions are on lines that predate this branch. Desktop and shared were not touched.vp linton changed files: the remaining warnings were already there before this branch (an unusedlayerTestin AnalyticsService, React Compiler memoization in ConnectionsSettings).vp fmt --check: clean.Not verified / notes
serverUpdateServer,serverUpdateServerWithProgress,serverCommitDesktopUpdate), whose wire shape upstream says has not changed across protocol versions. The outdated-host path polls the descriptor for up to 4 minutes and does not reuse Pylon's desktop commit-retry loop (waitForDesktopUpdateTarget); a desktop host that relaunches without installing fails after the timeout. This is now documented indocs/internals/connection-runtime.md.preparePairingRegistration, covered byonboarding.test.ts). For a host that can update itself, the block message now adds "Pylon on desktop or web can start the update from Settings → Connections."Part of upstream cycle #996.
🤖 Generated with Claude Code