Skip to content

Commit 23044f6

Browse files
fix: publishing missing datapoints in UserTriggerDecisionEvent telemetry events (#217)
* Fix publishing missing datapoints in UserTriggerDecisionEvent telemetry events * Fix publishing missing datapoints in UserTriggerDecisionEvent telemetry events
1 parent 83e218c commit 23044f6

File tree

4 files changed

+21
-5
lines changed

4 files changed

+21
-5
lines changed

crates/fig_telemetry/src/event.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ pub(crate) mod tests {
101101
request_id: "XXX".into(),
102102
suggestion_state: SuggestionState::Accept,
103103
edit_buffer_len: Some(123),
104-
suggested_chars_len: Some(42),
104+
suggested_chars_len: 42,
105+
number_of_recommendations: 3,
105106
latency: Duration::from_millis(500),
106107
terminal: Some("vscode".into()),
107108
terminal_version: Some("1.0".into()),

crates/fig_telemetry/src/lib.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,13 +345,17 @@ impl Client {
345345
request_id,
346346
latency,
347347
suggestion_state,
348+
suggested_chars_len,
349+
number_of_recommendations,
348350
..
349351
} => {
350352
self.send_cw_telemetry_user_trigger_decision_event(
351353
session_id.clone(),
352354
request_id.clone(),
353355
*latency,
354356
suggestion_state.is_accepted(),
357+
*suggested_chars_len,
358+
*number_of_recommendations,
355359
)
356360
.await;
357361
},
@@ -527,6 +531,8 @@ impl Client {
527531
request_id: String,
528532
latency: Duration,
529533
accepted: bool,
534+
suggested_chars_len: i32,
535+
number_of_recommendations: i32,
530536
) {
531537
let Some(codewhisperer_client) = self.codewhisperer_client.clone() else {
532538
return;
@@ -554,6 +560,9 @@ impl Client {
554560
.programming_language(programming_language)
555561
.completion_type(CompletionType::Line)
556562
.suggestion_state(suggestion_state.into())
563+
.accepted_character_count(if accepted { suggested_chars_len } else { 0 })
564+
.number_of_recommendations(number_of_recommendations)
565+
.generated_line(1)
557566
.recommendation_latency_milliseconds(latency.as_secs_f64() * 1000.0)
558567
.timestamp(DateTime::from(SystemTime::now()))
559568
.build()

crates/fig_telemetry_core/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ impl Event {
156156
codewhispererterminal_duration: None,
157157
codewhispererterminal_accepted: Some(suggestion_state.is_accepted().into()),
158158
codewhispererterminal_typed_count: edit_buffer_len.map(Into::into),
159-
codewhispererterminal_suggested_count: suggested_chars_len.map(Into::into),
159+
codewhispererterminal_suggested_count: Some(Into::into(suggested_chars_len as i64)),
160160
codewhispererterminal_terminal: terminal.map(Into::into),
161161
codewhispererterminal_terminal_version: terminal_version.map(Into::into),
162162
codewhispererterminal_shell: shell.map(Into::into),
@@ -319,7 +319,8 @@ pub enum EventType {
319319
request_id: String,
320320
suggestion_state: SuggestionState,
321321
edit_buffer_len: Option<i64>,
322-
suggested_chars_len: Option<i64>,
322+
suggested_chars_len: i32,
323+
number_of_recommendations: i32,
323324
latency: Duration,
324325
terminal: Option<String>,
325326
terminal_version: Option<String>,

crates/figterm/src/inline/mod.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ impl TelemetryQueue {
8787
suggestion_state,
8888
edit_buffer_len,
8989
suggested_chars_len,
90+
number_of_recommendations,
9091
latency,
9192
..
9293
} = item;
@@ -101,6 +102,7 @@ impl TelemetryQueue {
101102
suggestion_state,
102103
edit_buffer_len,
103104
suggested_chars_len,
105+
number_of_recommendations,
104106
latency,
105107
terminal: current_terminal().map(|s| s.internal_id().into_owned()),
106108
terminal_version: current_terminal_version().map(Into::into),
@@ -126,7 +128,8 @@ struct TelemetryQueueItem {
126128
request_id: String,
127129
suggestion_state: SuggestionState,
128130
edit_buffer_len: Option<i64>,
129-
suggested_chars_len: Option<i64>,
131+
suggested_chars_len: i32,
132+
number_of_recommendations: i32,
130133
latency: Duration,
131134
}
132135

@@ -254,6 +257,7 @@ pub async fn handle_request(
254257
let request_id = output.request_id.unwrap_or_default();
255258
let session_id = output.session_id.unwrap_or_default();
256259
let completions = output.recommendations;
260+
let number_of_recommendations = completions.len();
257261
let mut completion_cache = COMPLETION_CACHE.lock().await;
258262

259263
let mut completions = completions
@@ -290,7 +294,8 @@ pub async fn handle_request(
290294
let buffer = buffer.to_owned();
291295
async move {
292296
TELEMETRY_QUEUE.lock().await.items.push(TelemetryQueueItem {
293-
suggested_chars_len: completion.chars().count().try_into().ok(),
297+
suggested_chars_len: completion.chars().count() as i32,
298+
number_of_recommendations: number_of_recommendations as i32,
294299
suggestion: completion,
295300
timestamp: SystemTime::now(),
296301
session_id,

0 commit comments

Comments
 (0)