[app-server] filter analytics before cloning payloads

This commit is contained in:
Roy Han
2026-04-28 09:15:05 -07:00
parent 0caa739982
commit 3405165f46
3 changed files with 13 additions and 8 deletions

View File

@@ -223,7 +223,12 @@ impl AnalyticsEventsClient {
)));
}
pub fn track_request(&self, connection_id: u64, request_id: RequestId, request: ClientRequest) {
pub fn track_request(
&self,
connection_id: u64,
request_id: RequestId,
request: &ClientRequest,
) {
if !matches!(
request,
ClientRequest::TurnStart { .. } | ClientRequest::TurnSteer { .. }
@@ -233,7 +238,7 @@ impl AnalyticsEventsClient {
self.record_fact(AnalyticsFact::ClientRequest {
connection_id,
request_id,
request: Box::new(request),
request: Box::new(request.clone()),
});
}
@@ -331,10 +336,10 @@ impl AnalyticsEventsClient {
&self,
connection_id: u64,
request_id: RequestId,
response: Box<ClientResponsePayload>,
response: ClientResponsePayload,
) {
if !matches!(
response.as_ref(),
response,
ClientResponsePayload::ThreadStart(_)
| ClientResponsePayload::ThreadResume(_)
| ClientResponsePayload::ThreadFork(_)
@@ -346,7 +351,7 @@ impl AnalyticsEventsClient {
self.record_fact(AnalyticsFact::ClientResponse {
connection_id,
request_id,
response,
response: Box::new(response),
});
}

View File

@@ -184,14 +184,14 @@ macro_rules! client_request_definitions {
self,
request_id: RequestId,
) -> std::result::Result<
(RequestId, crate::Result, Option<Box<ClientResponsePayload>>),
(RequestId, crate::Result, Option<ClientResponsePayload>),
serde_json::Error,
> {
match self {
$(
Self::$variant(response) => {
let result = serde_json::to_value(&response)?;
Ok((request_id, result, Some(Box::new(Self::$variant(response)))))
Ok((request_id, result, Some(Self::$variant(response))))
}
)*
Self::InterruptConversation(response) => {

View File

@@ -724,7 +724,7 @@ impl MessageProcessor {
self.analytics_events_client.track_request(
connection_id.0,
connection_request_id.request_id.clone(),
codex_request.clone(),
&codex_request,
);
let app_server_client_name = session.app_server_client_name().map(str::to_string);