From c491b75e07e5a79d01d5ee889be60e7ad6c6b6d2 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Fri, 15 Nov 2024 12:25:29 -0500 Subject: [PATCH] assistant: Fix panic when using `/project` (#20733) This PR fixes a panic when using `/project` (which is staff-flagged). We weren't initializing the `SemanticDb` global if the `project-slash-command` feature flag was enabled. Closes #20563. Release Notes: - N/A --- crates/assistant/src/assistant.rs | 40 +++++++++++++++++++------------ 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/crates/assistant/src/assistant.rs b/crates/assistant/src/assistant.rs index 236311753f..88500247c3 100644 --- a/crates/assistant/src/assistant.rs +++ b/crates/assistant/src/assistant.rs @@ -18,6 +18,7 @@ mod terminal_inline_assistant; mod tool_working_set; mod tools; +use crate::slash_command::project_command::ProjectSlashCommandFeatureFlag; pub use crate::slash_command_working_set::{SlashCommandId, SlashCommandWorkingSet}; pub use crate::tool_working_set::{ToolId, ToolWorkingSet}; pub use assistant_panel::{AssistantPanel, AssistantPanelEvent}; @@ -215,23 +216,32 @@ pub fn init( }); } - if cx.has_flag::() { - cx.spawn(|mut cx| { - let client = client.clone(); - async move { - let embedding_provider = CloudEmbeddingProvider::new(client.clone()); - let semantic_index = SemanticDb::new( - paths::embeddings_dir().join("semantic-index-db.0.mdb"), - Arc::new(embedding_provider), - &mut cx, - ) - .await?; + cx.spawn(|mut cx| { + let client = client.clone(); + async move { + let is_search_slash_command_enabled = cx + .update(|cx| cx.wait_for_flag::())? + .await; + let is_project_slash_command_enabled = cx + .update(|cx| cx.wait_for_flag::())? + .await; - cx.update(|cx| cx.set_global(semantic_index)) + if !is_search_slash_command_enabled && !is_project_slash_command_enabled { + return Ok(()); } - }) - .detach(); - } + + let embedding_provider = CloudEmbeddingProvider::new(client.clone()); + let semantic_index = SemanticDb::new( + paths::embeddings_dir().join("semantic-index-db.0.mdb"), + Arc::new(embedding_provider), + &mut cx, + ) + .await?; + + cx.update(|cx| cx.set_global(semantic_index)) + } + }) + .detach(); context_store::init(&client.clone().into()); prompt_library::init(cx);