1pub mod error;
2pub mod http_client;
3pub mod server;
4pub mod spec;
5pub mod tool;
6pub mod tool_generator;
7pub mod tool_registry;
8
9pub use error::{CliError, Error, ToolCallError};
10pub use http_client::{HttpClient, HttpResponse};
11pub use server::Server;
12pub use spec::Spec;
13pub use tool::{Tool, ToolCollection, ToolMetadata};
14pub use tool_generator::{ExtractedParameters, RequestConfig, ToolGenerator};
15pub use tool_registry::{ToolRegistry, ToolRegistryStats};
16
17pub fn normalize_tag(tag: &str) -> String {
20 use heck::ToKebabCase;
21 tag.to_kebab_case()
22}
23
24#[cfg(test)]
25mod tests {
26 use super::*;
27
28 #[test]
29 fn test_normalize_tag() {
30 assert_eq!(normalize_tag("userManagement"), "user-management");
32 assert_eq!(normalize_tag("getUsers"), "get-users");
33
34 assert_eq!(normalize_tag("UserManagement"), "user-management");
36 assert_eq!(normalize_tag("APIKey"), "api-key");
37
38 assert_eq!(normalize_tag("user_management"), "user-management");
40 assert_eq!(normalize_tag("get_users"), "get-users");
41
42 assert_eq!(normalize_tag("USER_MANAGEMENT"), "user-management");
44 assert_eq!(normalize_tag("API_KEY"), "api-key");
45
46 assert_eq!(normalize_tag("user-management"), "user-management");
48 assert_eq!(normalize_tag("api-key"), "api-key");
49
50 assert_eq!(normalize_tag("users"), "users");
52 assert_eq!(normalize_tag("API"), "api");
53
54 assert_eq!(normalize_tag(""), "");
56
57 assert_eq!(normalize_tag("XMLHttpRequest"), "xml-http-request");
59 assert_eq!(normalize_tag("HTTPSConnection"), "https-connection");
60
61 assert_eq!(normalize_tag("user management"), "user-management");
63 assert_eq!(normalize_tag(" user "), "user"); assert_eq!(normalize_tag("user__management"), "user-management");
67 assert_eq!(normalize_tag("user---management"), "user-management");
68
69 assert_eq!(normalize_tag("user123Management"), "user123-management");
71 assert_eq!(normalize_tag("user@management"), "user-management"); assert_eq!(normalize_tag("v2ApiEndpoint"), "v2-api-endpoint");
75 assert_eq!(normalize_tag("HTML5Parser"), "html5-parser");
76 }
77}