Define the code-mode host gRPC protocol (#37510)

## What changed

- Add the `codex.code_mode.v1` protobuf API for managing code-mode sessions, executions, waits, tool callbacks, notifications, and content results.
- Generate and export the Rust client/server bindings with `tonic` under Cargo.
- Add Bazel protobuf targets and a `prost` toolchain that uses the workspace's Rust runtime versions.

GitOrigin-RevId: 51d9d044e01dab2f4d25ab79aa7a52585485eee3
This commit is contained in:
Channing Conger
2026-08-07 23:22:47 +00:00
committed by copyberry
parent 4ca25a2c4e
commit 8073dbb20b
10 changed files with 432 additions and 0 deletions

View File

@@ -2,6 +2,10 @@ module(name = "codex")
bazel_dep(name = "bazel_skylib", version = "1.9.0")
bazel_dep(name = "platforms", version = "1.0.0")
# Expose the public protobuf rules already used transitively by rules_rs.
bazel_dep(name = "protobuf", version = "34.0.bcr.1", repo_name = "com_google_protobuf")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "llvm", version = "0.8.11")
# Patch hermetic LLVM for Codex's custom libc++ and Windows gnullvm runtime
@@ -206,6 +210,10 @@ use_repo(rules_rust_bindgen, "rules_rust_bindgen")
register_toolchains("@rules_rust_bindgen//:all")
# Generate Rust protobuf/gRPC libraries against the workspace's prost/tonic
# versions instead of the versions bundled with rules_rs's default toolchain.
register_toolchains("//bazel/toolchains/prost:toolchain")
crate = use_extension("@rules_rs//rs:extensions.bzl", "crate")
crate.from_cargo(
cargo_lock = "//codex-rs:Cargo.lock",