MCPcopy Create free account
hub / github.com/aws/amazon-q-developer-cli / send_chat_telemetry

Method send_chat_telemetry

crates/chat-cli/src/cli/chat/mod.rs:3700–3781  ·  view source on GitHub ↗
(
        &self,
        os: &Os,
        result: TelemetryResult,
        reason: Option<String>,
        reason_desc: Option<String>,
        status_code: Option<u16>,
        is_end_turn: bool,
   

Source from the content-addressed store, hash-verified

3698 /// current user turn.
3699 #[allow(clippy::too_many_arguments)]
3700 async fn send_chat_telemetry(
3701 &self,
3702 os: &Os,
3703 result: TelemetryResult,
3704 reason: Option<String>,
3705 reason_desc: Option<String>,
3706 status_code: Option<u16>,
3707 is_end_turn: bool,
3708 ) {
3709 // Get metadata for the most recent request.
3710 let md = self.user_turn_request_metadata.last();
3711
3712 let conversation_id = self.conversation.conversation_id().to_owned();
3713 let data = ChatAddedMessageParams {
3714 request_id: md.and_then(|md| md.request_id.clone()),
3715 message_id: md.map(|md| md.message_id.clone()),
3716 context_file_length: self.conversation.context_message_length(),
3717 model: md.and_then(|m| m.model_id.clone()),
3718 reason: reason.clone(),
3719 reason_desc: reason_desc.clone(),
3720 status_code,
3721 time_to_first_chunk_ms: md.and_then(|md| md.time_to_first_chunk.map(|d| d.as_secs_f64() * 1000.0)),
3722 time_between_chunks_ms: md.map(|md| {
3723 md.time_between_chunks
3724 .iter()
3725 .map(|d| d.as_secs_f64() * 1000.0)
3726 .collect::<Vec<_>>()
3727 }),
3728 chat_conversation_type: md.and_then(|md| md.chat_conversation_type),
3729 tool_use_id: self.conversation.latest_tool_use_ids(),
3730 tool_name: self.conversation.latest_tool_use_names(),
3731 assistant_response_length: md.map(|md| md.response_size as i32),
3732 message_meta_tags: {
3733 let mut tags = md.map(|md| md.message_meta_tags.clone()).unwrap_or_default();
3734 if self.conversation.is_in_tangent_mode() {
3735 tags.push(crate::telemetry::core::MessageMetaTag::TangentMode);
3736 }
3737 tags
3738 },
3739 };
3740 os.telemetry
3741 .send_chat_added_message(&os.database, conversation_id.clone(), result, data)
3742 .await
3743 .ok();
3744
3745 if is_end_turn {
3746 let mds = &self.user_turn_request_metadata;
3747
3748 // Get the user turn duration.
3749 let start_time = mds.first().map(|md| md.request_start_timestamp_ms);
3750 let end_time = mds.last().map(|md| md.stream_end_timestamp_ms);
3751 let user_turn_duration_seconds = match (start_time, end_time) {
3752 // Convert ms back to seconds
3753 (Some(start), Some(end)) => end.saturating_sub(start) as i64 / 1000,
3754 _ => 0,
3755 };
3756
3757 os.telemetry

Callers 6

send_messageMethod · 0.80
compact_history_implMethod · 0.80
tool_use_executeMethod · 0.80
handle_responseMethod · 0.80
validate_toolsMethod · 0.80

Calls 9

mapMethod · 0.80
latest_tool_use_idsMethod · 0.80
latest_tool_use_namesMethod · 0.80
is_in_tangent_modeMethod · 0.80
conversation_idMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected