[rush-daemon][WS2] Add daemon host bootstrap - #5928
Merged
Mo Jazayeri (mojaza) merged 4 commits intoAug 18, 2026
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Adds the opt-in, workspace-keyed rushd host bootstrap without implementing workspace sessions or operation routing.
Changes:
- Adds daemon startup, readiness, handshake, ping/pong, and shutdown lifecycles.
- Routes the new
rushdbinary through version-selectedrush-lib. - Extends pong metadata and updates tests, dependencies, API reports, and release records.
Reviewed changes
Copilot reviewed 25 out of 27 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
libraries/rush-lib/src/cli/RushDaemonCommandLine.ts |
Starts the daemon for the selected workspace. |
libraries/rush-lib/src/api/Rush.ts |
Exposes the internal daemon launcher. |
libraries/rush-lib/package.json |
Adds the daemon dependency. |
libraries/rush-daemon/src/test/RushDaemonHost.test.ts |
Tests lifecycle and control messages. |
libraries/rush-daemon/src/serveRushDaemon.ts |
Implements serve and signal handling. |
libraries/rush-daemon/src/RushDaemonHost.ts |
Implements the workspace daemon host. |
libraries/rush-daemon/src/index.ts |
Exports new lifecycle APIs. |
libraries/rush-daemon/src/DaemonControlSession.ts |
Handles handshake and liveness frames. |
libraries/rush-daemon/README.md |
Documents opt-in host availability. |
libraries/rush-daemon/package.json |
Adds protocol and transport dependencies. |
libraries/rush-daemon-protocol/src/test/ControlFrame.test.ts |
Updates pong codec coverage. |
libraries/rush-daemon-protocol/src/index.ts |
Exports the pong interface. |
libraries/rush-daemon-protocol/src/DaemonProtocolVersion.ts |
Advances the protocol version. |
libraries/rush-daemon-protocol/src/DaemonPongMessage.ts |
Defines expanded pong metadata. |
libraries/rush-daemon-protocol/src/DaemonControlMessage.ts |
Integrates the pong type. |
libraries/rush-daemon-protocol/src/ControlMessageValidation.ts |
Validates expanded pong payloads. |
common/reviews/api/rush-lib.api.md |
Records the launcher API. |
common/reviews/api/rush-daemon.api.md |
Records host lifecycle APIs. |
common/reviews/api/rush-daemon-protocol.api.md |
Records protocol API changes. |
common/config/subspaces/default/pnpm-lock.yaml |
Locks new workspace dependencies. |
common/config/rush/browser-approved-packages.json |
Approves new library dependency edges. |
common/changes/@rushstack/rush-daemon/mojazayeri-rush-daemon-host-bootstrap_2026-08-17-23-30.json |
Records the daemon change. |
common/changes/@rushstack/rush-daemon-protocol/mojazayeri-rush-daemon-host-bootstrap_2026-08-17-23-30.json |
Records the protocol change. |
common/changes/@microsoft/rush/mojazayeri-rush-daemon-host-bootstrap_2026-08-17-23-30.json |
Records the Rush launcher change. |
apps/rush/src/RushCommandSelector.ts |
Selects the rushd entrypoint. |
apps/rush/package.json |
Registers the rushd binary. |
apps/rush/bin/rushd |
Adds the executable shim. |
Files not reviewed (1)
- common/config/subspaces/default/pnpm-lock.yaml: Generated file
Suppressed comments (1)
libraries/rush-daemon-protocol/src/DaemonControlMessage.ts:87
- This public beta type is now emitted as undocumented in the API report. Retain the description of how the discriminant union is derived.
/** @beta */
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Review details
Files not reviewed (2)
- common/config/subspaces/build-tests-subspace/pnpm-lock.yaml: Generated file
- common/config/subspaces/default/pnpm-lock.yaml: Generated file
- Files reviewed: 26/29 changed files
- Comments generated: 0 new
- Review effort level: Balanced
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Mo Jazayeri (mojaza)
force-pushed
the
mojazayeri-microsoft-rush-daemon-host-bootstrap
branch
from
August 18, 2026 17:41
3bd2f7b to
387a196
Compare
Mo Jazayeri (mojaza)
enabled auto-merge (squash)
August 18, 2026 18:33
Bharat Middha (bmiddha)
approved these changes
Aug 18, 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.
Summary
Adds the next scoped WS2 increment for #5897: a workspace-keyed daemon host that can bind, announce readiness, negotiate the wire protocol, answer liveness probes, and shut down cleanly. This intentionally does not implement WorkspaceSession or operation routing.
Details
RushDaemonHostandserveRushDaemonAsynclifecycle APIs around the WS1 transport listener and lockfile.hello/helloAckandping/pong; pong now reports uptime, protocol version, and daemon version while accepting legacy pong payloads.rushdexecutable directly to@rushstack/rush-daemon; it discovers the nearestrush.jsonwithout adding integration torush-libor changing default Rush behavior.How it was tested
rush installrush test --only @rushstack/rush-daemon-protocol --only @rushstack/rush-daemon-transport --only @rushstack/rush-daemonrushdentrypoint, workspace discovery, Windows named-pipe startup, lockfile/readiness ordering, handshake, ping/pong metadata, active connection shutdown, and artifact cleanup.Impacted documentation
N/A