feat(03-03): add OpenRouter, LiteLLM, Cloudflare, Vercel, Portkey, Helicone gateways
- sk-or-v1- and sk-helicone- high-confidence prefix regex - LiteLLM low-confidence sk- pattern with master key keyword - Cloudflare, Vercel, Portkey keyword-anchored detection
This commit is contained in:
23
pkg/providers/definitions/cloudflare-ai.yaml
Normal file
23
pkg/providers/definitions/cloudflare-ai.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
format_version: 1
|
||||
name: cloudflare-ai
|
||||
display_name: Cloudflare Workers AI
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "cloudflare"
|
||||
- "workers-ai"
|
||||
- "CLOUDFLARE_API_TOKEN"
|
||||
- "CLOUDFLARE_ACCOUNT_ID"
|
||||
- "CF_API_TOKEN"
|
||||
- "api.cloudflare.com"
|
||||
patterns:
|
||||
- regex: '[A-Za-z0-9_\-]{40}'
|
||||
entropy_min: 4.5
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.cloudflare.com/client/v4/user/tokens/verify
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
21
pkg/providers/definitions/helicone.yaml
Normal file
21
pkg/providers/definitions/helicone.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
format_version: 1
|
||||
name: helicone
|
||||
display_name: Helicone
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "helicone"
|
||||
- "HELICONE_API_KEY"
|
||||
- "sk-helicone-"
|
||||
- "api.helicone.ai"
|
||||
patterns:
|
||||
- regex: 'sk-helicone-[a-z0-9]{7}-[a-z0-9]{7}-[a-z0-9]{7}-[a-z0-9]{7}'
|
||||
entropy_min: 3.5
|
||||
confidence: high
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.helicone.ai/v1/key/verify
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
20
pkg/providers/definitions/litellm.yaml
Normal file
20
pkg/providers/definitions/litellm.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
format_version: 1
|
||||
name: litellm
|
||||
display_name: LiteLLM Proxy
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "litellm"
|
||||
- "LITELLM_API_KEY"
|
||||
- "LITELLM_MASTER_KEY"
|
||||
- "LITELLM_PROXY_API_KEY"
|
||||
patterns:
|
||||
- regex: 'sk-[A-Za-z0-9_\-]{20,}'
|
||||
entropy_min: 4.0
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: ""
|
||||
headers: {}
|
||||
valid_status: []
|
||||
invalid_status: []
|
||||
24
pkg/providers/definitions/openrouter.yaml
Normal file
24
pkg/providers/definitions/openrouter.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
format_version: 1
|
||||
name: openrouter
|
||||
display_name: OpenRouter
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "openrouter"
|
||||
- "OPENROUTER_API_KEY"
|
||||
- "openrouter.ai"
|
||||
- "sk-or-"
|
||||
patterns:
|
||||
- regex: 'sk-or-v1-[a-f0-9]{64}'
|
||||
entropy_min: 4.0
|
||||
confidence: high
|
||||
- regex: 'sk-or-[A-Za-z0-9]{40,}'
|
||||
entropy_min: 4.0
|
||||
confidence: medium
|
||||
verify:
|
||||
method: GET
|
||||
url: https://openrouter.ai/api/v1/auth/key
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
17
pkg/providers/definitions/portkey.yaml
Normal file
17
pkg/providers/definitions/portkey.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
format_version: 1
|
||||
name: portkey
|
||||
display_name: Portkey
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "portkey"
|
||||
- "PORTKEY_API_KEY"
|
||||
- "api.portkey.ai"
|
||||
- "portkey-ai"
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.portkey.ai/v1/feedback
|
||||
headers:
|
||||
x-portkey-api-key: "{KEY}"
|
||||
valid_status: [200, 400]
|
||||
invalid_status: [401, 403]
|
||||
17
pkg/providers/definitions/vercel-ai.yaml
Normal file
17
pkg/providers/definitions/vercel-ai.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
format_version: 1
|
||||
name: vercel-ai
|
||||
display_name: Vercel AI Gateway
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "vercel"
|
||||
- "VERCEL_AI_GATEWAY"
|
||||
- "AI_GATEWAY_API_KEY"
|
||||
- "vercel.ai"
|
||||
- "ai-sdk"
|
||||
verify:
|
||||
method: GET
|
||||
url: ""
|
||||
headers: {}
|
||||
valid_status: []
|
||||
invalid_status: []
|
||||
23
providers/cloudflare-ai.yaml
Normal file
23
providers/cloudflare-ai.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
format_version: 1
|
||||
name: cloudflare-ai
|
||||
display_name: Cloudflare Workers AI
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "cloudflare"
|
||||
- "workers-ai"
|
||||
- "CLOUDFLARE_API_TOKEN"
|
||||
- "CLOUDFLARE_ACCOUNT_ID"
|
||||
- "CF_API_TOKEN"
|
||||
- "api.cloudflare.com"
|
||||
patterns:
|
||||
- regex: '[A-Za-z0-9_\-]{40}'
|
||||
entropy_min: 4.5
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.cloudflare.com/client/v4/user/tokens/verify
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
21
providers/helicone.yaml
Normal file
21
providers/helicone.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
format_version: 1
|
||||
name: helicone
|
||||
display_name: Helicone
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "helicone"
|
||||
- "HELICONE_API_KEY"
|
||||
- "sk-helicone-"
|
||||
- "api.helicone.ai"
|
||||
patterns:
|
||||
- regex: 'sk-helicone-[a-z0-9]{7}-[a-z0-9]{7}-[a-z0-9]{7}-[a-z0-9]{7}'
|
||||
entropy_min: 3.5
|
||||
confidence: high
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.helicone.ai/v1/key/verify
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
20
providers/litellm.yaml
Normal file
20
providers/litellm.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
format_version: 1
|
||||
name: litellm
|
||||
display_name: LiteLLM Proxy
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "litellm"
|
||||
- "LITELLM_API_KEY"
|
||||
- "LITELLM_MASTER_KEY"
|
||||
- "LITELLM_PROXY_API_KEY"
|
||||
patterns:
|
||||
- regex: 'sk-[A-Za-z0-9_\-]{20,}'
|
||||
entropy_min: 4.0
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: ""
|
||||
headers: {}
|
||||
valid_status: []
|
||||
invalid_status: []
|
||||
24
providers/openrouter.yaml
Normal file
24
providers/openrouter.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
format_version: 1
|
||||
name: openrouter
|
||||
display_name: OpenRouter
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "openrouter"
|
||||
- "OPENROUTER_API_KEY"
|
||||
- "openrouter.ai"
|
||||
- "sk-or-"
|
||||
patterns:
|
||||
- regex: 'sk-or-v1-[a-f0-9]{64}'
|
||||
entropy_min: 4.0
|
||||
confidence: high
|
||||
- regex: 'sk-or-[A-Za-z0-9]{40,}'
|
||||
entropy_min: 4.0
|
||||
confidence: medium
|
||||
verify:
|
||||
method: GET
|
||||
url: https://openrouter.ai/api/v1/auth/key
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
17
providers/portkey.yaml
Normal file
17
providers/portkey.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
format_version: 1
|
||||
name: portkey
|
||||
display_name: Portkey
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "portkey"
|
||||
- "PORTKEY_API_KEY"
|
||||
- "api.portkey.ai"
|
||||
- "portkey-ai"
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.portkey.ai/v1/feedback
|
||||
headers:
|
||||
x-portkey-api-key: "{KEY}"
|
||||
valid_status: [200, 400]
|
||||
invalid_status: [401, 403]
|
||||
17
providers/vercel-ai.yaml
Normal file
17
providers/vercel-ai.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
format_version: 1
|
||||
name: vercel-ai
|
||||
display_name: Vercel AI Gateway
|
||||
tier: 5
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "vercel"
|
||||
- "VERCEL_AI_GATEWAY"
|
||||
- "AI_GATEWAY_API_KEY"
|
||||
- "vercel.ai"
|
||||
- "ai-sdk"
|
||||
verify:
|
||||
method: GET
|
||||
url: ""
|
||||
headers: {}
|
||||
valid_status: []
|
||||
invalid_status: []
|
||||
Reference in New Issue
Block a user