[codex-analytics] add queued submission metadata

This commit is contained in:
rhan-oai
2026-04-06 12:26:33 -07:00
parent 472c15a74b
commit 59cfda78e2
58 changed files with 586 additions and 7 deletions

View File

@@ -155,6 +155,41 @@ pub(crate) async fn wait_for_analytics_event(
.await?
}
pub(crate) async fn wait_for_analytics_turn_event(
server: &MockServer,
read_timeout: Duration,
turn_id: &str,
) -> Result<Value> {
timeout(read_timeout, async {
loop {
let Some(requests) = server.received_requests().await else {
tokio::time::sleep(Duration::from_millis(25)).await;
continue;
};
for request in &requests {
if request.method != "POST"
|| request.url.path() != "/codex/analytics-events/events"
{
continue;
}
let payload: Value = serde_json::from_slice(&request.body)
.map_err(|err| anyhow::anyhow!("invalid analytics payload: {err}"))?;
let Some(events) = payload["events"].as_array() else {
continue;
};
if let Some(event) = events.iter().find(|event| {
event["event_type"] == "codex_turn_event"
&& event["event_params"]["turn_id"] == turn_id
}) {
return Ok::<Value, anyhow::Error>(event.clone());
}
}
tokio::time::sleep(Duration::from_millis(25)).await;
}
})
.await?
}
pub(crate) fn thread_initialized_event(payload: &Value) -> Result<&Value> {
let events = payload["events"]
.as_array()