feat: add browser automation tool using Vercel agent-browser
- Add src/tools/browser.rs with BrowserTool implementation - Wraps agent-browser CLI for AI-optimized web browsing - Supports: open, snapshot, click, fill, type, screenshot, wait, etc. - Uses refs (@e1, @e2) from accessibility snapshots for precise element selection - JSON output mode for LLM integration - Security: allowlist-only domains, blocks private/local hosts - Add session_name to BrowserConfig for persistent sessions - Register BrowserTool in tools/mod.rs alongside BrowserOpenTool All tests pass.
This commit is contained in:
parent
153d6ff149
commit
554f6e9ea5
5 changed files with 1084 additions and 15 deletions
|
|
@ -1,3 +1,4 @@
|
|||
pub mod browser;
|
||||
pub mod browser_open;
|
||||
pub mod composio;
|
||||
pub mod file_read;
|
||||
|
|
@ -8,6 +9,7 @@ pub mod memory_store;
|
|||
pub mod shell;
|
||||
pub mod traits;
|
||||
|
||||
pub use browser::BrowserTool;
|
||||
pub use browser_open::BrowserOpenTool;
|
||||
pub use composio::ComposioTool;
|
||||
pub use file_read::FileReadTool;
|
||||
|
|
@ -50,10 +52,17 @@ pub fn all_tools(
|
|||
];
|
||||
|
||||
if browser_config.enabled {
|
||||
// Add legacy browser_open tool for simple URL opening
|
||||
tools.push(Box::new(BrowserOpenTool::new(
|
||||
security.clone(),
|
||||
browser_config.allowed_domains.clone(),
|
||||
)));
|
||||
// Add full browser automation tool (agent-browser)
|
||||
tools.push(Box::new(BrowserTool::new(
|
||||
security.clone(),
|
||||
browser_config.allowed_domains.clone(),
|
||||
browser_config.session_name.clone(),
|
||||
)));
|
||||
}
|
||||
|
||||
if let Some(key) = composio_key {
|
||||
|
|
@ -92,6 +101,7 @@ mod tests {
|
|||
let browser = BrowserConfig {
|
||||
enabled: false,
|
||||
allowed_domains: vec!["example.com".into()],
|
||||
session_name: None,
|
||||
};
|
||||
|
||||
let tools = all_tools(&security, mem, None, &browser);
|
||||
|
|
@ -113,6 +123,7 @@ mod tests {
|
|||
let browser = BrowserConfig {
|
||||
enabled: true,
|
||||
allowed_domains: vec!["example.com".into()],
|
||||
session_name: None,
|
||||
};
|
||||
|
||||
let tools = all_tools(&security, mem, None, &browser);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue