mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
38f84b6b29
## Why We already plan to remove the shell-tool MCP path, and doing that cleanup first makes the follow-on `shell-escalation` work much simpler. This change removes the last remaining reason to keep `codex-rs/exec-server` around by moving the `codex-execve-wrapper` binary and shared shell test fixtures to the crates/tests that now own that functionality. ## What Changed ### Delete `codex-rs/exec-server` - Remove the `exec-server` crate, including the MCP server binary, MCP-specific modules, and its test support/test suite - Remove `exec-server` from the `codex-rs` workspace and update `Cargo.lock` ### Move `codex-execve-wrapper` into `codex-rs/shell-escalation` - Move the wrapper implementation into `shell-escalation` (`src/unix/execve_wrapper.rs`) - Add the `codex-execve-wrapper` binary entrypoint under `shell-escalation/src/bin/` - Update `shell-escalation` exports/module layout so the wrapper entrypoint is hosted there - Move the wrapper README content from `exec-server` to `shell-escalation/README.md` ### Move shared shell test fixtures to `app-server` - Move the DotSlash `bash`/`zsh` test fixtures from `exec-server/tests/suite/` to `app-server/tests/suite/` - Update `app-server` zsh-fork tests to reference the new fixture paths ### Keep `shell-tool-mcp` as a shell-assets package - Update `.github/workflows/shell-tool-mcp.yml` packaging so the npm artifact contains only patched Bash/Zsh payloads (no Rust binaries) - Update `shell-tool-mcp/package.json`, `shell-tool-mcp/src/index.ts`, and docs to reflect the shell-assets-only package shape - `shell-tool-mcp-ci.yml` does not need changes because it is already JS-only ## Verification - `cargo shear` - `cargo clippy -p codex-shell-escalation --tests` - `just clippy`
30 lines
874 B
TypeScript
30 lines
874 B
TypeScript
// Reports the path to the appropriate Bash binary bundled in this package.
|
|
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { resolveBashPath } from "./bashSelection";
|
|
import { readOsRelease } from "./osRelease";
|
|
import { resolveTargetTriple } from "./platform";
|
|
|
|
async function main(): Promise<void> {
|
|
const targetTriple = resolveTargetTriple(process.platform, process.arch);
|
|
const vendorRoot = path.resolve(__dirname, "..", "vendor");
|
|
const targetRoot = path.join(vendorRoot, targetTriple);
|
|
|
|
const osInfo = process.platform === "linux" ? readOsRelease() : null;
|
|
const { path: bashPath } = resolveBashPath(
|
|
targetRoot,
|
|
process.platform,
|
|
os.release(),
|
|
osInfo,
|
|
);
|
|
|
|
console.log(`Platform Bash is: ${bashPath}`);
|
|
}
|
|
|
|
void main().catch((err) => {
|
|
// eslint-disable-next-line no-console
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|