mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
feat(usage): infer additional client families
This commit is contained in:
@@ -355,10 +355,58 @@ fn infer_client_family_from_user_agent(user_agent: &str) -> Option<&'static str>
|
||||
if normalized.contains("geminicli") || normalized.contains("gemini-cli") {
|
||||
return Some("gemini_cli");
|
||||
}
|
||||
if normalized.contains("qwencode") {
|
||||
return Some("qwen_code");
|
||||
}
|
||||
if normalized.contains("roo-code") || normalized.contains("roocode") {
|
||||
return Some("roo_code");
|
||||
}
|
||||
if normalized.contains("kilo-code") || normalized.contains("kilocode") {
|
||||
return Some("kilocode");
|
||||
}
|
||||
if normalized.contains("cherrystudio") || normalized.contains("cherry-studio") {
|
||||
return Some("cherrystudio");
|
||||
}
|
||||
if normalized.contains("openui-agent-manager") || normalized.contains("openui") {
|
||||
return Some("openui");
|
||||
}
|
||||
if normalized.contains("cursor") {
|
||||
return Some("cursor");
|
||||
}
|
||||
if normalized.contains("windsurf") {
|
||||
return Some("windsurf");
|
||||
}
|
||||
if normalized.contains("continue") {
|
||||
return Some("continue");
|
||||
}
|
||||
if normalized.contains("cline") {
|
||||
return Some("cline");
|
||||
}
|
||||
if normalized.contains("aider") {
|
||||
return Some("aider");
|
||||
}
|
||||
if normalized.contains("langchain") {
|
||||
return Some("langchain");
|
||||
}
|
||||
if normalized.contains("llamaindex") || normalized.contains("llama-index") {
|
||||
return Some("llamaindex");
|
||||
}
|
||||
if normalized.starts_with("openai/js") {
|
||||
return Some("openai_js_sdk");
|
||||
}
|
||||
None
|
||||
if normalized.starts_with("openai/python") {
|
||||
return Some("openai_python_sdk");
|
||||
}
|
||||
if normalized.starts_with("anthropic/js") || normalized.contains("anthropic-sdk-typescript") {
|
||||
return Some("anthropic_js_sdk");
|
||||
}
|
||||
if normalized.starts_with("anthropic/python") || normalized.contains("anthropic-sdk-python") {
|
||||
return Some("anthropic_python_sdk");
|
||||
}
|
||||
if normalized.contains("/js ") || normalized.contains("/python ") {
|
||||
return Some("sdk");
|
||||
}
|
||||
Some("unknown")
|
||||
}
|
||||
|
||||
fn users_me_usage_client_family(item: &StoredRequestUsageAudit) -> Option<&str> {
|
||||
|
||||
@@ -1093,10 +1093,58 @@ fn infer_client_family_from_user_agent(user_agent: &str) -> Option<&'static str>
|
||||
if normalized.contains("geminicli") || normalized.contains("gemini-cli") {
|
||||
return Some("gemini_cli");
|
||||
}
|
||||
if normalized.contains("qwencode") {
|
||||
return Some("qwen_code");
|
||||
}
|
||||
if normalized.contains("roo-code") || normalized.contains("roocode") {
|
||||
return Some("roo_code");
|
||||
}
|
||||
if normalized.contains("kilo-code") || normalized.contains("kilocode") {
|
||||
return Some("kilocode");
|
||||
}
|
||||
if normalized.contains("cherrystudio") || normalized.contains("cherry-studio") {
|
||||
return Some("cherrystudio");
|
||||
}
|
||||
if normalized.contains("openui-agent-manager") || normalized.contains("openui") {
|
||||
return Some("openui");
|
||||
}
|
||||
if normalized.contains("cursor") {
|
||||
return Some("cursor");
|
||||
}
|
||||
if normalized.contains("windsurf") {
|
||||
return Some("windsurf");
|
||||
}
|
||||
if normalized.contains("continue") {
|
||||
return Some("continue");
|
||||
}
|
||||
if normalized.contains("cline") {
|
||||
return Some("cline");
|
||||
}
|
||||
if normalized.contains("aider") {
|
||||
return Some("aider");
|
||||
}
|
||||
if normalized.contains("langchain") {
|
||||
return Some("langchain");
|
||||
}
|
||||
if normalized.contains("llamaindex") || normalized.contains("llama-index") {
|
||||
return Some("llamaindex");
|
||||
}
|
||||
if normalized.starts_with("openai/js") {
|
||||
return Some("openai_js_sdk");
|
||||
}
|
||||
None
|
||||
if normalized.starts_with("openai/python") {
|
||||
return Some("openai_python_sdk");
|
||||
}
|
||||
if normalized.starts_with("anthropic/js") || normalized.contains("anthropic-sdk-typescript") {
|
||||
return Some("anthropic_js_sdk");
|
||||
}
|
||||
if normalized.starts_with("anthropic/python") || normalized.contains("anthropic-sdk-python") {
|
||||
return Some("anthropic_python_sdk");
|
||||
}
|
||||
if normalized.contains("/js ") || normalized.contains("/python ") {
|
||||
return Some("sdk");
|
||||
}
|
||||
Some("unknown")
|
||||
}
|
||||
|
||||
pub fn admin_usage_client_family(item: &StoredRequestUsageAudit) -> Option<&str> {
|
||||
|
||||
Reference in New Issue
Block a user