feat: bundle Node.js runtime in the Gateway MSIX - #30
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a35bc4fd-e612-4be2-8166-7c100e8cf3ef
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: blocked before merge. Reviewed September 12, 2026, 2:43 AM ET / 06:43 UTC (Revision 5). ClawSweeper reviewWhat this changesThe PR packages the upstream-selected Node.js runtime, adds setup-time extraction and repair, and launches OpenClaw with the bundled tools. Merge readiness⛔ Blocked before merge - 3 items remain The change remains useful: main still requires device-installed Node.js. Both earlier code findings are resolved, and the updated maintainer comments settle the bundling and servicing policy. No blocking code defect was found; only acceptance of the remaining installed-package validation gap needs clarification. Priority: P2 Review scores
Verification
How this fits togetherThe Windows Gateway package contains OpenClaw and a native command-line launcher. Packaging selects the runtime, setup prepares it in per-user storage, and the launcher forwards commands to the packaged OpenClaw application. flowchart TD
A[Upstream build toolchain] --> B[Runtime version metadata]
B --> C[Windows package and Node archive]
C --> D[Setup validates or extracts runtime]
D --> E[Versioned per-user runtime]
E --> F[Native command launcher]
C --> F
F --> G[Packaged OpenClaw application]
Decision needed
Why: The policy reversal and historical migration objection are resolved, but the previously requested installed-package coverage remains explicitly unperformed; accepting that release-stage boundary requires maintainer intent. Before merge
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep the approved bundled-runtime design and establish installed setup and runtime-changing update coverage before the first official release. Do we have a high-confidence way to reproduce the issue? Not applicable: this adds bundled-runtime support rather than fixing a reproduced bug; current main's device-Node requirement is directly visible in source. Is this the best way to solve the issue? Yes: following upstream runtime selection and confining extraction to setup is coherent with the approved direction. Installed-package validation remains a release-readiness consideration. AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning medium; reviewed against 6f89905a5349. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (4 earlier review cycles)
|
Carry the upstream toolchain version through payload metadata and MSIX composition. Validate bundled executables without launching staged images, repair invalid caches under a cross-session installation lock, reclaim interrupted staging, and expose bundled tools only to the child PATH. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
xlinush
left a comment
There was a problem hiding this comment.
Two maintainer decisions remain before this should leave draft: runtime-servicing ownership and the install/upgrade preparation contract.
Preserve the System.CommandLine startup and NativeAOT gates while routing setup to bundled-runtime preparation and keeping openclaw arguments transparent. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
@copilot resolve the merge conflicts in this pull request |
What Problem This Solves
Remove the device-wide Node.js prerequisite by bundling the official architecture-specific runtime with the Gateway MSIX.
Why This Change Was Made
A majority of maintainers have voted to bundle Node.js with the MSIX again, revising the previous no-bundling decision in #4 and #12. OpenClaw will publish updated MSIX packages in response to Node.js security releases. Runtime servicing is delivered through package releases, not an independent runtime updater.
Node.js dependency resolution
openclaw/openclawatOPENCLAW_REF; that ref is unchanged. Removingpath: openclaw-sourceputs the source at the workspace root, so its local actions and their nested action references resolve correctly. The corresponding build-step working-directory overrides are removed.NODE_VERSION/PNPM_VERSIONpins and separate Node/Corepack setup steps withuses: ./.github/actions/setup-node-env. This runs the action from the selected upstream checkout, not from the packaging repository. Nonode-versionoverride is supplied. Optional Bun setup is disabled, and the explicitpnpm install --frozen-lockfilestep is retained.node -p 'process.versions.node'and record it in the job output andsource.json. Both Windows payload jobs use that exact version;Build-Payload.ps1rejects mismatches and records it inpayload-metadata.json.Build-MSIX.ps1uses that metadata to fetch the matching official Windows Node ZIP for x64 or ARM64 and includes it throughNodeRuntimeArchiveFileName. The launcher derives its runtime identity from the archive name; there is no separate launcher pin or duplicated support-range policy.Resolution follows upstream's policy, including compatible-cache reuse; it is not an unconditional latest-Node lookup.
User Impact
Run
clawctl setupafter installation and whenever an update changes the bundled Node version. Setup validates and repairs versioned LocalState runtimes, reclaims interrupted staging, and serializes installation across Windows sessions. It extracts the bundled ZIP without downloading a runtime.OpenClaw still executes directly from the immutable MSIX application tree. The child's
PATHincludes the bundled tools; arguments, working directory, exit codes, and the existing System.CommandLine control UX are preserved.Evidence
Validated at
5baa5e646d61de3257099c1a7f506ed235925ed9:Installed-MSIX fresh/upgrade flows and ARM64 execution were not exercised locally.