An AI agent built to do Ralph loops - plan mode for planning and ralph mode for implementing.
1use crate::security::SecurityValidator;
2use crate::security::permission::PermissionHandler;
3use crate::tools::ToolRegistry;
4use crate::tools::file::{ListFilesTool, ReadFileTool, WriteFileTool};
5use crate::tools::shell::RunCommandTool;
6use crate::tools::signal::SignalTool;
7use std::sync::Arc;
8
9pub fn create_default_registry(
10 validator: Arc<SecurityValidator>,
11 permission_handler: Arc<dyn PermissionHandler>,
12) -> ToolRegistry {
13 let registry = ToolRegistry::new();
14
15 registry.register(Arc::new(ReadFileTool::new(
16 validator.clone(),
17 permission_handler.clone(),
18 )));
19 registry.register(Arc::new(WriteFileTool::new(
20 validator.clone(),
21 permission_handler.clone(),
22 )));
23 registry.register(Arc::new(ListFilesTool::new(
24 validator.clone(),
25 permission_handler.clone(),
26 )));
27 registry.register(Arc::new(RunCommandTool::new(
28 validator.clone(),
29 permission_handler.clone(),
30 )));
31 registry.register(Arc::new(SignalTool::new()));
32
33 registry
34}