31 lines
1.1 KiB
Rust
31 lines
1.1 KiB
Rust
use crate::runtime::RuntimeProfile;
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub struct ToolPolicy {
|
|
pub requires_browser_surface: bool,
|
|
pub may_use_non_browser_tools: bool,
|
|
pub allowed_tools: Vec<String>,
|
|
}
|
|
|
|
impl ToolPolicy {
|
|
pub fn for_profile(profile: RuntimeProfile) -> Self {
|
|
match profile {
|
|
RuntimeProfile::BrowserAttached => Self {
|
|
requires_browser_surface: false,
|
|
may_use_non_browser_tools: true,
|
|
allowed_tools: vec!["superrpa_browser".to_string(), "browser_action".to_string()],
|
|
},
|
|
RuntimeProfile::BrowserHeavy => Self {
|
|
requires_browser_surface: true,
|
|
may_use_non_browser_tools: true,
|
|
allowed_tools: vec!["superrpa_browser".to_string(), "browser_action".to_string()],
|
|
},
|
|
RuntimeProfile::GeneralAssistant => Self {
|
|
requires_browser_surface: false,
|
|
may_use_non_browser_tools: true,
|
|
allowed_tools: Vec::new(),
|
|
},
|
|
}
|
|
}
|
|
}
|