factor otu

Conrad Irwin created

Change summary

crates/agent2/src/agent.rs  | 59 +++++++++++++++++---------------------
crates/agent2/src/thread.rs |  4 +-
2 files changed, 28 insertions(+), 35 deletions(-)

Detailed changes

crates/agent2/src/agent.rs 🔗

@@ -563,6 +563,30 @@ impl NativeAgentConnection {
             })
         })
     }
+
+    fn register_tools(
+        thread: &mut Thread,
+        project: Entity<Project>,
+        action_log: Entity<action_log::ActionLog>,
+        cx: &mut Context<Thread>,
+    ) {
+        thread.add_tool(CopyPathTool::new(project.clone()));
+        thread.add_tool(CreateDirectoryTool::new(project.clone()));
+        thread.add_tool(DeletePathTool::new(project.clone(), action_log.clone()));
+        thread.add_tool(DiagnosticsTool::new(project.clone()));
+        thread.add_tool(EditFileTool::new(cx.entity()));
+        thread.add_tool(FetchTool::new(project.read(cx).client().http_client()));
+        thread.add_tool(FindPathTool::new(project.clone()));
+        thread.add_tool(GrepTool::new(project.clone()));
+        thread.add_tool(ListDirectoryTool::new(project.clone()));
+        thread.add_tool(MovePathTool::new(project.clone()));
+        thread.add_tool(NowTool);
+        thread.add_tool(OpenTool::new(project.clone()));
+        thread.add_tool(ReadFileTool::new(project.clone(), action_log));
+        thread.add_tool(TerminalTool::new(project.clone(), cx));
+        thread.add_tool(ThinkingTool);
+        thread.add_tool(WebSearchTool); // TODO: Enable this only if it's a zed model.
+    }
 }
 
 impl AgentModelSelector for NativeAgentConnection {
@@ -709,22 +733,7 @@ impl acp_thread::AgentConnection for NativeAgentConnection {
                             default_model,
                             cx,
                         );
-                        thread.add_tool(CopyPathTool::new(project.clone()));
-                        thread.add_tool(CreateDirectoryTool::new(project.clone()));
-                        thread.add_tool(DeletePathTool::new(project.clone(), action_log.clone()));
-                        thread.add_tool(DiagnosticsTool::new(project.clone()));
-                        thread.add_tool(EditFileTool::new(cx.entity()));
-                        thread.add_tool(FetchTool::new(project.read(cx).client().http_client()));
-                        thread.add_tool(FindPathTool::new(project.clone()));
-                        thread.add_tool(GrepTool::new(project.clone()));
-                        thread.add_tool(ListDirectoryTool::new(project.clone()));
-                        thread.add_tool(MovePathTool::new(project.clone()));
-                        thread.add_tool(NowTool);
-                        thread.add_tool(OpenTool::new(project.clone()));
-                        thread.add_tool(ReadFileTool::new(project.clone(), action_log));
-                        thread.add_tool(TerminalTool::new(project.clone(), cx));
-                        thread.add_tool(ThinkingTool);
-                        thread.add_tool(WebSearchTool); // TODO: Enable this only if it's a zed model.
+                        Self::register_tools(&mut thread, project, action_log, cx);
                         thread
                     });
 
@@ -852,23 +861,7 @@ impl acp_thread::AgentConnection for NativeAgentConnection {
                             model,
                             cx,
                         );
-                        // todo!() factor this out
-                        thread.add_tool(CopyPathTool::new(project.clone()));
-                        thread.add_tool(CreateDirectoryTool::new(project.clone()));
-                        thread.add_tool(DeletePathTool::new(project.clone(), action_log.clone()));
-                        thread.add_tool(DiagnosticsTool::new(project.clone()));
-                        thread.add_tool(EditFileTool::new(cx.entity()));
-                        thread.add_tool(FetchTool::new(project.read(cx).client().http_client()));
-                        thread.add_tool(FindPathTool::new(project.clone()));
-                        thread.add_tool(GrepTool::new(project.clone()));
-                        thread.add_tool(ListDirectoryTool::new(project.clone()));
-                        thread.add_tool(MovePathTool::new(project.clone()));
-                        thread.add_tool(NowTool);
-                        thread.add_tool(OpenTool::new(project.clone()));
-                        thread.add_tool(ReadFileTool::new(project.clone(), action_log));
-                        thread.add_tool(TerminalTool::new(project.clone(), cx));
-                        thread.add_tool(ThinkingTool);
-                        thread.add_tool(WebSearchTool); // TODO: Enable this only if it's a zed model.
+                        Self::register_tools(&mut thread, project, action_log, cx);
                         thread
                     });
 

crates/agent2/src/thread.rs 🔗

@@ -441,7 +441,7 @@ impl Thread {
         cx: &mut Context<Self>,
     ) -> Self {
         let profile_id = AgentSettings::get_global(cx).default_profile.clone();
-        Self {
+        let this = Self {
             messages: Vec::new(),
             completion_mode: CompletionMode::Normal,
             running_turn: None,
@@ -455,7 +455,7 @@ impl Thread {
             model,
             project,
             action_log,
-        }
+        };
     }
 
     pub fn project(&self) -> &Entity<Project> {