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:
@@ -1,60 +1,42 @@
|
||||
|
||||
export default {
|
||||
"id": "xai",
|
||||
"alias": "xai",
|
||||
id: "xai",
|
||||
alias: "xai",
|
||||
display: {
|
||||
"name": "xAI (Grok)",
|
||||
"icon": "auto_awesome",
|
||||
"color": "#1DA1F2",
|
||||
"textIcon": "XA",
|
||||
"website": "https://x.ai",
|
||||
"notice": {
|
||||
"apiKeyUrl": "https://console.x.ai"
|
||||
}
|
||||
name: "xAI (Grok)",
|
||||
icon: "auto_awesome",
|
||||
color: "#1DA1F2",
|
||||
textIcon: "XA",
|
||||
website: "https://x.ai",
|
||||
notice: {
|
||||
apiKeyUrl: "https://console.x.ai",
|
||||
},
|
||||
},
|
||||
category: "apikey",
|
||||
authModes: [
|
||||
"oauth",
|
||||
"apikey",
|
||||
],
|
||||
hasOAuth: true,
|
||||
authModes: ["oauth","apikey"],
|
||||
"transport": {
|
||||
"baseUrl": "https://api.x.ai/v1/chat/completions",
|
||||
"validateUrl": "https://api.x.ai/v1/models",
|
||||
"responsesUrl": "https://api.x.ai/v1/responses",
|
||||
"clientId": "b1a00492-073a-47ea-816f-4c329264a828",
|
||||
"tokenUrl": "https://auth.x.ai/oauth2/token",
|
||||
"refreshUrl": "https://auth.x.ai/oauth2/token"
|
||||
transport: {
|
||||
baseUrl: "https://api.x.ai/v1/chat/completions",
|
||||
validateUrl: "https://api.x.ai/v1/models",
|
||||
responsesUrl: "https://api.x.ai/v1/responses",
|
||||
clientId: "b1a00492-073a-47ea-816f-4c329264a828",
|
||||
tokenUrl: "https://auth.x.ai/oauth2/token",
|
||||
refreshUrl: "https://auth.x.ai/oauth2/token",
|
||||
},
|
||||
media: {
|
||||
serviceKinds: ["llm", "imageToText", "webSearch", "image"],
|
||||
searchViaChat: { defaultModel: "grok-4.20-reasoning", endpoint: "https://api.x.ai/v1/responses", pricingUrl: "https://x.ai/api#pricing" },
|
||||
imageConfig: { baseUrl: "https://api.x.ai/v1/images/generations", bodyFields: ["model", "prompt", "n", "response_format"] },
|
||||
authModes: ["oauth", "apikey"],
|
||||
hasOAuth: true
|
||||
models: [
|
||||
{ id: "grok-4", name: "Grok 4" },
|
||||
{ id: "grok-4-fast-reasoning", name: "Grok 4 Fast Reasoning" },
|
||||
{ id: "grok-code-fast-1", name: "Grok Code Fast" },
|
||||
{ id: "grok-3", name: "Grok 3" },
|
||||
{ id: "grok-2-image-1212", name: "Grok 2 Image", params: ["n","response_format"], kind: "image" },
|
||||
],
|
||||
serviceKinds: ["llm","imageToText","webSearch","image"],
|
||||
imageConfig: { baseUrl: "https://api.x.ai/v1/images/generations", bodyFields: ["model","prompt","n","response_format"] },
|
||||
searchViaChat: {
|
||||
defaultModel: "grok-4.20-reasoning",
|
||||
endpoint: "https://api.x.ai/v1/responses",
|
||||
pricingUrl: "https://x.ai/api#pricing",
|
||||
},
|
||||
"models": [
|
||||
{
|
||||
"id": "grok-4",
|
||||
"name": "Grok 4"
|
||||
},
|
||||
{
|
||||
"id": "grok-4-fast-reasoning",
|
||||
"name": "Grok 4 Fast Reasoning"
|
||||
},
|
||||
{
|
||||
"id": "grok-code-fast-1",
|
||||
"name": "Grok Code Fast"
|
||||
},
|
||||
{
|
||||
"id": "grok-3",
|
||||
"name": "Grok 3"
|
||||
},
|
||||
{
|
||||
"id": "grok-2-image-1212",
|
||||
"name": "Grok 2 Image",
|
||||
"type": "image",
|
||||
"params": [
|
||||
"n",
|
||||
"response_format"
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user