mirror of
https://github.com/openai/codex.git
synced 2026-05-05 13:51:29 +03:00
## Why `codex-core` was re-exporting APIs owned by sibling `codex-*` crates, which made downstream crates depend on `codex-core` as a proxy module instead of the actual owner crate. Removing those forwards makes crate boundaries explicit and lets leaf crates drop unnecessary `codex-core` dependencies. In this PR, this reduces the dependency on `codex-core` to `codex-login` in the following files: ``` codex-rs/backend-client/Cargo.toml codex-rs/mcp-server/tests/common/Cargo.toml ``` ## What - Remove `codex-rs/core/src/lib.rs` re-exports for symbols owned by `codex-login`, `codex-mcp`, `codex-rollout`, `codex-analytics`, `codex-protocol`, `codex-shell-command`, `codex-sandboxing`, `codex-tools`, and `codex-utils-path`. - Delete the `default_client` forwarding shim in `codex-rs/core`. - Update in-crate and downstream callsites to import directly from the owning `codex-*` crate. - Add direct Cargo dependencies where callsites now target the owner crate, and remove `codex-core` from `codex-rs/backend-client`.
43 lines
1.5 KiB
Rust
43 lines
1.5 KiB
Rust
use codex_shell_command::bash::extract_bash_command;
|
|
use codex_shell_command::bash::parse_shell_lc_plain_commands;
|
|
use codex_shell_command::powershell::extract_powershell_command;
|
|
|
|
const CANONICAL_BASH_SCRIPT_PREFIX: &str = "__codex_shell_script__";
|
|
const CANONICAL_POWERSHELL_SCRIPT_PREFIX: &str = "__codex_powershell_script__";
|
|
|
|
/// Canonicalize command argv for approval-cache matching.
|
|
///
|
|
/// This keeps approval decisions stable across wrapper-path differences (for
|
|
/// example `/bin/bash -lc` vs `bash -lc`) and across shell wrapper tools while
|
|
/// preserving exact script text for complex scripts where we cannot safely
|
|
/// recover a tokenized command sequence.
|
|
pub(crate) fn canonicalize_command_for_approval(command: &[String]) -> Vec<String> {
|
|
if let Some(commands) = parse_shell_lc_plain_commands(command)
|
|
&& let [single_command] = commands.as_slice()
|
|
{
|
|
return single_command.clone();
|
|
}
|
|
|
|
if let Some((_shell, script)) = extract_bash_command(command) {
|
|
let shell_mode = command.get(1).cloned().unwrap_or_default();
|
|
return vec![
|
|
CANONICAL_BASH_SCRIPT_PREFIX.to_string(),
|
|
shell_mode,
|
|
script.to_string(),
|
|
];
|
|
}
|
|
|
|
if let Some((_shell, script)) = extract_powershell_command(command) {
|
|
return vec![
|
|
CANONICAL_POWERSHELL_SCRIPT_PREFIX.to_string(),
|
|
script.to_string(),
|
|
];
|
|
}
|
|
|
|
command.to_vec()
|
|
}
|
|
|
|
#[cfg(test)]
|
|
#[path = "command_canonicalization_tests.rs"]
|
|
mod tests;
|