ci(bazel): install Node from node-version.txt in remote image#12205
Merged
ci(bazel): install Node from node-version.txt in remote image#12205
Conversation
This was referenced Feb 19, 2026
Collaborator
|
@zbarsky-openai I think this is appropriate in this case? |
1000f4b to
659e4d2
Compare
659e4d2 to
b28b426
Compare
b28b426 to
b0d4f8d
Compare
b0d4f8d to
050b277
Compare
050b277 to
cd49416
Compare
cd49416 to
d001c90
Compare
d001c90 to
06d66f0
Compare
06d66f0 to
d989419
Compare
bolinfest
approved these changes
Feb 20, 2026
d989419 to
5c805a6
Compare
fjord-oai
added a commit
that referenced
this pull request
Feb 20, 2026
## Summary
Tighten the `js_repl` freeform Lark grammar to block the most common
malformed payload wrappers before they reach runtime validation.
## What Changed
- Replaced the overly permissive `js_repl` freeform grammar (`start:
/[\s\S]*/`) with a structured grammar that still supports:
- plain JS source
- optional first-line `// codex-js-repl:` pragma followed by JS source
- Added grammar-level filtering for common bad payload shapes by
rejecting inputs whose first significant token starts with:
- `{` (JSON object wrapper like `{"code":"..."}`)
- `"` (quoted code string)
- `` ``` `` (markdown code fences)
- Implemented the grammar without regex lookahead/lookbehind because the
API-side Lark regex engine does not support look-around.
- Added a unit test to validate the grammar shape and guard against
reintroducing unsupported lookaround.
## Why
`js_repl` is a freeform tool, but the model sometimes emits wrapped
payloads (JSON, quoted strings, markdown fences) instead of raw
JavaScript. We already reject those at runtime, but this change moves
the constraint into the tool grammar so the model is less likely to
generate invalid tool-call payloads in the first place.
## Testing
- `cargo test -p codex-core
js_repl_freeform_grammar_blocks_common_non_js_prefixes`
- `cargo test -p codex-core parse_freeform_args_rejects_`
## Notes
- This intentionally over-blocks a few uncommon valid JS starts (for
example top-level `{ ... }` blocks or top-level quoted directives like
`"use strict";`) in exchange for preventing the common wrapped-payload
mistakes.
#### [git stack](https://github.com/magus/git-stack-cli)
- 👉 `1` #12300
- ⏳ `2` #12275
- ⏳ `3` #12205
- ⏳ `4` #12185
- ⏳ `5` #10673
5c805a6 to
c5e45df
Compare
fjord-oai
added a commit
that referenced
this pull request
Feb 20, 2026
## Summary This PR removes `codex.state` from the `js_repl` helper surface and removes all corresponding documentation/instruction references. ## Motivation Top-level bindings in `js_repl` now persist across cells, so the extra `codex.state` helper is redundant and adds unnecessary API/docs surface. ## Changes - Removed the long-lived `state` object from the Node kernel helper wiring. - Stopped exposing `codex.state` (and `context.state`) during `js_repl` execution. - Updated user-facing `js_repl` docs to remove `codex.state`. - Updated generated instruction text and related test expectations to list only: - `codex.tmpDir` - `codex.tool(name, args?)` #### [git stack](https://github.com/magus/git-stack-cli) - ✅ `1` #12300 - 👉 `2` #12275 - ⏳ `3` #12205 - ⏳ `4` #12185 - ⏳ `5` #10673
git-stack-id: rewrite/fold-first---4hsvb-0v9tp76_ git-stack-title: ci(bazel): install Node from node-version.txt in remote image
c5e45df to
3b29468
Compare
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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
Install Node in the Bazel remote execution image using the version pinned in
codex-rs/node-version.txt.Why
js_repltests run under Bazel remote execution and require a modern Node runtime. Runner-levelsetup-nodedoes not guarantee Node is available (or recent enough) inside the remote worker container.What changed
.github/workflows/Dockerfile.bazelto install Node from official tarballs at image build time.xz-utilsfor extracting.tar.xzarchives.codex-rs/node-version.txtinto the image build context and used it as the single source of truth for Node version.amd64 -> x64arm64 -> arm64node --versionnpm --versionImpact
js_repltests.codex-rs/node-version.txt.Testing
Follow-up
linux/amd64andlinux/arm64.rbe.bzlto roll out this runtime update in CI.git stack
1js_repl: block wrapped payload prefixes in grammar #123002js_repl: remove codex.state helper references #122753ci(bazel): install Node from node-version.txt in remote image #122054tests(js_repl): remove node-related skip paths from js_repl tests #121855Add feature-gated js_repl polling flow #10673