mirror of
https://github.com/openai/codex.git
synced 2026-11-15 21:50:46 +00:00
Make clock reads synchronous and remove client clock requests (#61382)
## What changed - Make `TimeProvider::current_time` and `CodexThread::current_time` synchronous, with clock reads required to avoid yielding or calling back into the session. - Remove the experimental `currentTime/read` app-server request and its client-backed clock and sleep polling implementation. - Require a host-provided `TimeProvider` for external clocks. App-server thread startup now fails when `features.current_time_reminder.clock_source = "external"` has no provider. ## Testing Add coverage for external provider selection and rejection of app-server thread startup without an external provider. GitOrigin-RevId: 09479d6eb28453b343dee78b3673092e73ae5d73
This commit is contained in:
committed by
copyberry
parent
e40b0e62e2
commit
4aac2eacc5
@@ -2229,13 +2229,6 @@ mod tests {
|
||||
.ok_or_else(|| anyhow::anyhow!("missing MCP login completion fixture"))?,
|
||||
)?;
|
||||
assert!(mcp_login_completion_ts.contains("loginId?: string | null"));
|
||||
let server_request_ts = std::str::from_utf8(
|
||||
fixture_tree
|
||||
.get(Path::new("ServerRequest.ts"))
|
||||
.ok_or_else(|| anyhow::anyhow!("missing ServerRequest.ts fixture"))?,
|
||||
)?;
|
||||
assert_eq!(server_request_ts.contains("currentTime/read"), false);
|
||||
assert_eq!(server_request_ts.contains("CurrentTimeReadParams"), false);
|
||||
let typescript_index = std::str::from_utf8(
|
||||
fixture_tree
|
||||
.get(Path::new("index.ts"))
|
||||
@@ -2256,14 +2249,6 @@ mod tests {
|
||||
fixture_tree.contains_key(Path::new("v2/MockExperimentalMethodResponse.ts")),
|
||||
false
|
||||
);
|
||||
assert_eq!(
|
||||
fixture_tree.contains_key(Path::new("v2/CurrentTimeReadParams.ts")),
|
||||
false
|
||||
);
|
||||
assert_eq!(
|
||||
fixture_tree.contains_key(Path::new("v2/CurrentTimeReadResponse.ts")),
|
||||
false
|
||||
);
|
||||
assert_eq!(
|
||||
fixture_tree.contains_key(Path::new("v2/RemoteControlClient.ts")),
|
||||
false
|
||||
|
||||
@@ -1943,13 +1943,6 @@ server_request_definitions! {
|
||||
response: v2::AttestationGenerateResponse,
|
||||
},
|
||||
|
||||
#[experimental("currentTime/read")]
|
||||
/// Read the current time from an external clock owned by the client.
|
||||
CurrentTimeRead => "currentTime/read" {
|
||||
params: v2::CurrentTimeReadParams,
|
||||
response: v2::CurrentTimeReadResponse,
|
||||
},
|
||||
|
||||
/// DEPRECATED APIs below
|
||||
/// Request to approve a patch.
|
||||
/// This request is used for Turns started via the legacy APIs (i.e. SendUserTurn, SendUserMessage).
|
||||
@@ -3131,32 +3124,6 @@ mod tests {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn serialize_current_time_read_request() -> Result<()> {
|
||||
let params = v2::CurrentTimeReadParams {
|
||||
thread_id: "thread-123".to_string(),
|
||||
};
|
||||
let request = ServerRequest::CurrentTimeRead {
|
||||
request_id: RequestId::Integer(10),
|
||||
params: params.clone(),
|
||||
};
|
||||
assert_eq!(
|
||||
json!({
|
||||
"method": "currentTime/read",
|
||||
"id": 10,
|
||||
"params": {
|
||||
"threadId": "thread-123"
|
||||
}
|
||||
}),
|
||||
serde_json::to_value(&request)?,
|
||||
);
|
||||
|
||||
let payload = ServerRequestPayload::CurrentTimeRead(params);
|
||||
assert_eq!(request.id(), &RequestId::Integer(10));
|
||||
assert_eq!(payload.request_with_id(RequestId::Integer(10)), request);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn serialize_server_response() -> Result<()> {
|
||||
let response = ServerResponse::CommandExecutionRequestApproval {
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
use crate::JsonSchema;
|
||||
use crate::TS;
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[ts(export_to = "v2/")]
|
||||
pub struct CurrentTimeReadParams {
|
||||
pub thread_id: String,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[ts(export_to = "v2/")]
|
||||
pub struct CurrentTimeReadResponse {
|
||||
/// Current time as whole Unix seconds.
|
||||
#[ts(type = "number")]
|
||||
pub current_time_at: i64,
|
||||
}
|
||||
@@ -10,7 +10,6 @@ mod collaboration_mode;
|
||||
mod command_exec;
|
||||
mod computer_use_config;
|
||||
mod config;
|
||||
mod current_time;
|
||||
mod diagnostics;
|
||||
mod environment;
|
||||
mod experimental_feature;
|
||||
@@ -54,7 +53,6 @@ pub use collaboration_mode::*;
|
||||
pub use command_exec::*;
|
||||
pub use computer_use_config::*;
|
||||
pub use config::*;
|
||||
pub use current_time::*;
|
||||
pub use diagnostics::*;
|
||||
pub use environment::*;
|
||||
pub use experimental_feature::*;
|
||||
|
||||
Reference in New Issue
Block a user