Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0c6d47a
Add codex-exec-server crate
starr-openai Mar 16, 2026
33a4387
docs(exec-server): add protocol README
starr-openai Mar 17, 2026
6f2c889
refactor(exec-server): split transports from client launch
starr-openai Mar 17, 2026
672222e
test(exec-server): add unit coverage for transport and handshake
starr-openai Mar 17, 2026
45820f8
refactor(exec-server): tighten client lifecycle and output model
starr-openai Mar 17, 2026
7b70464
refactor(exec-server): split routing from handler
starr-openai Mar 17, 2026
11f1182
Document exec-server design flow and add lifecycle tests
starr-openai Mar 17, 2026
2548159
Expand exec-server unit test coverage
starr-openai Mar 17, 2026
30e094e
codex: address PR review feedback (#14862)
starr-openai Mar 17, 2026
238840f
exec-server: add in-process client mode
starr-openai Mar 17, 2026
4a3ae78
exec-server: make in-process client call handler directly
starr-openai Mar 17, 2026
c0b8f2d
exec-server: tighten retained-output reads
starr-openai Mar 17, 2026
678dbe2
exec-server: add optional sandbox start config
starr-openai Mar 18, 2026
52dd39b
Route unified exec and filesystem tools through exec-server
starr-openai Mar 18, 2026
690b9ce
Harden exec-server unified-exec follow-up
starr-openai Mar 18, 2026
2829c35
Add remote workspace remap for exec-server mode
starr-openai Mar 18, 2026
6095ec9
Load project docs through session environment
starr-openai Mar 18, 2026
25558eb
Load remote repo skills through session environment
starr-openai Mar 18, 2026
c2ad94b
Inject executor-aware filesystem into app-server
starr-openai Mar 18, 2026
7f5a9b8
Route app-server command exec through executor backend
starr-openai Mar 18, 2026
2b1791d
Route remote project docs and repo skills through executor environment
starr-openai Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions codex-rs/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions codex-rs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ members = [
"hooks",
"secrets",
"exec",
"exec-server",
"execpolicy",
"execpolicy-legacy",
"keyring-store",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7466,12 +7466,17 @@
"isFile": {
"description": "Whether this entry resolves to a regular file.",
"type": "boolean"
},
"isSymlink": {
"description": "Whether this entry is a symlink.",
"type": "boolean"
}
},
"required": [
"fileName",
"isDirectory",
"isFile"
"isFile",
"isSymlink"
],
"type": "object"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4110,12 +4110,17 @@
"isFile": {
"description": "Whether this entry resolves to a regular file.",
"type": "boolean"
},
"isSymlink": {
"description": "Whether this entry is a symlink.",
"type": "boolean"
}
},
"required": [
"fileName",
"isDirectory",
"isFile"
"isFile",
"isSymlink"
],
"type": "object"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,17 @@
"isFile": {
"description": "Whether this entry resolves to a regular file.",
"type": "boolean"
},
"isSymlink": {
"description": "Whether this entry is a symlink.",
"type": "boolean"
}
},
"required": [
"fileName",
"isDirectory",
"isFile"
"isFile",
"isSymlink"
],
"type": "object"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,8 @@ isDirectory: boolean,
/**
* Whether this entry resolves to a regular file.
*/
isFile: boolean, };
isFile: boolean,
/**
* Whether this entry is a symlink.
*/
isSymlink: boolean, };
2 changes: 2 additions & 0 deletions codex-rs/app-server-protocol/src/protocol/v2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2210,6 +2210,8 @@ pub struct FsReadDirectoryEntry {
pub is_directory: bool,
/// Whether this entry resolves to a regular file.
pub is_file: bool,
/// Whether this entry is a symlink.
pub is_symlink: bool,
}

/// Directory entries returned by `fs/readDirectory`.
Expand Down
1 change: 1 addition & 0 deletions codex-rs/app-server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ codex-arg0 = { workspace = true }
codex-cloud-requirements = { workspace = true }
codex-core = { workspace = true }
codex-environment = { workspace = true }
codex-exec-server = { path = "../exec-server" }
codex-otel = { workspace = true }
codex-shell-command = { workspace = true }
codex-utils-cli = { workspace = true }
Expand Down
1 change: 1 addition & 0 deletions codex-rs/app-server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -722,6 +722,7 @@ Streaming stdin/stdout uses base64 so PTY sessions can carry arbitrary bytes:
- `command/exec/outputDelta.capReached` is `true` on the final streamed chunk for a stream when `outputBytesCap` truncates that stream; later output on that stream is dropped.
- `command/exec.params.env` overrides the server-computed environment per key; set a key to `null` to unset an inherited variable.
- `command/exec/resize` is only supported for PTY-backed `command/exec` sessions.
- When `experimental_unified_exec_use_exec_server = true`, `command/exec` reuses the selected executor backend. In that mode, streaming exec/write/terminate are supported remotely, while sandboxed execution, initial terminal sizing, `command/exec/resize`, and `closeStdin` remain unsupported and return explicit errors.

### Example: Filesystem utilities

Expand Down
4 changes: 3 additions & 1 deletion codex-rs/app-server/src/codex_message_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,7 @@ pub(crate) struct CodexMessageProcessorArgs {
pub(crate) config: Arc<Config>,
pub(crate) cli_overrides: Vec<(String, TomlValue)>,
pub(crate) cloud_requirements: Arc<RwLock<CloudRequirementsLoader>>,
pub(crate) command_exec_manager: CommandExecManager,
pub(crate) feedback: CodexFeedback,
pub(crate) log_db: Option<LogDbLayer>,
}
Expand Down Expand Up @@ -468,6 +469,7 @@ impl CodexMessageProcessor {
config,
cli_overrides,
cloud_requirements,
command_exec_manager,
feedback,
log_db,
} = args;
Expand All @@ -483,7 +485,7 @@ impl CodexMessageProcessor {
pending_thread_unloads: Arc::new(Mutex::new(HashSet::new())),
thread_state_manager: ThreadStateManager::new(),
thread_watch_manager: ThreadWatchManager::new_with_outgoing(outgoing),
command_exec_manager: CommandExecManager::default(),
command_exec_manager,
pending_fuzzy_searches: Arc::new(Mutex::new(HashMap::new())),
fuzzy_search_sessions: Arc::new(Mutex::new(HashMap::new())),
background_tasks: TaskTracker::new(),
Expand Down
Loading
Loading