use crate::config::PermissionAction;
use crate::provider::Provider;
use crate::tool::ToolRegistry;
use std::collections::HashMap;
use std::sync::Arc;
use super::{AgentInfo, ToolMetadata};
pub struct Agent {
pub info: AgentInfo,
pub provider: Arc<dyn Provider>,
pub tools: ToolRegistry,
pub permissions: HashMap<String, PermissionAction>,
pub metadata: HashMap<String, ToolMetadata>,
pub(super) system_prompt: String,
}
impl Agent {
pub fn new(
info: AgentInfo,
provider: Arc<dyn Provider>,
tools: ToolRegistry,
system_prompt: String,
) -> Self {
Self {
info,
provider,
tools,
permissions: HashMap::new(),
metadata: HashMap::new(),
system_prompt,
}
}
}