Skip to main content

ai_agents_runtime/spec/
provider.rs

1//! Tool alias configuration types for YAML specifications.
2
3use ai_agents_tools::ToolAliases;
4use serde::{Deserialize, Serialize};
5use std::collections::HashMap;
6
7/// Global tool aliases keyed by canonical tool ID.
8#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9pub struct ToolAliasesConfig {
10    #[serde(flatten)]
11    pub tools: HashMap<String, ToolAliases>,
12}
13
14#[cfg(test)]
15mod tests {
16    use super::*;
17
18    #[test]
19    fn test_tool_aliases_config_yaml() {
20        let yaml = r#"
21http:
22  names:
23    ko: 웹요청
24    ja: ウェブリクエスト
25  descriptions:
26    ko: HTTP 요청을 보냅니다
27    ja: HTTPリクエストを送信
28calculator:
29  names:
30    ko: 계산기
31"#;
32
33        let config: ToolAliasesConfig = serde_yaml::from_str(yaml).unwrap();
34        assert!(config.tools.contains_key("http"));
35        assert!(config.tools.contains_key("calculator"));
36
37        let http_aliases = config.tools.get("http").unwrap();
38        assert_eq!(http_aliases.get_name("ko"), Some("웹요청"));
39    }
40}