mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
protocol: remove submission-side serde from Op (#26674)
## Why Submission-side `Op` payloads are now an internal handoff inside the Rust codebase, so keeping a stable serde contract there adds complexity without a real wire consumer. ## What changed - remove serde/schema annotations from `Submission`, `Op`, and submission-only payload types like thread settings overrides, additional context, realtime conversation params, `TurnEnvironmentSelection`, and `RequestUserInputResponse` - delete the `Op` serialization tests and the now-unused double-option prompt serde helper - keep event/API-facing serialization where it is still required, and serialize the `request_user_input` tool output from its wire payload instead of the core response struct - update `protocol_v1.md` to call out that events remain the serialized transport surface while submission payloads are implementation details ## Testing - `just test -p codex-protocol` - `cargo check -p codex-core -p codex-app-server -p codex-thread-store` - `just test -p codex-core request_user_input`
This commit is contained in:
committed by
GitHub
Unverified
parent
479a14cf59
commit
470c20bf98
@@ -54,6 +54,7 @@ Since only 1 `Task` can be run at a time, for parallel tasks it is recommended t
|
||||
- These are messages sent on the `SQ` (UI -> `Codex`)
|
||||
- Has an string ID provided by the UI, referred to as `sub_id`
|
||||
- `Op` refers to the enum of all possible `Submission` payloads
|
||||
- In the current codebase these are primarily in-process Rust types rather than a stable serde wire contract
|
||||
- This enum is `non_exhaustive`; variants can be added at future dates
|
||||
- `Event`
|
||||
- These are messages sent on the `EQ` (`Codex` -> UI)
|
||||
@@ -103,7 +104,7 @@ The `response_id` returned from each turn matches the OpenAI `response_id` store
|
||||
|
||||
Can operate over any transport that supports bi-directional streaming. - cross-thread channels - IPC channels - stdin/stdout - TCP - HTTP2 - gRPC
|
||||
|
||||
Non-framed transports, such as stdin/stdout and TCP, should use newline-delimited JSON in sending messages.
|
||||
Events still serialize cleanly to newline-delimited JSON for non-framed transports, such as stdin/stdout and TCP. Submission payloads should be treated as implementation details unless a specific transport owns an explicit adapter.
|
||||
|
||||
## Example Flows
|
||||
|
||||
|
||||
Reference in New Issue
Block a user