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