From 1fac14fcc7cedcaba4afaa7ca65c0fbb50dedfd3 Mon Sep 17 00:00:00 2001 From: Ben Brandt Date: Mon, 2 Mar 2026 16:17:05 +0100 Subject: [PATCH] agent: Add subagent info to telemetry events (#50492) - **Add parent_session_id to agent thread feedback submission** - **Add more parent session ids to events** Release Notes: - N/A --------- Co-authored-by: Bennet Bo Fenner --- crates/acp_thread/src/acp_thread.rs | 2 ++ crates/agent/src/thread.rs | 4 ++++ crates/agent_ui/src/connection_view/thread_view.rs | 11 +++++++++++ crates/cloud_api_types/src/cloud_api_types.rs | 1 + 4 files changed, 18 insertions(+) diff --git a/crates/acp_thread/src/acp_thread.rs b/crates/acp_thread/src/acp_thread.rs index 46797130c0..e6da8f3f90 100644 --- a/crates/acp_thread/src/acp_thread.rs +++ b/crates/acp_thread/src/acp_thread.rs @@ -1600,6 +1600,7 @@ impl AcpThread { let agent_telemetry_id = self.connection().telemetry_id(); let session = self.session_id(); + let parent_session_id = self.parent_session_id(); if let ToolCallStatus::Completed | ToolCallStatus::Failed = status { let status = if matches!(status, ToolCallStatus::Completed) { "completed" @@ -1610,6 +1611,7 @@ impl AcpThread { "Agent Tool Call Completed", agent_telemetry_id, session, + parent_session_id, status ); } diff --git a/crates/agent/src/thread.rs b/crates/agent/src/thread.rs index 64ab5795e7..0825910e78 100644 --- a/crates/agent/src/thread.rs +++ b/crates/agent/src/thread.rs @@ -1739,6 +1739,9 @@ impl Thread { telemetry::event!( "Agent Thread Completion", thread_id = this.read_with(cx, |this, _| this.id.to_string())?, + parent_thread_id = this.read_with(cx, |this, _| this + .parent_thread_id() + .map(|id| id.to_string()))?, prompt_id = this.read_with(cx, |this, _| this.prompt_id.to_string())?, model = model.telemetry_id(), model_provider = model.provider_id().to_string(), @@ -1997,6 +2000,7 @@ impl Thread { telemetry::event!( "Agent Thread Completion Usage Updated", thread_id = self.id.to_string(), + parent_thread_id = self.parent_thread_id().map(|id| id.to_string()), prompt_id = self.prompt_id.to_string(), model = self.model.as_ref().map(|m| m.telemetry_id()), model_provider = self.model.as_ref().map(|m| m.provider_id().to_string()), diff --git a/crates/agent_ui/src/connection_view/thread_view.rs b/crates/agent_ui/src/connection_view/thread_view.rs index f9d5311983..cd8becbded 100644 --- a/crates/agent_ui/src/connection_view/thread_view.rs +++ b/crates/agent_ui/src/connection_view/thread_view.rs @@ -45,6 +45,7 @@ impl ThreadFeedbackState { } } let session_id = thread.read(cx).session_id().clone(); + let parent_session_id = thread.read(cx).parent_session_id().cloned(); let agent_telemetry_id = thread.read(cx).connection().telemetry_id(); let task = telemetry.thread_data(&session_id, cx); let rating = match feedback { @@ -60,6 +61,7 @@ impl ThreadFeedbackState { organization_id: organization.map(|organization| organization.id.clone()), agent: agent_telemetry_id.to_string(), session_id: session_id.to_string(), + parent_session_id: parent_session_id.map(|id| id.to_string()), rating: rating.to_string(), thread, }) @@ -804,6 +806,7 @@ impl ThreadView { cx: &mut Context, ) { let session_id = self.thread.read(cx).session_id().clone(); + let parent_session_id = self.thread.read(cx).parent_session_id().cloned(); let agent_telemetry_id = self.thread.read(cx).connection().telemetry_id(); let thread = self.thread.downgrade(); @@ -858,6 +861,7 @@ impl ThreadView { "Agent Message Sent", agent = agent_telemetry_id, session = session_id, + parent_session_id = parent_session_id.as_ref().map(|id| id.to_string()), model = model_id, mode = mode_id ); @@ -877,6 +881,7 @@ impl ThreadView { "Agent Turn Completed", agent = agent_telemetry_id, session = session_id, + parent_session_id = parent_session_id.as_ref().map(|id| id.to_string()), model = model_id, mode = mode_id, status, @@ -985,11 +990,17 @@ impl ThreadView { let agent_telemetry_id = self.thread.read(cx).connection().telemetry_id(); let session_id = self.thread.read(cx).session_id().clone(); + let parent_session_id = self + .thread + .read(cx) + .parent_session_id() + .map(|id| id.to_string()); telemetry::event!( "Agent Panel Error Shown", agent = agent_telemetry_id, session_id = session_id, + parent_session_id = parent_session_id, kind = error_kind, acp_error_code = acp_error_code, message = message, diff --git a/crates/cloud_api_types/src/cloud_api_types.rs b/crates/cloud_api_types/src/cloud_api_types.rs index 5f86dce21e..2d457fc663 100644 --- a/crates/cloud_api_types/src/cloud_api_types.rs +++ b/crates/cloud_api_types/src/cloud_api_types.rs @@ -62,6 +62,7 @@ pub struct SubmitAgentThreadFeedbackBody { pub organization_id: Option, pub agent: String, pub session_id: String, + pub parent_session_id: Option, pub rating: String, pub thread: serde_json::Value, }