Commit Graph

12 Commits

  • feat: include Windows binary of the CLI in the npm release (#2040)
    To date, the build scripts in `codex-cli` still supported building the
    old TypeScript version of the Codex CLI to give Windows users something
    they can run, but we are just going to have them use the Rust version
    like everyone else, so:
    
    - updates `codex-cli/bin/codex.js` so that we run the native binary or
    throw if the target platform/arch is not supported (no more conditional
    usage based on `CODEX_RUST`, `use-native` file, etc.)
    - drops the `--native` flag from `codex-cli/scripts/stage_release.sh`
    and updates all the code paths to behave as if `--native` were passed
    (i.e., it is the only way to run it now)
    
    Tested this by running:
    
    ```
    ./codex-cli/scripts/stage_rust_release.py --release-version 0.20.0-alpha.2
    ```
  • chore: create a release script for the Rust CLI (#1479)
    This is a stopgap solution before migrating the build for the npm
    release to GitHub Actions (which is ultimately what should be done to
    ensure hermetic builds).
    
    The idea is that instead of continuing to create PRs like
    https://github.com/openai/codex/pull/1472 where I have to check in a
    change to the `WORKFLOW_URL`, this script uses `gh run list` to get the
    `WORKFLOW_URL` dynamically and then threads the value through to
    `install_native_deps.sh`.
    
    To create the 0.3.0 release on npm, I ran:
    
    ```shell
    ./codex-cli/scripts/stage_rust_release.py --release-version 0.3.0
    ```
    
    and then did `npm publish --dry-run` followed by `npm publish` in the
    temp directory created by `stage_rust_release.py`.
  • chore: update release scripts for the TypeScript CLI (#1472)
    This introduces two changes to make a quick fix so we can deploy the
    Rust CLI for `0.2.0` of `@openai/codex` on npm:
    
    - Updates `WORKFLOW_URL` to point to
    https://github.com/openai/codex/actions/runs/15981617627, which is the
    GitHub workflow run used to create the binaries for the `0.2.0` release
    we published to Homebrew.
    - Adds a `--version` option to `stage_release.sh` to specify what the
    `version` field in the `package.json` will be.
    
    Locally, I ran the following:
    
    ```
    ./codex-cli/scripts/stage_release.sh --native --version 0.2.0
    ```
    
    Previously, we only used the `--native` flag to publish to the `native`
    tag of `@openai/codex` (e.g., `npm publish --tag native`), but we should
    just publish this as the default tag for `0.2.0` to be consistent with
    what is in Homebrew.
    
    We can still publish one "final" version of the TypeScript CLI as 0.1.x
    later.
    
    Under the hood, this release will still contain `dist/cli.js`,
    `bin/codex-linux-sandbox-x64`, and `bin/codex-x86_64-apple-darwin`,
    which are not strictly necessary, but we'll fix that in `0.3.0`.
  • chore: ensure next Node.js release includes musl binaries for arm64 Linux (#1232)
    Target a workflow with more recent binary artifacts.
  • fix: use aarch64-unknown-linux-musl instead of aarch64-unknown-linux-gnu (#1228)
    Now that we have published a GitHub Release that contains arm64 musl
    artifacts for Linux, update the following scripts to take advantage of
    them:
    
    - `dotslash-config.json` now uses musl artifacts for the `linux-aarch64`
    target
    - `install_native_deps.sh` for the TypeScript CLI now includes
    `codex-linux-sandbox-aarch64-unknown-linux-musl` instead of
    `codex-linux-sandbox-aarch64-unknown-linux-gnu` for sandboxing
    - `codex-cli/bin/codex.js` now checks for `aarch64-unknown-linux-musl`
    artifacts instead of `aarch64-unknown-linux-gnu` ones
  • fix: for the @native release of the Node module, use the Rust version by default (#1084)
    Added logic so that when we run `./scripts/stage_release.sh --native`
    (for the `@native` version of the Node module), we drop a `use-native`
    file next to `codex.js`. If present, `codex.js` will now run the Rust
    CLI.
    
    Ran `./scripts/stage_release.sh --native` and verified that when the
    running `codex.js` in the staged folder:
    
    ```
    $ /var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.efvEvBlSN6/bin/codex.js --version
    codex-cli 0.0.2505220956
    ```
    
    it ran the expected Rust version of the CLI, as desired.
    
    While here, I also updated the Rust version to one that I cut today,
    which includes the new shell environment policy config option:
    https://github.com/openai/codex/pull/1061. Note this may "break" some
    users if the processes spawned by Codex need extra environment
    variables. (We are still working to determine what the right defaults
    should be for this option.)
  • chore: update install_native_deps.sh to use rust-v0.0.2505171051 (#995)
    Use a more recent built of the Rust binaries to include with the Node
    module.
  • chore: introduce new --native flag to Node module release process (#844)
    This PR introduces an optional build flag, `--native`, that will build a
    version of the Codex npm module that:
    
    - Includes both the Node.js and native Rust versions (for Mac and Linux)
    - Will run the native version if `CODEX_RUST=1` is set
    - Runs the TypeScript version otherwise
    
    Note this PR also updates the workflow URL to
    https://github.com/openai/codex/actions/runs/14872557396, as that is a
    build from today that includes everything up through
    https://github.com/openai/codex/pull/843.
    
    Test Plan:
    
    In `~/code/codex/codex-cli`, I ran:
    
    ```
    pnpm stage-release --native
    ```
    
    The end of the output was:
    
    ```
    Staged version 0.1.2505121317 for release in /var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.xd2p5ETYGN
    Test Node:
        node /var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.xd2p5ETYGN/bin/codex.js --help
    Test Rust:
        CODEX_RUST=1 node /var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.xd2p5ETYGN/bin/codex.js --help
    Next:  cd "/var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.xd2p5ETYGN" && npm publish --tag native
    ```
    
    I verified that running each of these commands ran the expected version
    of Codex.
    
    While here, I also added `bin` to the `files` list in `package.json`,
    which should have been done as part of
    https://github.com/openai/codex/pull/757, as that added new entries to
    `bin` that were matched by `.gitignore` but should have been included in
    a release.
  • chore: make build process a single script to run (#757)
    This introduces `./codex-cli/scripts/stage_release.sh`, which is a shell
    script that stages a release for the Node.js module in a temp directory.
    It updates the release to include these native binaries:
    
    ```
    bin/codex-linux-sandbox-arm64
    bin/codex-linux-sandbox-x64
    ```
    
    though this PR does not update Codex CLI to use them yet.
    
    When doing local development, run
    `./codex-cli/scripts/install_native_deps.sh` to install these in your
    own `bin/` folder.
    
    This PR also updates `README.md` to document the new workflow.
    
    ---
    [//]: # (BEGIN SAPLING FOOTER)
    Stack created with [Sapling](https://sapling-scm.com). Best reviewed
    with [ReviewStack](https://reviewstack.dev/openai/codex/pull/757).
    * #763
    * __->__ #757