diff --git a/refact-agent/engine/src/lsp.rs b/refact-agent/engine/src/lsp.rs index 9144fbfde..831eadb99 100644 --- a/refact-agent/engine/src/lsp.rs +++ b/refact-agent/engine/src/lsp.rs @@ -219,9 +219,12 @@ impl LanguageServer for LspBackend { *gcx_locked.documents_state.workspace_folders.lock().unwrap() = folders.clone(); info!("LSP workspace_folders {:?}", folders); } - files_in_workspace::on_workspaces_init( - self.gcx.clone(), - ).await; + let gcx_clone = self.gcx.clone(); + tokio::spawn(async move { + files_in_workspace::on_workspaces_init( + gcx_clone, + ).await; + }); let completion_options: CompletionOptions; completion_options = CompletionOptions { diff --git a/refact-agent/engine/src/main.rs b/refact-agent/engine/src/main.rs index 89335b2a1..babed1ae4 100644 --- a/refact-agent/engine/src/main.rs +++ b/refact-agent/engine/src/main.rs @@ -171,13 +171,16 @@ async fn main() { // Privacy before we do anything else, the default is to block everything let _ = crate::privacy::load_privacy_if_needed(gcx.clone()).await; - - files_in_workspace::enqueue_all_files_from_workspace_folders(gcx.clone(), true, false).await; - files_in_jsonl::enqueue_all_docs_from_jsonl_but_read_first(gcx.clone(), true, false).await; - + let gcx_clone = gcx.clone(); tokio::spawn(async move { - crate::git::checkpoints::init_shadow_repos_if_needed(gcx_clone).await; + files_in_workspace::enqueue_all_files_from_workspace_folders(gcx_clone.clone(), true, false).await; + files_in_jsonl::enqueue_all_docs_from_jsonl_but_read_first(gcx_clone.clone(), true, false).await; + + let gcx_clone = gcx_clone.clone(); + tokio::spawn(async move { + crate::git::checkpoints::init_shadow_repos_if_needed(gcx_clone).await; + }); }); // not really needed, but it's nice to have an error message sooner if there's one