Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1c83322
fix(codex-rs): add model-provider crates to workspace manifest
KooshaPari Jul 22, 2026
e161c7c
fix(codex-rs): backfill workspace deps for codex-cli manifest graph
KooshaPari Jul 22, 2026
feab082
fix(codex-rs): restore codex-skills crate manifest from upstream
KooshaPari Jul 22, 2026
d6a0dd9
fix(codex-rs): restore json-to-toml and prune missing workspace members
KooshaPari Jul 22, 2026
09cba62
fix(codex-rs): align sqlx 0.9 + v8 149 for sqlite links
KooshaPari Jul 22, 2026
9fdab01
fix(codex-rs): starlark 0.14 + restore codex-client error module
KooshaPari Jul 22, 2026
3c2b322
fix(codex-client): add url dep for TransportError
KooshaPari Jul 22, 2026
a2aa4cb
fix(codex-rs): TransportError url as String + rustls aws_lc_rs
KooshaPari Jul 22, 2026
fe6d878
fix(codex-rs): restore missing openapi-models and protocol sources
KooshaPari Jul 22, 2026
463a6a6
fix(codex-rs): restore file-search and utils/cli sources from upstream
KooshaPari Jul 22, 2026
d19d576
fix(codex-rs): sync state model from upstream and restore backfill_state
KooshaPari Jul 22, 2026
f96ff48
fix(codex-rs): restore missing secrets sanitizer and otel metrics mod…
KooshaPari Jul 22, 2026
f63dc3f
fix(codex-rs): restore workspace_acl and config overrides modules
KooshaPari Jul 22, 2026
a58572b
fix(codex-rs): restore agent_job model for helios fork state runtime
KooshaPari Jul 22, 2026
f067ce4
fix(codex-rs): restore login pkce module
KooshaPari Jul 22, 2026
00e9504
fix(codex-rs): restore additional missing upstream source modules
KooshaPari Jul 23, 2026
eed4e1d
fix(codex-rs): restore 57 missing source files from snapshot
KooshaPari Jul 23, 2026
7846d4c
fix(codex-rs): restore 6 missing include and source files
KooshaPari Jul 23, 2026
c4e9e32
fix(codex-rs): restore web_search_detail from snapshot
KooshaPari Jul 23, 2026
50cdd8f
fix(codex-rs): restore explorer builtin role config
KooshaPari Jul 23, 2026
eec6db7
fix(codex-rs): restore tui animation frame assets from snapshot
KooshaPari Jul 23, 2026
343b7c2
fix(codex-rs): use ReviewDecision::Denied for mcp-server approvals
KooshaPari Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1,975 changes: 226 additions & 1,749 deletions codex-rs/Cargo.lock

Large diffs are not rendered by default.

104 changes: 94 additions & 10 deletions codex-rs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,10 @@ members = [
"app-server",
"app-server-protocol",
"app-server-test-client",
"debug-client",
"apply-patch",
"arg0",
"feedback",
"codex-backend-openapi-models",
"cloud-requirements",
"cloud-tasks",
"cloud-tasks-client",
"cli",
Expand All @@ -30,6 +28,8 @@ members = [
"lmstudio",
"login",
"mcp-server",
"model-provider",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Declare the provider's inherited workspace deps

Adding model-provider as a workspace member makes Cargo load codex-rs/model-provider/Cargo.toml, but that manifest inherits codex-agent-identity, codex-aws-auth, codex-models-manager, and codex-response-debug-context from [workspace.dependencies], and none of those keys are defined in this root manifest. Any workspace/package build that reaches the newly advertised provider crate still aborts during manifest parsing, so the provider's inherited dependencies need to be added as part of this repair.

Useful? React with 👍 / 👎.

"model-provider-info",
"network-proxy",
"ollama",
"process-hardening",
Expand Down Expand Up @@ -61,7 +61,6 @@ members = [
"codex-api",
"state",
"codex-experimental-api-macros",
"test-macros",
]
resolver = "2"

Expand All @@ -78,11 +77,17 @@ license = "Apache-2.0"
# Internal
app_test_support = { path = "app-server/tests/common" }
codex-ansi-escape = { path = "ansi-escape" }
codex-agent-graph-store = { path = "agent-graph-store" }
codex-agent-identity = { path = "agent-identity" }
codex-analytics = { path = "analytics" }
codex-api = { path = "codex-api" }
codex-app-server = { path = "app-server" }
codex-app-server-client = { path = "app-server-client" }
codex-app-server-daemon = { path = "app-server-daemon" }
codex-app-server-protocol = { path = "app-server-protocol" }
codex-app-server-test-client = { path = "app-server-test-client" }
codex-app-server-transport = { path = "app-server-transport" }
codex-aws-auth = { path = "aws-auth" }
codex-apply-patch = { path = "apply-patch" }
codex-arg0 = { path = "arg0" }
codex-artifacts = { path = "artifacts" }
Expand All @@ -92,44 +97,83 @@ codex-chatgpt = { path = "chatgpt" }
codex-cli = { path = "cli" }
codex-client = { path = "codex-client" }
codex-cloud-requirements = { path = "cloud-requirements" }
codex-cloud-config = { path = "cloud-config" }
codex-cloud-tasks-mock-client = { path = "cloud-tasks-mock-client" }
codex-cloud-tasks-client = { path = "cloud-tasks-client" }
codex-code-mode = { path = "code-mode" }
codex-code-mode-protocol = { path = "code-mode-protocol" }
codex-collaboration-mode-templates = { path = "collaboration-mode-templates" }
codex-config = { path = "config" }
codex-connectors = { path = "connectors" }
codex-connectors-extension = { path = "ext/connectors" }
codex-context-fragments = { path = "context-fragments" }
codex-core = { path = "core" }
codex-core-api = { path = "core-api" }
codex-core-plugins = { path = "core-plugins" }
codex-core-skills = { path = "core-skills" }
codex-exec = { path = "exec" }
codex-exec-server = { path = "exec-server" }
codex-exec-server-protocol = { path = "exec-server-protocol" }
codex-execpolicy = { path = "execpolicy" }
codex-extension-api = { path = "ext/extension-api" }
codex-external-agent-migration = { path = "external-agent-migration" }
codex-external-agent-sessions = { path = "external-agent-sessions" }
codex-experimental-api-macros = { path = "codex-experimental-api-macros" }
codex-features = { path = "features" }
codex-feedback = { path = "feedback" }
codex-file-search = { path = "file-search" }
codex-file-system = { path = "file-system" }
codex-file-watcher = { path = "file-watcher" }
codex-git-utils = { path = "git-utils" }
codex-goal-extension = { path = "ext/goal" }
codex-guardian = { path = "ext/guardian" }
codex-home = { path = "codex-home" }
codex-hooks = { path = "hooks" }
codex-image-generation-extension = { path = "ext/image-generation" }
codex-install-context = { path = "install-context" }
codex-keyring-store = { path = "keyring-store" }
codex-linux-sandbox = { path = "linux-sandbox" }
codex-lmstudio = { path = "lmstudio" }
codex-login = { path = "login" }
codex-mcp = { path = "codex-mcp" }
codex-mcp-extension = { path = "ext/mcp" }
codex-mcp-server = { path = "mcp-server" }
codex-memories-extension = { path = "ext/memories" }
codex-memories-read = { path = "memories/read" }
codex-memories-write = { path = "memories/write" }
codex-message-history = { path = "message-history" }
codex-model-provider = { path = "model-provider" }
codex-model-provider-info = { path = "model-provider-info" }
codex-models-manager = { path = "models-manager" }
codex-network-proxy = { path = "network-proxy" }
codex-ollama = { path = "ollama" }
codex-otel = { path = "otel" }
codex-package-manager = { path = "package-manager" }
codex-plugin = { path = "plugin" }
codex-process-hardening = { path = "process-hardening" }
codex-protocol = { path = "protocol" }
codex-prompts = { path = "prompts" }
codex-responses-api-proxy = { path = "responses-api-proxy" }
codex-response-debug-context = { path = "response-debug-context" }
codex-rmcp-client = { path = "rmcp-client" }
codex-rollout = { path = "rollout" }
codex-rollout-trace = { path = "rollout-trace" }
codex-sandboxing = { path = "sandboxing" }
codex-secrets = { path = "secrets" }
codex-shell-command = { path = "shell-command" }
codex-shell-escalation = { path = "shell-escalation" }
codex-skills = { path = "skills" }
codex-skills-extension = { path = "ext/skills" }
codex-state = { path = "state" }
codex-stdio-to-uds = { path = "stdio-to-uds" }
codex-terminal-detection = { path = "terminal-detection" }
codex-test-binary-support = { path = "test-binary-support" }
codex-test-macros = { path = "test-macros" }
codex-thread-store = { path = "thread-store" }
codex-tools = { path = "tools" }
codex-tui = { path = "tui" }
codex-tui-app-server = { path = "tui_app_server" }
codex-uds = { path = "uds" }
codex-utils-absolute-path = { path = "utils/absolute-path" }
codex-utils-approval-presets = { path = "utils/approval-presets" }
codex-utils-cache = { path = "utils/cache" }
Expand All @@ -143,13 +187,18 @@ codex-utils-json-to-toml = { path = "utils/json-to-toml" }
codex-utils-oss = { path = "utils/oss" }
codex-utils-output-truncation = { path = "utils/output-truncation" }
codex-utils-path = { path = "utils/path-utils" }
codex-utils-path-uri = { path = "utils/path-uri" }
codex-utils-plugins = { path = "utils/plugins" }
codex-utils-pty = { path = "utils/pty" }
codex-utils-readiness = { path = "utils/readiness" }
codex-utils-rustls-provider = { path = "utils/rustls-provider" }
codex-utils-sandbox-summary = { path = "utils/sandbox-summary" }
codex-utils-sleep-inhibitor = { path = "utils/sleep-inhibitor" }
codex-utils-stream-parser = { path = "utils/stream-parser" }
codex-utils-string = { path = "utils/string" }
codex-utils-template = { path = "utils/template" }
codex-v8-poc = { path = "v8-poc" }
codex-web-search-extension = { path = "ext/web-search" }
codex-windows-sandbox = { path = "windows-sandbox-rs" }
core_test_support = { path = "core/tests/common" }
mcp_test_support = { path = "mcp-server/tests/common" }
Expand All @@ -160,11 +209,17 @@ allocative = "0.3.3"
ansi-to-tui = "7.0.0"
anyhow = "1"
arboard = { version = "3", features = ["wayland-data-control"] }
arc-swap = "1.9.0"
assert_cmd = "2"
assert_matches = "1.5.0"
async-channel = "2.3.1"
async-io = "2.6.0"
async-stream = "0.3.6"
async-trait = "0.1.89"
aws-config = "1"
aws-credential-types = "1"
aws-sigv4 = "1"
aws-types = "1"
askama = "0.14.0"
axum = { version = "0.8", default-features = false }
base64 = "0.22.1"
Expand All @@ -174,16 +229,30 @@ chardetng = "0.1.17"
chrono = "0.4.43"
clap = "4"
clap_complete = "4"
clatter = { version = "2.2.0", default-features = false, features = [
"alloc",
"getrandom",
"use-25519",
"use-aes-gcm",
"use-rust-crypto-ml-kem",
"use-sha",
] }
color-eyre = "0.6.3"
constant_time_eq = "0.3.1"
crossbeam-channel = "0.5.15"
crypto_box = { version = "0.9.1", features = ["seal"] }
crossterm = "0.28.1"
csv = "1.3.1"
ctor = "0.6.3"
deno_core_icudata = "0.77.0"
derive_more = "2"
divan = "0.1.21"
dns-lookup = "3.0.1"
diffy = "0.4.2"
dirs = "6"
dotenvy = "0.15.7"
dunce = "1.0.4"
ed25519-dalek = { version = "2.2.0", features = ["pkcs8"] }
encoding_rs = "0.8.35"
env-flags = "0.1.1"
env_logger = "0.11.9"
Expand All @@ -192,7 +261,10 @@ fd-lock = "4.0.4"
flate2 = "1.0.35"
futures = { version = "0.3", default-features = false }
gethostname = "1.1.0"
gix = { version = "0.81.0", default-features = false, features = ["sha1"] }
glob = "0.3"
globset = "0.4"
hmac = "0.12.1"
http = "1.3.1"
icu_decimal = "2.1"
icu_locale_core = "2.1"
Expand All @@ -205,13 +277,17 @@ indexmap = "2.12.0"
insta = "1.46.3"
inventory = "0.3.19"
itertools = "0.14.0"
jsonptr = { version = "0.7.1", default-features = false }
jsonwebtoken = "9.3.1"
keyring = { version = "3.6", default-features = false }
landlock = "0.4.4"
lazy_static = "1"
libc = "0.2.182"
libsqlite3-sys = { version = "0.37", default-features = false }
log = "0.4"
lru = "0.16.3"
maplit = "1.0.2"
memchr = "2.7.6"
mime_guess = "2.0.5"
multimap = "0.10.0"
notify = "8.2.0"
Expand All @@ -237,20 +313,22 @@ ratatui = "0.29.0"
ratatui-macros = "0.6.0"
regex = "1.12.3"
regex-lite = "0.1.8"
reqwest = "0.12"
reqwest = { version = "0.12", features = ["cookies"] }
rmcp = { version = "1.4.0", default-features = false }
runfiles = { git = "https://github.com/dzbarsky/rules_rust", rev = "b56cbaa8465e74127f1ea216f813cd377295ad81" }
rustls = { version = "0.23", default-features = false, features = [
"ring",
"aws_lc_rs",
"std",
] }
rcgen = "0.14.7"
rustls-native-certs = "0.8"
rustls-pki-types = "1.10"
schemars = "0.8.22"
seccompiler = "0.5.0"
semver = "1.0"
sentry = "0.46.0"
serde = "1"
serde_ignored = "0.1.14"
serde_json = "1"
serde_path_to_error = "0.1.20"
serde_with = "3.16"
Expand All @@ -261,22 +339,24 @@ sha2 = "0.10"
shlex = "1.3.0"
similar = "2.7.0"
socket2 = "0.6.1"
sqlx = { version = "0.8.6", default-features = false, features = [
sqlx = { version = "0.9.0", default-features = false, features = [
"chrono",
"json",
"macros",
"migrate",
"runtime-tokio-rustls",
"sqlite",
"runtime-tokio",
"tls-rustls",
"sqlite-bundled",
"time",
"uuid",
] }
starlark = "0.13.0"
starlark = { version = "0.14.2", default-features = false }
strum = "0.27.2"
strum_macros = "0.27.2"
supports-color = "3.0.2"
syntect = "5"
sys-locale = "0.3.2"
system-configuration = "0.6.1"
tar = "0.4.46"
tempfile = "3.23.0"
test-log = "0.2.19"
Expand All @@ -292,6 +372,8 @@ tokio-tungstenite = { version = "0.28.0", features = [
"rustls-tls-native-roots",
] }
tokio-util = "0.7.18"
tonic = { version = "0.14.3", default-features = false, features = ["channel", "codegen"] }
tonic-prost = "0.14.3"
toml = "0.9.5"
toml_edit = "0.24.0"
tracing = "0.1.44"
Expand All @@ -309,12 +391,14 @@ unicode-width = "0.2"
url = "2"
urlencoding = "2.1"
uuid = "1"
v8 = "130"
v8 = "=149.2.0"
vt100 = "0.16.2"
walkdir = "2.5.0"
webbrowser = "1.0"
which = "8"
whoami = "1.6.1"
wildmatch = "2.6.1"
winapi-util = "0.1.11"
zip = "2.4.2"
zstd = "0.13"

Expand Down
58 changes: 58 additions & 0 deletions codex-rs/ansi-escape/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
use ansi_to_tui::Error;
use ansi_to_tui::IntoText;
use ratatui::text::Line;
use ratatui::text::Text;

// Expand tabs in a best-effort way for transcript rendering.
// Tabs can interact poorly with left-gutter prefixes in our TUI and CLI
// transcript views (e.g., `nl` separates line numbers from content with a tab).
// Replacing tabs with spaces avoids odd visual artifacts without changing
// semantics for our use cases.
fn expand_tabs(s: &str) -> std::borrow::Cow<'_, str> {
if s.contains('\t') {
// Keep it simple: replace each tab with 4 spaces.
// We do not try to align to tab stops since most usages (like `nl`)
// look acceptable with a fixed substitution and this avoids stateful math
// across spans.
std::borrow::Cow::Owned(s.replace('\t', " "))
} else {
std::borrow::Cow::Borrowed(s)
}
}

/// This function should be used when the contents of `s` are expected to match
/// a single line. If multiple lines are found, a warning is logged and only the
/// first line is returned.
pub fn ansi_escape_line(s: &str) -> Line<'static> {
// Normalize tabs to spaces to avoid odd gutter collisions in transcript mode.
let s = expand_tabs(s);
let text = ansi_escape(&s);
match text.lines.as_slice() {
[] => "".into(),
[only] => only.clone(),
[first, rest @ ..] => {
tracing::warn!("ansi_escape_line: expected a single line, got {first:?} and {rest:?}");
first.clone()
}
}
}

pub fn ansi_escape(s: &str) -> Text<'static> {
// to_text() claims to be faster, but introduces complex lifetime issues
// such that it's not worth it.
match s.into_text() {
Ok(text) => text,
Err(err) => match err {
Error::NomError(message) => {
tracing::error!(
"ansi_to_tui NomError docs claim should never happen when parsing `{s}`: {message}"
);
panic!();
}
Error::Utf8Error(utf8error) => {
tracing::error!("Utf8Error: {utf8error}");
panic!();
}
},
}
}
Loading
Loading