atomr_agents_tool/
toolset.rs1use atomr_agents_core::ToolSetId;
2use semver::Version;
3use serde::{Deserialize, Serialize};
4
5use crate::permission::PermissionSpec;
6use crate::r#trait::DynTool;
7
8#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10pub struct ToolSetMeta {
11 #[serde(default)]
12 pub description: String,
13 #[serde(default)]
14 pub author: Option<String>,
15}
16
17#[derive(Clone)]
19pub struct ToolSet {
20 pub id: ToolSetId,
21 pub version: Version,
22 pub tools: Vec<DynTool>,
23 pub metadata: ToolSetMeta,
24 pub dependencies: Vec<ToolSetId>,
25 pub permissions: PermissionSpec,
26}
27
28impl ToolSet {
29 pub fn new(id: impl Into<ToolSetId>, version: Version, tools: Vec<DynTool>) -> Self {
30 Self {
31 id: id.into(),
32 version,
33 tools,
34 metadata: ToolSetMeta::default(),
35 dependencies: vec![],
36 permissions: PermissionSpec::default(),
37 }
38 }
39}