fix(client): use lightweight connection probe#4137
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f0e42d6. Configure here.
ApprovabilityVerdict: Approved This PR adds a lightweight You can customize Macroscope's approvability policy. Learn more. |
pingdotgg#4112, pingdotgg#4132, pingdotgg#4134, pingdotgg#4006, pingdotgg#4137) (#171) * [codex] Route OpenCode missing-session errors through Effect (pingdotgg#3608) Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> (cherry picked from commit d0b9f8d) * [codex] canonicalize client timestamps (pingdotgg#4112) (cherry picked from commit da3c203) * fix: increase OpenCode server startup timeout from 5s to 30s (pingdotgg#4132) (cherry picked from commit 398140a) * fix(shared): delete unused agentAwareness phase predicates (pingdotgg#4134) (cherry picked from commit e8ff6bc) * perf(client): defer active thread cache writes (pingdotgg#4006) (cherry picked from commit 765e1b5) * fix(client): use lightweight connection probe (pingdotgg#4137) (cherry picked from commit 2640e6d) * fix(client): adapt deferred thread cache tests for fork warm-cache Fork warm-cache seeding stays on synchronizing and must not re-persist active turns. Gate the seed persistence write with shouldPersistThread and drive the pingdotgg#4006 regression test to live via a socket snapshot. Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com> --------- Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Maxwell Young <maxtheyoung@gmail.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: Kriday Dave <technocratix902@gmail.com> Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com> Co-authored-by: eeinarsson <128746408+eeinarsson@users.noreply.github.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com>
…ingdotgg#3749, pingdotgg#4159) (#172) * [codex] Route OpenCode missing-session errors through Effect (pingdotgg#3608) Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> (cherry picked from commit d0b9f8d) * [codex] canonicalize client timestamps (pingdotgg#4112) (cherry picked from commit da3c203) * fix: increase OpenCode server startup timeout from 5s to 30s (pingdotgg#4132) (cherry picked from commit 398140a) * fix(shared): delete unused agentAwareness phase predicates (pingdotgg#4134) (cherry picked from commit e8ff6bc) * perf(client): defer active thread cache writes (pingdotgg#4006) (cherry picked from commit 765e1b5) * fix(client): use lightweight connection probe (pingdotgg#4137) (cherry picked from commit 2640e6d) * fix(client): adapt deferred thread cache tests for fork warm-cache Fork warm-cache seeding stays on synchronizing and must not re-persist active turns. Gate the seed persistence write with shouldPersistThread and drive the pingdotgg#4006 regression test to live via a socket snapshot. Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com> * feat(web): themed sidebar header art for nightly and dev builds (pingdotgg#4130) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> (cherry picked from commit 53e3c98) * feat: add headless `t3 connect` setup for SSH hosts (pingdotgg#3749) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> (cherry picked from commit 7a820ab) * Refine T3 Connect authorization surfaces (pingdotgg#4159) Co-authored-by: codex <codex@users.noreply.github.com> (cherry picked from commit 2b180a2) --------- Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Maxwell Young <maxtheyoung@gmail.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: Kriday Dave <technocratix902@gmail.com> Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com> Co-authored-by: eeinarsson <128746408+eeinarsson@users.noreply.github.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com> Co-authored-by: maria <maria@kuuro.net> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: codex <codex@users.noreply.github.com>
* Add isolated app testing workflow (pingdotgg#4121) Co-authored-by: codex <codex@users.noreply.github.com> * feat(web): themed sidebar header art for nightly and dev builds (pingdotgg#4130) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> * feat: add headless `t3 connect` setup for SSH hosts (pingdotgg#3749) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * Refine T3 Connect authorization surfaces (pingdotgg#4159) Co-authored-by: codex <codex@users.noreply.github.com> * fix: increase OpenCode server startup timeout from 5s to 30s (pingdotgg#4132) * fix(shared): delete unused agentAwareness phase predicates (pingdotgg#4134) * fix(mobile): Stabilize native stack option updates (pingdotgg#4037) Co-authored-by: codex <codex@users.noreply.github.com> * Make test-t3-app skill discoverable by Claude Code (pingdotgg#4162) Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * fix(web): improve dev sidebar backdrop contrast & remove version pills (pingdotgg#4166) * Fix draft banner stack overlap (pingdotgg#4164) Co-authored-by: codex <codex@users.noreply.github.com> * Add portable mobile app testing guidance (pingdotgg#4165) Co-authored-by: codex <codex@users.noreply.github.com> * fix(client): use lightweight connection probe (pingdotgg#4137) --------- Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: maria <maria@kuuro.net> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: Kriday Dave <technocratix902@gmail.com> Co-authored-by: eeinarsson <128746408+eeinarsson@users.noreply.github.com>

Fixes #3553.
Related to #3911, which addresses initial
server.getConfiglatency. This PR is narrower: foreground connection health checks no longer invoke configuration hydration at all.What Changed
server.probeRPC that returns immediately and uses the existing orchestration-read authorization scope.server.getConfig.server.getConfigfor initial session configuration hydration.Why
When the application becomes active, the connection supervisor currently probes the session through
server.getConfig.That RPC performs configuration and provider discovery work, which can become slow on busy or resource-constrained Windows systems. If it exceeds the 15-second foreground probe timeout, the client treats an otherwise live WebSocket as unavailable, enters reconnecting state, and temporarily disables the composer.
A dedicated no-work RPC separates connection liveness from configuration hydration. This reduces false reconnects without changing initial configuration loading, authorization requirements, or the existing timeout and reconnect policy.
Testing
vp test packages/client-runtime/src/rpc/session.test.ts packages/client-runtime/src/connection/supervisor.test.ts— 28 tests passedvp check— passed with 10 unrelated existing web lint warningsvp run typecheck— passedgit diff --check— passedChecklist
Note
Low Risk
Behavior change is limited to probe RPC selection; initial config loading and auth scopes stay the same, with backward compatibility for servers missing the new capability.
Overview
Introduces
server.probe, a no-op RPC for liveness checks, and advertises it via the optionalconnectionProbecapability on the execution environment descriptor.Client-runtime still hydrates the session with
server.getConfigon connect, butRpcSession.probenow callsserver.probewhen the capability is present; older servers without it keep usingserver.getConfigfor probes. The WebSocket server wires the handler with the same orchestration-read scope as other read RPCs.Tests cover probe vs initial config traffic, legacy fallback, and supervisor behavior on application activation (probe without reconnect).
Reviewed by Cursor Bugbot for commit da511a9. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add lightweight
server.probeRPC for connection health checksserver.probeRPC contract (WsServerProbeRpc) with an empty payload and empty success response, authorized underAuthOrchestrationReadScope.RpcSession.probenow callsserver.probewhen the server reportscapabilities.connectionProbe: true, falling back toserver.getConfigfor legacy servers.connectionProbe: truein theExecutionEnvironmentDescriptor.capabilitiesreturned byServerEnvironment.make.server.proberequest instead of the heavierserver.getConfigcall.Macroscope summarized da511a9.