Add remote thread config loader protos (#18892)

## Why

Thread-scoped config needs a stable boundary between the app/session
owner and the config stack. Instead of having call sites manually copy
thread config fields into individual overrides, this adds the proto and
Rust plumbing needed for a `ThreadConfigLoader` implementation to return
typed sources that can be translated into ordinary config layer entries.

Keeping the remote payload typed also makes precedence easier to reason
about: session-owned thread config maps back to the existing session
config source, while user-owned thread config is represented separately
without introducing a new config-layer source until it has TOML-backed
fields.

## What changed

- Added the `codex.thread_config.v1` protobuf service and generated Rust
module for loading thread config sources.
- Added `RemoteThreadConfigLoader`, which calls the gRPC service, parses
`SessionThreadConfig` / `UserThreadConfig`, and validates provider
fields such as `wire_api`, auth timeout, and absolute auth cwd.
- Added proto generation tooling under
`config/scripts/generate-proto.sh` and
`config/examples/generate-proto.rs`.
- Added `ThreadConfigLoader::load_config_layers`, plus static/no-op
loader helpers, so tests and callers can use the same typed loader
interface while config-layer translation stays centralized.

## Verification

- `cargo test -p codex-config thread_config`
This commit is contained in:
Rasmus Rygaard authored and GitHub committed 2026-04-23 10:06:05 -07:00
1 parent a2f868c9d6
commit 0b4f694347
9 files changed
+1068

No files matched your search

+5
View File
@@ -2292,6 +2292,7 @@ dependencies = [
"libc",
"multimap",
"pretty_assertions",
"prost 0.14.3",
"schemars 0.8.22",
"serde",
"serde_json",
@@ -2300,8 +2301,12 @@ dependencies = [
"tempfile",
"thiserror 2.0.18",
"tokio",
"tokio-stream",
"toml 0.9.11+spec-1.1.0",
"toml_edit 0.24.0+spec-1.1.0",
"tonic",
"tonic-prost",
"tonic-prost-build",
"tracing",
"wildmatch",
"winapi-util",