Skip to content

Commit d0dee3d

Browse files
committed
Rename codex-rs workspace and codex-acp package
1 parent 959dedf commit d0dee3d

1,163 files changed

Lines changed: 537 additions & 531 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/codex/labels/codex-rust-review.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ Things to look out for when doing the review:
1515

1616
## Code Organization
1717

18-
- Each create in the Cargo workspace in `codex-rs` has a specific purpose: make a note if you believe new code is not introduced in the correct crate.
19-
- When possible, try to keep the `core` crate as small as possible. Non-core but shared logic is often a good candidate for `codex-rs/common`.
18+
- Each create in the Cargo workspace in `nori-rs` has a specific purpose: make a note if you believe new code is not introduced in the correct crate.
19+
- When possible, try to keep the `core` crate as small as possible. Non-core but shared logic is often a good candidate for `nori-rs/common`.
2020
- Be wary of large files and offer suggestions for how to break things into more reasonably-sized files.
2121
- Rust files should generally be organized such that the public parts of the API appear near the top of the file and helper functions go below. This is analagous to the "inverted pyramid" structure that is favored in journalism.
2222

@@ -131,7 +131,7 @@ fn test_get_latest_messages() {
131131

132132
## Pull Request Body
133133

134-
- If the nature of the change seems to have a visual component (which is often the case for changes to `codex-rs/tui`), recommend including a screenshot or video to demonstrate the change, if appropriate.
134+
- If the nature of the change seems to have a visual component (which is often the case for changes to `nori-rs/tui`), recommend including a screenshot or video to demonstrate the change, if appropriate.
135135
- References to existing GitHub issues and PRs are encouraged, where appropriate, though you likely do not have network access, so may not be able to help here.
136136

137137
# PR Information

.github/dependabot.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ updates:
88
interval: weekly
99
- package-ecosystem: cargo
1010
directories:
11-
- codex-rs
12-
- codex-rs/*
11+
- nori-rs
12+
- nori-rs/*
1313
schedule:
1414
interval: weekly
1515
- package-ecosystem: devcontainers
@@ -21,6 +21,6 @@ updates:
2121
schedule:
2222
interval: weekly
2323
- package-ecosystem: rust-toolchain
24-
directory: codex-rs
24+
directory: nori-rs
2525
schedule:
2626
interval: weekly

.github/workflows/cargo-deny.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: blacksmith-4vcpu-ubuntu-2404
1111
defaults:
1212
run:
13-
working-directory: ./codex-rs
13+
working-directory: ./nori-rs
1414
env:
1515
# Disable sccache wrapper from .cargo/config.toml since it's not available
1616
# in the cargo-deny Docker container.
@@ -26,7 +26,7 @@ jobs:
2626
uses: EmbarkStudios/cargo-deny-action@v2
2727
with:
2828
rust-version: nightly
29-
manifest-path: ./codex-rs/Cargo.toml
29+
manifest-path: ./nori-rs/Cargo.toml
3030
log-level: warn
3131
command: check
3232
arguments: --all-features

.github/workflows/docs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Path: @/.github/workflows
1010

1111
### How it fits into the larger codebase
1212

13-
- The release workflow builds Rust binaries from `@/codex-rs/` and packages them via the Node.js launcher in `@/nori-cli/`
13+
- The release workflow builds Rust binaries from `@/nori-rs/` and packages them via the Node.js launcher in `@/nori-cli/`
1414
- Version detection delegates to `@/scripts/create_nori_release --get-next-version`, which queries git tags (via the GitHub API) as the single source of truth for version numbering
1515
- Stable releases use "synthetic commits" created by the `create_nori_release` script -- release tags point to commits that exist only for the release (not on any branch), with `Cargo.toml` updated to the release version, keeping the `main` branch's `Cargo.toml` at a placeholder `0.0.0`
1616
- The `nori-release.yml` workflow publishes to npm under the package name `nori-ai-cli`, with stable releases tagged `@latest` and snapshots tagged `@next`
@@ -25,7 +25,7 @@ Path: @/.github/workflows
2525
| Main branch push | Push to `main` (e.g., merged PR) with path filters | `publish_next=true` -- publishes a `@next` snapshot |
2626
| Manual dispatch | `workflow_dispatch` with inputs | Either `publish_next=true` or explicit version + optional `dry_run` |
2727

28-
**Path filters for main branch pushes** restrict triggering to changes in `codex-rs/**`, `nori-cli/**`, `scripts/**`, and the workflow file itself, so docs-only changes do not trigger a release.
28+
**Path filters for main branch pushes** restrict triggering to changes in `nori-rs/**`, `nori-cli/**`, `scripts/**`, and the workflow file itself, so docs-only changes do not trigger a release.
2929

3030
**Concurrency control** uses group `nori-release-${{ github.ref }}` with `cancel-in-progress` enabled only for main branch pushes. This means if two PRs merge in quick succession, the second run cancels the first since only the latest snapshot matters.
3131

.github/workflows/nori-release.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ on:
3838
branches:
3939
- main
4040
paths:
41-
- "codex-rs/**"
41+
- "nori-rs/**"
4242
- "nori-cli/**"
4343
- "scripts/**"
4444
- ".github/workflows/nori-release.yml"
@@ -225,24 +225,24 @@ jobs:
225225
uses: rui314/setup-mold@v1
226226

227227
- name: cargo check
228-
working-directory: codex-rs
228+
working-directory: nori-rs
229229
run: cargo check --profile ci-test --target ${{ env.MUSL_TARGET }} --all-targets
230230

231231
# - name: cargo clippy
232-
# working-directory: codex-rs
232+
# working-directory: nori-rs
233233
# run: cargo clippy --target ${{ env.MUSL_TARGET }} --all-features -- -D warnings
234234

235235
# - name: cargo build
236-
# working-directory: codex-rs
236+
# working-directory: nori-rs
237237
# run: |
238238
# cargo build --profile ci-test --target ${{ env.MUSL_TARGET }} -p nori-cli
239239
# cargo build --profile ci-test --target ${{ env.MUSL_TARGET }} -p mock-acp-agent
240240

241241
# - name: cargo test
242-
# working-directory: codex-rs
242+
# working-directory: nori-rs
243243
# run: |
244244
# cargo test --profile ci-test --target ${{ env.MUSL_TARGET }} --package tui-pty-e2e
245-
# cargo test --profile ci-test --target ${{ env.MUSL_TARGET }} --package codex-acp
245+
# cargo test --profile ci-test --target ${{ env.MUSL_TARGET }} --package nori-acp
246246
# cargo test --profile ci-test --target ${{ env.MUSL_TARGET }} --package nori-tui
247247
# cargo test --profile ci-test --target ${{ env.MUSL_TARGET }} --package nori-cli
248248
# cargo test --profile ci-test --target ${{ env.MUSL_TARGET }} --package codex-protocol
@@ -352,15 +352,15 @@ jobs:
352352
353353
- name: Set version in Cargo.toml
354354
if: ${{ needs.validate.outputs.publish_next == 'true' }}
355-
working-directory: codex-rs
355+
working-directory: nori-rs
356356
run: |
357357
VERSION="${{ needs.validate.outputs.version }}"
358358
echo "Injecting version $VERSION into Cargo.toml"
359359
perl -i -pe 's/^version = "[^"]*"/version = "'"$VERSION"'"/ && ($done=1) unless $done' Cargo.toml
360360
grep '^version' Cargo.toml | head -1
361361
362362
- name: Build release binaries
363-
working-directory: codex-rs
363+
working-directory: nori-rs
364364
run: |
365365
cargo build --release --target ${{ matrix.target }} -p nori-cli
366366
@@ -377,9 +377,9 @@ jobs:
377377
378378
# Copy the main binary
379379
if [[ "$RUNNER_OS" == "Windows" ]]; then
380-
cp codex-rs/target/$TARGET/release/nori.exe artifacts/vendor/$TARGET/nori/nori.exe
380+
cp nori-rs/target/$TARGET/release/nori.exe artifacts/vendor/$TARGET/nori/nori.exe
381381
else
382-
cp codex-rs/target/$TARGET/release/nori artifacts/vendor/$TARGET/nori/nori
382+
cp nori-rs/target/$TARGET/release/nori artifacts/vendor/$TARGET/nori/nori
383383
chmod +x artifacts/vendor/$TARGET/nori/nori
384384
fi
385385
@@ -527,7 +527,7 @@ jobs:
527527
run: |
528528
VERSION="${{ needs.validate.outputs.version }}"
529529
TAG_NAME="${{ needs.validate.outputs.tag_name }}"
530-
CARGO_TOML_PATH="codex-rs/Cargo.toml"
530+
CARGO_TOML_PATH="nori-rs/Cargo.toml"
531531
532532
echo "Creating synthetic commit for version $VERSION"
533533

.github/workflows/rust-ci.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
timeout-minutes: 30
1212
defaults:
1313
run:
14-
working-directory: codex-rs
14+
working-directory: nori-rs
1515
env:
1616
CARGO_INCREMENTAL: "0"
1717
# Speed up repeated builds across CI runs by caching compiled objects.
@@ -60,8 +60,8 @@ jobs:
6060
shell: bash
6161
run: |
6262
set -euo pipefail
63-
echo "hash=${{ hashFiles('codex-rs/Cargo.lock') }}" >> "$GITHUB_OUTPUT"
64-
echo "toolchain_hash=${{ hashFiles('codex-rs/rust-toolchain.toml') }}" >> "$GITHUB_OUTPUT"
63+
echo "hash=${{ hashFiles('nori-rs/Cargo.lock') }}" >> "$GITHUB_OUTPUT"
64+
echo "toolchain_hash=${{ hashFiles('nori-rs/rust-toolchain.toml') }}" >> "$GITHUB_OUTPUT"
6565
6666
# Cache cargo home directory (registry, git deps, etc.)
6767
- name: Restore cargo home cache
@@ -129,10 +129,10 @@ jobs:
129129
cargo build -p nori-cli --profile ci-test --target ${{ matrix.target }}
130130
- name: cargo test nori
131131
env:
132-
MOCK_ACP_AGENT_BIN: ${{ github.workspace }}/codex-rs/target/mock-acp-out/mock_acp_agent
132+
MOCK_ACP_AGENT_BIN: ${{ github.workspace }}/nori-rs/target/mock-acp-out/mock_acp_agent
133133
run: |
134134
cargo test --profile ci-test --target ${{ matrix.target }} --package tui-pty-e2e
135-
cargo test --profile ci-test --target ${{ matrix.target }} --package codex-acp
135+
cargo test --profile ci-test --target ${{ matrix.target }} --package nori-acp
136136
cargo test --profile ci-test --target ${{ matrix.target }} --package nori-tui
137137
cargo test --profile ci-test --target ${{ matrix.target }} --package nori-cli
138138
cargo test --profile ci-test --target ${{ matrix.target }} --package codex-protocol

docs.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ Path: @/
44

55
### Overview
66

7-
Nori CLI is a multi-provider terminal-based AI coding assistant built in Rust. It provides a unified interface for interacting with AI agents from Anthropic (Claude Code), OpenAI (Codex), and Google (Gemini). The project uses the Agent Client Protocol (ACP) for subprocess-based agent communication and features a Ratatui-based TUI. The implementation is in Rust (`codex-rs`), with a Node.js launcher for npm distribution (`nori-cli`).
7+
Nori CLI is a multi-provider terminal-based AI coding assistant built in Rust. It provides a unified interface for interacting with AI agents from Anthropic (Claude Code), OpenAI (Codex), and Google (Gemini). The project uses the Agent Client Protocol (ACP) for subprocess-based agent communication and features a Ratatui-based TUI. The implementation is in Rust (`nori-rs`), with a Node.js launcher for npm distribution (`nori-cli`).
88

99
### How it fits into the larger codebase
1010

1111
This is the root repository containing the Nori CLI project:
1212

13-
- **`codex-rs/`**: Main Rust implementation (Cargo workspace with all core functionality)
13+
- **`nori-rs/`**: Main Rust implementation (Cargo workspace with all core functionality)
1414
- **`nori-cli/`**: Node.js launcher for npm distribution (thin wrapper that invokes the Rust binary)
1515
- **`.github/`**: Build and CI configuration
1616
- **`.claude/`**: Skills and configuration for Claude-based development
@@ -25,12 +25,12 @@ The project was originally forked from OpenAI Codex CLI and has been adapted to
2525
```
2626
┌─────────────────────────────────────────────────┐
2727
│ nori CLI │
28-
│ (codex-rs/tui - main binary) │
28+
│ (nori-rs/tui - main binary) │
2929
├─────────────────────────────────────────────────┤
3030
│ nori-tui │
3131
│ Interactive Terminal Interface │
3232
├────────────────────────┬────────────────────────┤
33-
codex-acp (acp/) │ codex-core (core/) │
33+
nori-acp (acp/) │ codex-core (core/) │
3434
│ ACP Agent Connection │ Config, Auth, Tools │
3535
│ Subprocess Spawning │ Sandbox, Utilities │
3636
├────────────────────────┴────────────────────────┤
@@ -49,11 +49,11 @@ The project was originally forked from OpenAI Codex CLI and has been adapted to
4949

5050
| Command | Description | Implementation |
5151
| ----------------- | ------------------ | --------------------- |
52-
| `nori` | Interactive TUI | `codex-rs/tui` |
53-
| `nori exec` | Headless execution | `codex-rs/exec` |
54-
| `nori mcp-server` | MCP tool provider | `codex-rs/mcp-server` |
55-
| `nori login` | Authentication | `codex-rs/login` |
56-
| `nori apply` | Apply cloud diffs | `codex-rs/chatgpt` |
52+
| `nori` | Interactive TUI | `nori-rs/tui` |
53+
| `nori login` | Authentication | `nori-rs/cli` + `nori-rs/login` |
54+
| `nori logout` | Clear saved credentials | `nori-rs/cli` + `nori-rs/login` |
55+
| `nori sandbox ...` | Sandbox command runner | `nori-rs/cli` + platform sandbox crates |
56+
| `nori skillsets` | Skillset management shim | `nori-rs/cli` |
5757

5858
**Model Providers (via ACP):**
5959

@@ -87,10 +87,10 @@ nori resume <SESSION_ID> # Specific session
8787

8888
**MCP Support:**
8989

90-
Nori acts as both MCP client and server:
90+
Nori acts as an MCP client:
9191

92-
- **Client**: Connects to MCP servers defined in config
93-
- **Server**: Exposes Nori tools via `nori mcp-server`
92+
- Connects to MCP servers defined in config
93+
- Exposes MCP management through the interactive `/mcp` workflow in the TUI
9494

9595
### Things to Know
9696

@@ -99,7 +99,7 @@ Nori acts as both MCP client and server:
9999
- The `unstable` feature flag gates experimental ACP features like model switching
100100
- Cross-platform sandboxing is implemented using Landlock (Linux), Seatbelt (macOS), and restricted tokens (Windows)
101101
- Snapshot testing with `insta` is used extensively for TUI regression testing
102-
- The project has two justfiles: a root `@/justfile` implementing the Shared Local Runner Layer spec (standardized `help`, `dev`, `test`, `doctor` targets) and `@/codex-rs/justfile` for Rust-specific workflows. The root justfile wraps `codex-rs` by running `cd codex-rs && cargo ...` for each target. Both coexist -- run `just` from the repo root for the standard targets, or `cd codex-rs && just` for the Rust-native recipes
102+
- The project has two justfiles: a root `@/justfile` implementing the Shared Local Runner Layer spec (standardized `help`, `dev`, `test`, `doctor` targets) and `@/nori-rs/justfile` for Rust-specific workflows. The root justfile wraps `nori-rs` by running `cd nori-rs && cargo ...` for each target. Both coexist -- run `just` from the repo root for the standard targets, or `cd nori-rs && just` for the Rust-native recipes
103103
- `pnpm` is used for Node.js workspace management in `@/nori-cli/`
104104

105105
Created and maintained by Nori.

flake.nix

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
packages = forAllSystems (system:
1818
let
1919
pkgs = nixpkgs.legacyPackages.${system};
20-
codex-rs = pkgs.callPackage ./codex-rs { };
20+
nori_rs = pkgs.callPackage ./nori-rs { };
2121
in
2222
{
23-
codex-rs = codex-rs;
24-
default = codex-rs;
23+
nori-rs = nori_rs;
24+
default = nori_rs;
2525
}
2626
);
2727

@@ -34,7 +34,7 @@
3434
{
3535
default = pkgs.mkShell {
3636
# Inherit build dependencies from package definition
37-
inputsFrom = [ (pkgs.callPackage ./codex-rs { }) ];
37+
inputsFrom = [ (pkgs.callPackage ./nori-rs { }) ];
3838

3939
# Additional dev tools (Rust toolchain managed by rustup)
4040
buildInputs = linkerPkgs ++ [

justfile

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ help:
3434

3535
# Run the nori binary (primary dev entrypoint)
3636
dev *args:
37-
cd codex-rs && cargo run --bin nori -- "$@"
37+
cd nori-rs && cargo run --bin nori -- "$@"
3838

3939
# Run tests for a given scope (default: workspace)
4040
test *args:
@@ -44,25 +44,25 @@ test *args:
4444
shift 2>/dev/null || true
4545
case "$scope" in
4646
tui)
47-
cd codex-rs && cargo test -p nori-tui "$@"
47+
cd nori-rs && cargo test -p nori-tui "$@"
4848
;;
4949
acp)
50-
cd codex-rs && cargo test -p codex-acp "$@"
50+
cd nori-rs && cargo test -p nori-acp "$@"
5151
;;
5252
core)
53-
cd codex-rs && cargo test -p codex-core "$@"
53+
cd nori-rs && cargo test -p codex-core "$@"
5454
;;
5555
protocol)
56-
cd codex-rs && cargo test -p codex-protocol "$@"
56+
cd nori-rs && cargo test -p codex-protocol "$@"
5757
;;
5858
e2e)
59-
cd codex-rs && cargo build --bin nori && cargo test -p tui-pty-e2e "$@"
59+
cd nori-rs && cargo build --bin nori && cargo test -p tui-pty-e2e "$@"
6060
;;
6161
all)
62-
cd codex-rs && cargo test --all-features "$@"
62+
cd nori-rs && cargo test --all-features "$@"
6363
;;
6464
*)
65-
cd codex-rs && cargo test ${scope:+"$scope"} "$@"
65+
cd nori-rs && cargo test ${scope:+"$scope"} "$@"
6666
;;
6767
esac
6868

@@ -118,8 +118,8 @@ doctor:
118118
echo ""
119119
echo "Toolchain:"
120120
total=$((total + 1))
121-
if [ -f codex-rs/rust-toolchain.toml ]; then
122-
expected=$(grep 'channel' codex-rs/rust-toolchain.toml | head -1 | sed 's/.*= *"\(.*\)"/\1/')
121+
if [ -f nori-rs/rust-toolchain.toml ]; then
122+
expected=$(grep 'channel' nori-rs/rust-toolchain.toml | head -1 | sed 's/.*= *"\(.*\)"/\1/')
123123
active=$(rustup show active-toolchain 2>/dev/null | awk '{print $1}')
124124
if echo "$active" | grep -q "$expected"; then
125125
echo " ok rust toolchain ($active)"
@@ -139,24 +139,24 @@ doctor:
139139
exit 1
140140
fi
141141

142-
# Forward existing codex-rs targets
142+
# Forward existing nori-rs targets
143143

144144
# Format code
145145
fmt:
146-
cd codex-rs && cargo fmt -- --config imports_granularity=Item
146+
cd nori-rs && cargo fmt -- --config imports_granularity=Item
147147

148148
# Auto-fix clippy lints
149149
fix *args:
150-
cd codex-rs && cargo clippy --fix --all-features --tests --allow-dirty "$@"
150+
cd nori-rs && cargo clippy --fix --all-features --tests --allow-dirty "$@"
151151

152152
# Run clippy
153153
clippy:
154-
cd codex-rs && cargo clippy --all-features --tests
154+
cd nori-rs && cargo clippy --all-features --tests
155155

156156
# Fetch toolchain and dependencies
157157
install:
158-
cd codex-rs && rustup show active-toolchain && cargo fetch
158+
cd nori-rs && rustup show active-toolchain && cargo fetch
159159

160160
# Run tests with cargo-nextest
161161
nextest:
162-
cd codex-rs && cargo nextest run --no-fail-fast
162+
cd nori-rs && cargo nextest run --no-fail-fast

nori-releases.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Upstream releases are very rapid (multiple releases per week):
1414
Release Workflow (from rust-release.yml):
1515

1616
1. Manual process: git tag -a rust-vX.Y.Z → git push origin rust-vX.Y.Z
17-
2. CI validates tag matches codex-rs/Cargo.toml version
17+
2. CI validates tag matches nori-rs/Cargo.toml version
1818
3. Builds multi-platform binaries with code signing
1919
4. Publishes to GitHub Releases and npm
2020

@@ -100,7 +100,7 @@ git merge sync/upstream-v0.63.0 --no-ff -m "Sync upstream rust-v0.63.0"
100100
4. Resolve conflicts, test, push
101101

102102
```bash
103-
cd codex-rs && cargo test
103+
cd nori-rs && cargo test
104104
cargo insta review # if snapshot tests need updating
105105
git push origin main
106106
```

0 commit comments

Comments
 (0)