refactor(registry): B2 migrate to LiteLLM-style schema — unified models[] with kind field

- 71 registry files: flat `media.*Config.models` → `models[]` with `kind` field
- `media` wrapper removed → serviceKinds, *Config fields promoted top-level
- `type` field renamed to `kind` (llm/image/tts/stt/embedding/embedding/video/music)
- providers/index.js: PROVIDER_MEDIA now built from flat top-level media fields
- shared/constants/providers.js: buildProviderEntry reads flat top-level media fields
- route /v1/models: modelKind() uses kind||type; removed subConfig merge block
- models/info route: removed sub-config fallback lookup (all models in PROVIDER_MODELS)
- ttsProviders/index.js: synthesizeViaConfig reads tts models from PROVIDER_MODELS
- test-models route, helpers.js, validate route: kind||type compat
- Baselines: PROVIDERS 62/62 ✅, Alias 90/90 ✅

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
decolua
2026-06-14 14:32:59 +07:00
parent e53ce79abb
commit dd1e0f9bcc
82 changed files with 2518 additions and 3651 deletions

View File

@@ -1,177 +1,52 @@
export default {
"id": "cloudflare-ai",
"alias": "cloudflare-ai",
id: "cloudflare-ai",
alias: "cloudflare-ai",
aliases: [
"cf",
],
uiAlias: "cf",
display: {
"name": "Cloudflare",
"icon": "cloud",
"color": "#F38020",
"textIcon": "CF",
"website": "https://developers.cloudflare.com/workers-ai/",
"notice": {
"text": "Workers AI free tier. Requires a Cloudflare API token and Account ID.",
"apiKeyUrl": "https://dash.cloudflare.com/profile/api-tokens"
}
name: "Cloudflare",
icon: "cloud",
color: "#F38020",
textIcon: "CF",
website: "https://developers.cloudflare.com/workers-ai/",
notice: {
text: "Workers AI free tier. Requires a Cloudflare API token and Account ID.",
apiKeyUrl: "https://dash.cloudflare.com/profile/api-tokens",
},
},
category: "freeTier",
uiAlias: "cf",
hasProviderSpecificData: true,
aliases: ["cf"],
"transport": {
"baseUrl": "https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions"
transport: {
baseUrl: "https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",
},
media: {
serviceKinds: ["llm", "image"],
hasProviderSpecificData: true,
imageConfig: { baseUrl: "https://api.cloudflare.com/client/v4/accounts" }
},
"models": [
{
"id": "@cf/meta/llama-3.2-1b-instruct",
"name": "Llama 3.2 1B Instruct"
},
{
"id": "@cf/meta/llama-3.2-3b-instruct",
"name": "Llama 3.2 3B Instruct"
},
{
"id": "@cf/meta/llama-3.1-8b-instruct-fp8-fast",
"name": "Llama 3.1 8B Instruct FP8 Fast"
},
{
"id": "@cf/meta/llama-3.1-8b-instruct-awq",
"name": "Llama 3.1 8B Instruct AWQ"
},
{
"id": "@cf/mistralai/mistral-small-3.1-24b-instruct",
"name": "Mistral Small 3.1 24B Instruct"
},
{
"id": "@cf/meta/llama-3.1-70b-instruct-fp8-fast",
"name": "Llama 3.1 70B Instruct FP8 Fast"
},
{
"id": "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
"name": "Llama 3.3 70B Instruct FP8 Fast"
},
{
"id": "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",
"name": "DeepSeek R1 Distill Qwen 32B"
},
{
"id": "@cf/moonshotai/kimi-k2.5",
"name": "Kimi K2.5"
},
{
"id": "@cf/moonshotai/kimi-k2.6",
"name": "Kimi K2.6"
},
{
"id": "@cf/zai-org/glm-4.7-flash",
"name": "GLM 4.7 Flash"
},
{
"id": "@cf/qwen/qwq-32b",
"name": "QwQ 32B"
},
{
"id": "@cf/qwen/qwen2.5-coder-32b-instruct",
"name": "Qwen 2.5 Coder 32B Instruct"
},
{
"id": "@cf/black-forest-labs/flux-2-klein-9b",
"name": "FLUX.2 Klein 9B",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/black-forest-labs/flux-2-klein-4b",
"name": "FLUX.2 Klein 4B",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/black-forest-labs/flux-2-dev",
"name": "FLUX.2 Dev",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/leonardo/lucid-origin",
"name": "Lucid Origin",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/leonardo/phoenix-1.0",
"name": "Phoenix 1.0",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/black-forest-labs/flux-1-schnell",
"name": "FLUX.1 Schnell",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/bytedance/stable-diffusion-xl-lightning",
"name": "SDXL Lightning",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/lykon/dreamshaper-8-lcm",
"name": "DreamShaper 8 LCM",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/runwayml/stable-diffusion-v1-5-img2img",
"name": "Stable Diffusion v1.5 Img2Img",
"type": "image",
"params": [
"size"
],
"capabilities": [
"edit"
]
},
{
"id": "@cf/runwayml/stable-diffusion-v1-5-inpainting",
"name": "Stable Diffusion v1.5 Inpainting",
"type": "image",
"params": [
"size"
],
"capabilities": [
"edit",
"mask"
]
},
{
"id": "@cf/stabilityai/stable-diffusion-xl-base-1.0",
"name": "SDXL Base 1.0",
"type": "image",
"params": [
"size"
]
}
]
models: [
{ id: "@cf/meta/llama-3.2-1b-instruct", name: "Llama 3.2 1B Instruct" },
{ id: "@cf/meta/llama-3.2-3b-instruct", name: "Llama 3.2 3B Instruct" },
{ id: "@cf/meta/llama-3.1-8b-instruct-fp8-fast", name: "Llama 3.1 8B Instruct FP8 Fast" },
{ id: "@cf/meta/llama-3.1-8b-instruct-awq", name: "Llama 3.1 8B Instruct AWQ" },
{ id: "@cf/mistralai/mistral-small-3.1-24b-instruct", name: "Mistral Small 3.1 24B Instruct" },
{ id: "@cf/meta/llama-3.1-70b-instruct-fp8-fast", name: "Llama 3.1 70B Instruct FP8 Fast" },
{ id: "@cf/meta/llama-3.3-70b-instruct-fp8-fast", name: "Llama 3.3 70B Instruct FP8 Fast" },
{ id: "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b", name: "DeepSeek R1 Distill Qwen 32B" },
{ id: "@cf/moonshotai/kimi-k2.5", name: "Kimi K2.5" },
{ id: "@cf/moonshotai/kimi-k2.6", name: "Kimi K2.6" },
{ id: "@cf/zai-org/glm-4.7-flash", name: "GLM 4.7 Flash" },
{ id: "@cf/qwen/qwq-32b", name: "QwQ 32B" },
{ id: "@cf/qwen/qwen2.5-coder-32b-instruct", name: "Qwen 2.5 Coder 32B Instruct" },
{ id: "@cf/black-forest-labs/flux-2-klein-9b", name: "FLUX.2 Klein 9B", params: ["size"], kind: "image" },
{ id: "@cf/black-forest-labs/flux-2-klein-4b", name: "FLUX.2 Klein 4B", params: ["size"], kind: "image" },
{ id: "@cf/black-forest-labs/flux-2-dev", name: "FLUX.2 Dev", params: ["size"], kind: "image" },
{ id: "@cf/leonardo/lucid-origin", name: "Lucid Origin", params: ["size"], kind: "image" },
{ id: "@cf/leonardo/phoenix-1.0", name: "Phoenix 1.0", params: ["size"], kind: "image" },
{ id: "@cf/black-forest-labs/flux-1-schnell", name: "FLUX.1 Schnell", params: ["size"], kind: "image" },
{ id: "@cf/bytedance/stable-diffusion-xl-lightning", name: "SDXL Lightning", params: ["size"], kind: "image" },
{ id: "@cf/lykon/dreamshaper-8-lcm", name: "DreamShaper 8 LCM", params: ["size"], kind: "image" },
{ id: "@cf/runwayml/stable-diffusion-v1-5-img2img", name: "Stable Diffusion v1.5 Img2Img", params: ["size"], capabilities: ["edit"], kind: "image" },
{ id: "@cf/runwayml/stable-diffusion-v1-5-inpainting", name: "Stable Diffusion v1.5 Inpainting", params: ["size"], capabilities: ["edit","mask"], kind: "image" },
{ id: "@cf/stabilityai/stable-diffusion-xl-base-1.0", name: "SDXL Base 1.0", params: ["size"], kind: "image" },
],
serviceKinds: ["llm","image"],
imageConfig: { baseUrl: "https://api.cloudflare.com/client/v4/accounts" },
};