diff --git a/crates/agent/src/tests/mod.rs b/crates/agent/src/tests/mod.rs index 139591115eec569ea58520094886f77bd8efa785..4e53568aefaa8973b86fbfe505279a1836e55556 100644 --- a/crates/agent/src/tests/mod.rs +++ b/crates/agent/src/tests/mod.rs @@ -5191,6 +5191,11 @@ async fn test_subagent_thread_inherits_parent_thread_properties(cx: &mut TestApp subagent_thread.parent_thread_id(), Some(parent_thread.read(cx).id().clone()) ); + + let request = subagent_thread + .build_completion_request(CompletionIntent::UserPrompt, cx) + .unwrap(); + assert_eq!(request.intent, Some(CompletionIntent::Subagent)); }); } diff --git a/crates/agent/src/thread.rs b/crates/agent/src/thread.rs index 39f5a9df902744875a9faaa1651d65842c1dbf11..2c40532295434e7df8db1332d2895b638f90490d 100644 --- a/crates/agent/src/thread.rs +++ b/crates/agent/src/thread.rs @@ -2699,6 +2699,13 @@ impl Thread { completion_intent: CompletionIntent, cx: &App, ) -> Result { + let completion_intent = + if self.is_subagent() && completion_intent == CompletionIntent::UserPrompt { + CompletionIntent::Subagent + } else { + completion_intent + }; + let model = self.model().context("No language model configured")?; let tools = if let Some(turn) = self.running_turn.as_ref() { turn.tools diff --git a/crates/cloud_llm_client/src/cloud_llm_client.rs b/crates/cloud_llm_client/src/cloud_llm_client.rs index 8c06bd7ebb10b48acca46a4fc7c8afd82eb1a979..da66b1a87463cbd0d67cfc1240f32209d37b6446 100644 --- a/crates/cloud_llm_client/src/cloud_llm_client.rs +++ b/crates/cloud_llm_client/src/cloud_llm_client.rs @@ -197,6 +197,7 @@ pub enum EditPredictionRejectReason { #[serde(rename_all = "snake_case")] pub enum CompletionIntent { UserPrompt, + Subagent, ToolResults, ThreadSummarization, ThreadContextSummarization, diff --git a/crates/language_models/src/provider/copilot_chat.rs b/crates/language_models/src/provider/copilot_chat.rs index e90d8208b4f37cfc31487768b94a2b943e2320ce..65a7611d8f287528e5c426e01eb5e593d2620167 100644 --- a/crates/language_models/src/provider/copilot_chat.rs +++ b/crates/language_models/src/provider/copilot_chat.rs @@ -357,7 +357,8 @@ impl LanguageModel for CopilotChatLanguageModel { | CompletionIntent::TerminalInlineAssist | CompletionIntent::GenerateGitCommitMessage => true, - CompletionIntent::ToolResults + CompletionIntent::Subagent + | CompletionIntent::ToolResults | CompletionIntent::ThreadSummarization | CompletionIntent::CreateFile | CompletionIntent::EditFile => false, @@ -1072,6 +1073,7 @@ fn compute_thinking_budget( fn intent_to_chat_location(intent: Option) -> ChatLocation { match intent { Some(CompletionIntent::UserPrompt) => ChatLocation::Agent, + Some(CompletionIntent::Subagent) => ChatLocation::Agent, Some(CompletionIntent::ToolResults) => ChatLocation::Agent, Some(CompletionIntent::ThreadSummarization) => ChatLocation::Panel, Some(CompletionIntent::ThreadContextSummarization) => ChatLocation::Panel,