@@ -119,12 +119,10 @@ impl AssistantPanel {
cx.spawn(|mut cx| async move {
let tools = Arc::new(ToolWorkingSet::default());
log::info!("[assistant2-debug] initializing ThreadStore");
- let thread_store = workspace
- .update(&mut cx, |workspace, cx| {
- let project = workspace.project().clone();
- ThreadStore::new(project, tools.clone(), cx)
- })?
- .await?;
+ let thread_store = workspace.update(&mut cx, |workspace, cx| {
+ let project = workspace.project().clone();
+ ThreadStore::new(project, tools.clone(), cx)
+ })??;
log::info!("[assistant2-debug] finished initializing ThreadStore");
let slash_commands = Arc::new(SlashCommandWorkingSet::default());
@@ -34,45 +34,39 @@ impl ThreadStore {
project: Entity<Project>,
tools: Arc<ToolWorkingSet>,
cx: &mut App,
- ) -> Task<Result<Entity<Self>>> {
- cx.spawn(|mut cx| async move {
- let this = cx.new(|cx: &mut Context<Self>| {
- let context_server_factory_registry =
- ContextServerFactoryRegistry::default_global(cx);
- let context_server_manager = cx.new(|cx| {
- ContextServerManager::new(context_server_factory_registry, project.clone(), cx)
- });
+ ) -> Result<Entity<Self>> {
+ let this = cx.new(|cx| {
+ let context_server_factory_registry = ContextServerFactoryRegistry::default_global(cx);
+ let context_server_manager = cx.new(|cx| {
+ ContextServerManager::new(context_server_factory_registry, project.clone(), cx)
+ });
+
+ let executor = cx.background_executor().clone();
+ let database_future = executor
+ .spawn({
+ let executor = executor.clone();
+ let database_path = paths::support_dir().join("threads/threads-db.0.mdb");
+ async move { ThreadsDatabase::new(database_path, executor) }
+ })
+ .then(|result| future::ready(result.map(Arc::new).map_err(Arc::new)))
+ .boxed()
+ .shared();
+
+ let this = Self {
+ project,
+ tools,
+ context_server_manager,
+ context_server_tool_ids: HashMap::default(),
+ threads: Vec::new(),
+ database_future,
+ };
+ this.register_context_server_handlers(cx);
+ this.reload(cx).detach_and_log_err(cx);
- let executor = cx.background_executor().clone();
- let database_future = executor
- .spawn({
- let executor = executor.clone();
- let database_path = paths::support_dir().join("threads/threads-db.0.mdb");
- async move { ThreadsDatabase::new(database_path, executor) }
- })
- .then(|result| future::ready(result.map(Arc::new).map_err(Arc::new)))
- .boxed()
- .shared();
-
- let this = Self {
- project,
- tools,
- context_server_manager,
- context_server_tool_ids: HashMap::default(),
- threads: Vec::new(),
- database_future,
- };
- this.register_context_server_handlers(cx);
-
- this
- })?;
-
- log::info!("[assistant2-debug] reloading threads");
- this.update(&mut cx, |this, cx| this.reload(cx))?.await?;
- log::info!("[assistant2-debug] finished reloading threads");
-
- Ok(this)
- })
+ this
+ });
+
+ Ok(this)
}
/// Returns the number of threads.