mirror of
https://github.com/openai/codex.git
synced 2026-11-08 16:38:30 +00:00
Include originator in plugin measurement analytics (#42445)
## What changed - Add `originator` to plugin measurement inputs and emitted analytics events. - Populate it from the turn originator when recording plugin measurements. - Extend analytics tests to verify the originator is preserved in event payloads. GitOrigin-RevId: 9998f829760222fc690dc8a10324794b5da27220
This commit is contained in:
1 parent
498d40b29f
commit
36984da442
7 files changed
+13
No files matched your search
@@ -860,6 +860,7 @@ fn plugin_measurements(rows: Vec<PluginMeasurementRow>) -> PluginMeasurementsInp
|
|||||||
thread_id: "thread-1".to_string(),
|
thread_id: "thread-1".to_string(),
|
||||||
turn_id: "turn-1".to_string(),
|
turn_id: "turn-1".to_string(),
|
||||||
item_id: "item-1".to_string(),
|
item_id: "item-1".to_string(),
|
||||||
|
originator: "codex_cli_rs".to_string(),
|
||||||
plugin_id: "sample@openai-curated".to_string(),
|
plugin_id: "sample@openai-curated".to_string(),
|
||||||
execution_id: "execution-1".to_string(),
|
execution_id: "execution-1".to_string(),
|
||||||
operation: "security_scan".to_string(),
|
operation: "security_scan".to_string(),
|
||||||
@@ -2796,6 +2797,7 @@ async fn plugin_measurement_batch_emits_directly_and_filters_invalid_rows() {
|
|||||||
"execution_id": "execution-1",
|
"execution_id": "execution-1",
|
||||||
"operation": "security_scan",
|
"operation": "security_scan",
|
||||||
"measurement_name": "finding_count",
|
"measurement_name": "finding_count",
|
||||||
|
"originator": "codex_cli_rs",
|
||||||
"number_value": 3.0,
|
"number_value": 3.0,
|
||||||
"dimensions": {"severity": "high"},
|
"dimensions": {"severity": "high"},
|
||||||
},
|
},
|
||||||
@@ -2810,6 +2812,7 @@ async fn plugin_measurement_batch_emits_directly_and_filters_invalid_rows() {
|
|||||||
"execution_id": "execution-1",
|
"execution_id": "execution-1",
|
||||||
"operation": "security_scan",
|
"operation": "security_scan",
|
||||||
"measurement_name": "files_scanned",
|
"measurement_name": "files_scanned",
|
||||||
|
"originator": "codex_cli_rs",
|
||||||
"number_value": 17.0,
|
"number_value": 17.0,
|
||||||
"dimensions": null,
|
"dimensions": null,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -424,6 +424,7 @@ async fn api_key_auth_sends_only_plugin_events_to_codex_backend() {
|
|||||||
thread_id: thread_id.to_string(),
|
thread_id: thread_id.to_string(),
|
||||||
turn_id: "turn-1".to_string(),
|
turn_id: "turn-1".to_string(),
|
||||||
item_id: "item-1".to_string(),
|
item_id: "item-1".to_string(),
|
||||||
|
originator: "codex_cli_rs".to_string(),
|
||||||
plugin_id: plugin_id.to_string(),
|
plugin_id: plugin_id.to_string(),
|
||||||
execution_id: "execution-1".to_string(),
|
execution_id: "execution-1".to_string(),
|
||||||
operation: "security_scan".to_string(),
|
operation: "security_scan".to_string(),
|
||||||
@@ -706,6 +707,7 @@ fn track_plugin_measurements_rejects_unbounded_inputs_before_queueing() {
|
|||||||
thread_id: "thread-1".to_string(),
|
thread_id: "thread-1".to_string(),
|
||||||
turn_id: "turn-1".to_string(),
|
turn_id: "turn-1".to_string(),
|
||||||
item_id: "item-1".to_string(),
|
item_id: "item-1".to_string(),
|
||||||
|
originator: "codex_cli_rs".to_string(),
|
||||||
plugin_id: "sample@openai-curated".to_string(),
|
plugin_id: "sample@openai-curated".to_string(),
|
||||||
execution_id: "execution-1".to_string(),
|
execution_id: "execution-1".to_string(),
|
||||||
operation: "security_scan".to_string(),
|
operation: "security_scan".to_string(),
|
||||||
|
|||||||
@@ -778,6 +778,7 @@ pub(crate) struct CodexPluginMeasurementEventParams {
|
|||||||
pub(crate) thread_id: String,
|
pub(crate) thread_id: String,
|
||||||
pub(crate) turn_id: String,
|
pub(crate) turn_id: String,
|
||||||
pub(crate) item_id: String,
|
pub(crate) item_id: String,
|
||||||
|
pub(crate) originator: String,
|
||||||
pub(crate) plugin_id: String,
|
pub(crate) plugin_id: String,
|
||||||
pub(crate) execution_id: String,
|
pub(crate) execution_id: String,
|
||||||
pub(crate) operation: String,
|
pub(crate) operation: String,
|
||||||
|
|||||||
@@ -604,6 +604,7 @@ pub struct PluginMeasurementsInput {
|
|||||||
pub thread_id: String,
|
pub thread_id: String,
|
||||||
pub turn_id: String,
|
pub turn_id: String,
|
||||||
pub item_id: String,
|
pub item_id: String,
|
||||||
|
pub originator: String,
|
||||||
pub plugin_id: String,
|
pub plugin_id: String,
|
||||||
pub execution_id: String,
|
pub execution_id: String,
|
||||||
pub operation: String,
|
pub operation: String,
|
||||||
|
|||||||
@@ -2055,6 +2055,7 @@ impl AnalyticsReducer {
|
|||||||
thread_id,
|
thread_id,
|
||||||
turn_id,
|
turn_id,
|
||||||
item_id,
|
item_id,
|
||||||
|
originator,
|
||||||
plugin_id,
|
plugin_id,
|
||||||
execution_id,
|
execution_id,
|
||||||
operation,
|
operation,
|
||||||
@@ -2070,6 +2071,7 @@ impl AnalyticsReducer {
|
|||||||
thread_id: thread_id.clone(),
|
thread_id: thread_id.clone(),
|
||||||
turn_id: turn_id.clone(),
|
turn_id: turn_id.clone(),
|
||||||
item_id: item_id.clone(),
|
item_id: item_id.clone(),
|
||||||
|
originator: originator.clone(),
|
||||||
plugin_id: plugin_id.clone(),
|
plugin_id: plugin_id.clone(),
|
||||||
execution_id: execution_id.clone(),
|
execution_id: execution_id.clone(),
|
||||||
operation: operation.clone(),
|
operation: operation.clone(),
|
||||||
|
|||||||
@@ -788,6 +788,7 @@ enabled = true
|
|||||||
let thread_request = mcp
|
let thread_request = mcp
|
||||||
.send_thread_start_request_with_auto_env(ThreadStartParams {
|
.send_thread_start_request_with_auto_env(ThreadStartParams {
|
||||||
model: Some("mock-model".to_string()),
|
model: Some("mock-model".to_string()),
|
||||||
|
service_name: Some("codex_work_desktop".to_string()),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.await?;
|
.await?;
|
||||||
@@ -953,6 +954,7 @@ enabled = true
|
|||||||
"measurement_name",
|
"measurement_name",
|
||||||
"number_value",
|
"number_value",
|
||||||
"operation",
|
"operation",
|
||||||
|
"originator",
|
||||||
"plugin_id",
|
"plugin_id",
|
||||||
"thread_id",
|
"thread_id",
|
||||||
"turn_id",
|
"turn_id",
|
||||||
@@ -960,6 +962,7 @@ enabled = true
|
|||||||
);
|
);
|
||||||
assert_eq!(event_params["thread_id"], thread_id);
|
assert_eq!(event_params["thread_id"], thread_id);
|
||||||
assert_eq!(event_params["turn_id"], turn_id);
|
assert_eq!(event_params["turn_id"], turn_id);
|
||||||
|
assert_eq!(event_params["originator"], "codex_work_desktop");
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ pub(crate) async fn finish_and_track_measurements(
|
|||||||
thread_id: session.thread_id().to_string(),
|
thread_id: session.thread_id().to_string(),
|
||||||
turn_id: turn.sub_id.clone(),
|
turn_id: turn.sub_id.clone(),
|
||||||
item_id: item_id.to_string(),
|
item_id: item_id.to_string(),
|
||||||
|
originator: turn.originator.clone(),
|
||||||
plugin_id: batch.plugin_id,
|
plugin_id: batch.plugin_id,
|
||||||
execution_id: batch.execution_id,
|
execution_id: batch.execution_id,
|
||||||
operation: batch.operation,
|
operation: batch.operation,
|
||||||
|
|||||||
Reference in new issue
Block a user