mirror of
https://github.com/openai/codex.git
synced 2026-10-23 18:08:45 +00:00
## Why
Graceful shutdown rejects new sessions with an invalid-request error. Give clients a structured shutdown reason and show command center users why session creation is paused.
## What changed
- Add `data: {"reason":"serverShuttingDown"}` to app-server shutdown admission errors while retaining JSON-RPC code `-32600`.
- Show a dedicated shutdown message explaining the wait for active turns and automatic reconnection for non-embedded servers. Recognize older servers by their exact draining message only when error data is absent, and preserve retained-worktree cleanup guidance.
- Keep the command center reconnect presentation when a shutdown error covers the initial overview and no conversation is open.
## Testing
Extend admission and WebSocket shutdown assertions, add embedded and daemon shutdown message snapshots, and cover reconnection with a shutdown error over the initial command center.
GitOrigin-RevId: f167144c0ddc77872afdf3daac8bb1c89f3425b4
39 lines
1.3 KiB
Rust
39 lines
1.3 KiB
Rust
use codex_app_server_protocol::JSONRPCErrorError;
|
|
|
|
pub(crate) const INVALID_REQUEST_ERROR_CODE: i64 = -32600;
|
|
pub(crate) const METHOD_NOT_FOUND_ERROR_CODE: i64 = -32601;
|
|
pub const INVALID_PARAMS_ERROR_CODE: i64 = -32602;
|
|
pub(crate) const INTERNAL_ERROR_CODE: i64 = -32603;
|
|
pub(crate) const OVERLOADED_ERROR_CODE: i64 = -32001;
|
|
pub const INPUT_TOO_LARGE_ERROR_CODE: &str = "input_too_large";
|
|
|
|
pub(crate) fn server_draining_error() -> JSONRPCErrorError {
|
|
let mut error = invalid_request("Server is draining; retry after reconnecting");
|
|
error.data = Some(serde_json::json!({ "reason": "serverShuttingDown" }));
|
|
error
|
|
}
|
|
|
|
pub(crate) fn invalid_request(message: impl Into<String>) -> JSONRPCErrorError {
|
|
error(INVALID_REQUEST_ERROR_CODE, message)
|
|
}
|
|
|
|
pub(crate) fn method_not_found(message: impl Into<String>) -> JSONRPCErrorError {
|
|
error(METHOD_NOT_FOUND_ERROR_CODE, message)
|
|
}
|
|
|
|
pub(crate) fn invalid_params(message: impl Into<String>) -> JSONRPCErrorError {
|
|
error(INVALID_PARAMS_ERROR_CODE, message)
|
|
}
|
|
|
|
pub(crate) fn internal_error(message: impl Into<String>) -> JSONRPCErrorError {
|
|
error(INTERNAL_ERROR_CODE, message)
|
|
}
|
|
|
|
fn error(code: i64, message: impl Into<String>) -> JSONRPCErrorError {
|
|
JSONRPCErrorError {
|
|
code,
|
|
message: message.into(),
|
|
data: None,
|
|
}
|
|
}
|