1pub mod config;
2pub mod error;
3pub mod http_client;
4pub mod security;
5pub mod server;
6pub mod spec;
7pub mod tool;
8pub mod tool_generator;
9pub mod tool_registry;
10
11pub use config::{Authorization, AuthorizationMode};
12pub use error::{CliError, Error, ToolCallError};
13pub use http_client::{HttpClient, HttpResponse};
14pub use security::SecurityObserver;
15pub use server::Server;
16pub use spec::Spec;
17pub use tool::{Tool, ToolCollection, ToolMetadata};
18pub use tool_generator::{ExtractedParameters, RequestConfig, ToolGenerator};
19pub use tool_registry::{ToolRegistry, ToolRegistryStats};
20
21pub fn normalize_tag(tag: &str) -> String {
24    use heck::ToKebabCase;
25    tag.to_kebab_case()
26}
27
28#[cfg(test)]
29mod tests {
30    use super::*;
31
32    #[test]
33    fn test_normalize_tag() {
34        assert_eq!(normalize_tag("userManagement"), "user-management");
36        assert_eq!(normalize_tag("getUsers"), "get-users");
37
38        assert_eq!(normalize_tag("UserManagement"), "user-management");
40        assert_eq!(normalize_tag("APIKey"), "api-key");
41
42        assert_eq!(normalize_tag("user_management"), "user-management");
44        assert_eq!(normalize_tag("get_users"), "get-users");
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("user-management"), "user-management");
52        assert_eq!(normalize_tag("api-key"), "api-key");
53
54        assert_eq!(normalize_tag("users"), "users");
56        assert_eq!(normalize_tag("API"), "api");
57
58        assert_eq!(normalize_tag(""), "");
60
61        assert_eq!(normalize_tag("XMLHttpRequest"), "xml-http-request");
63        assert_eq!(normalize_tag("HTTPSConnection"), "https-connection");
64
65        assert_eq!(normalize_tag("user management"), "user-management");
67        assert_eq!(normalize_tag(" user "), "user"); assert_eq!(normalize_tag("user__management"), "user-management");
71        assert_eq!(normalize_tag("user---management"), "user-management");
72
73        assert_eq!(normalize_tag("user123Management"), "user123-management");
75        assert_eq!(normalize_tag("user@management"), "user-management"); assert_eq!(normalize_tag("v2ApiEndpoint"), "v2-api-endpoint");
79        assert_eq!(normalize_tag("HTML5Parser"), "html5-parser");
80    }
81}