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,205 +1,80 @@
|
||||
export default {
|
||||
"id": "openai",
|
||||
"alias": "openai",
|
||||
id: "openai",
|
||||
alias: "openai",
|
||||
display: {
|
||||
"name": "OpenAI",
|
||||
"icon": "auto_awesome",
|
||||
"color": "#10A37F",
|
||||
"textIcon": "OA",
|
||||
"website": "https://platform.openai.com",
|
||||
"notice": {
|
||||
"apiKeyUrl": "https://platform.openai.com/api-keys"
|
||||
}
|
||||
name: "OpenAI",
|
||||
icon: "auto_awesome",
|
||||
color: "#10A37F",
|
||||
textIcon: "OA",
|
||||
website: "https://platform.openai.com",
|
||||
notice: {
|
||||
apiKeyUrl: "https://platform.openai.com/api-keys",
|
||||
},
|
||||
},
|
||||
category: "apikey",
|
||||
thinkingConfig: {"options":["auto","none","low","medium","high"],"defaultMode":"auto"},
|
||||
"transport": {
|
||||
"baseUrl": "https://api.openai.com/v1/chat/completions",
|
||||
"forceStream": true
|
||||
thinkingConfig: {
|
||||
options: [
|
||||
"auto",
|
||||
"none",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
],
|
||||
defaultMode: "auto",
|
||||
},
|
||||
media: {
|
||||
serviceKinds: ["llm", "embedding", "tts", "stt", "image", "imageToText", "webSearch"],
|
||||
ttsConfig: { baseUrl: "https://api.openai.com/v1/audio/speech", authType: "apikey", authHeader: "bearer", format: "openai", defaultModel: "gpt-4o-mini-tts", models: [{ id: "tts-1", name: "TTS-1" }, { id: "tts-1-hd", name: "TTS-1 HD" }, { id: "gpt-4o-mini-tts", name: "GPT-4o Mini TTS" }] },
|
||||
sttConfig: { baseUrl: "https://api.openai.com/v1/audio/transcriptions", authType: "apikey", authHeader: "bearer", format: "openai", models: [{ id: "whisper-1", name: "Whisper 1" }, { id: "gpt-4o-transcribe", name: "GPT-4o Transcribe" }, { id: "gpt-4o-mini-transcribe", name: "GPT-4o Mini Transcribe" }] },
|
||||
embeddingConfig: { baseUrl: "https://api.openai.com/v1/embeddings", authType: "apikey", authHeader: "bearer", models: [{ id: "text-embedding-3-small", name: "Text Embedding 3 Small", dimensions: 1536 }, { id: "text-embedding-3-large", name: "Text Embedding 3 Large", dimensions: 3072 }, { id: "text-embedding-ada-002", name: "Text Embedding Ada 002", dimensions: 1536 }] },
|
||||
imageConfig: { baseUrl: "https://api.openai.com/v1/images/generations" },
|
||||
searchViaChat: { defaultModel: "gpt-4o-mini", pricingUrl: "https://openai.com/api/pricing" }
|
||||
transport: {
|
||||
baseUrl: "https://api.openai.com/v1/chat/completions",
|
||||
forceStream: true,
|
||||
},
|
||||
"models": [
|
||||
{
|
||||
"id": "gpt-5.4",
|
||||
"name": "GPT-5.4"
|
||||
},
|
||||
{
|
||||
"id": "gpt-5.4-mini",
|
||||
"name": "GPT-5.4 Mini"
|
||||
},
|
||||
{
|
||||
"id": "gpt-5.4-nano",
|
||||
"name": "GPT-5.4 Nano"
|
||||
},
|
||||
{
|
||||
"id": "gpt-5.2",
|
||||
"name": "GPT-5.2"
|
||||
},
|
||||
{
|
||||
"id": "gpt-5.1",
|
||||
"name": "GPT-5.1"
|
||||
},
|
||||
{
|
||||
"id": "gpt-5",
|
||||
"name": "GPT-5"
|
||||
},
|
||||
{
|
||||
"id": "gpt-5-mini",
|
||||
"name": "GPT-5 Mini"
|
||||
},
|
||||
{
|
||||
"id": "gpt-5-nano",
|
||||
"name": "GPT-5 Nano"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o",
|
||||
"name": "GPT-4o"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini",
|
||||
"name": "GPT-4o Mini"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-turbo",
|
||||
"name": "GPT-4 Turbo"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4.1",
|
||||
"name": "GPT-4.1"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4.1-mini",
|
||||
"name": "GPT-4.1 Mini"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4.1-nano",
|
||||
"name": "GPT-4.1 Nano"
|
||||
},
|
||||
{
|
||||
"id": "o3",
|
||||
"name": "O3"
|
||||
},
|
||||
{
|
||||
"id": "o3-mini",
|
||||
"name": "O3 Mini"
|
||||
},
|
||||
{
|
||||
"id": "o3-pro",
|
||||
"name": "O3 Pro"
|
||||
},
|
||||
{
|
||||
"id": "o4-mini",
|
||||
"name": "O4 Mini"
|
||||
},
|
||||
{
|
||||
"id": "o1",
|
||||
"name": "O1"
|
||||
},
|
||||
{
|
||||
"id": "o1-mini",
|
||||
"name": "O1 Mini"
|
||||
},
|
||||
{
|
||||
"id": "text-embedding-3-large",
|
||||
"name": "Text Embedding 3 Large",
|
||||
"type": "embedding"
|
||||
},
|
||||
{
|
||||
"id": "text-embedding-3-small",
|
||||
"name": "Text Embedding 3 Small",
|
||||
"type": "embedding"
|
||||
},
|
||||
{
|
||||
"id": "text-embedding-ada-002",
|
||||
"name": "Text Embedding Ada 002",
|
||||
"type": "embedding"
|
||||
},
|
||||
{
|
||||
"id": "tts-1",
|
||||
"name": "TTS-1",
|
||||
"type": "tts"
|
||||
},
|
||||
{
|
||||
"id": "tts-1-hd",
|
||||
"name": "TTS-1 HD",
|
||||
"type": "tts"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini-tts",
|
||||
"name": "GPT-4o Mini TTS",
|
||||
"type": "tts"
|
||||
},
|
||||
{
|
||||
"id": "whisper-1",
|
||||
"name": "Whisper 1",
|
||||
"type": "stt",
|
||||
"params": [
|
||||
"language",
|
||||
"response_format",
|
||||
"temperature",
|
||||
"prompt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-transcribe",
|
||||
"name": "GPT-4o Transcribe",
|
||||
"type": "stt",
|
||||
"params": [
|
||||
"language",
|
||||
"response_format",
|
||||
"temperature",
|
||||
"prompt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini-transcribe",
|
||||
"name": "GPT-4o Mini Transcribe",
|
||||
"type": "stt",
|
||||
"params": [
|
||||
"language",
|
||||
"response_format",
|
||||
"temperature",
|
||||
"prompt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "gpt-image-1",
|
||||
"name": "GPT Image 1",
|
||||
"type": "image",
|
||||
"params": [
|
||||
"n",
|
||||
"size",
|
||||
"quality",
|
||||
"response_format"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "dall-e-3",
|
||||
"name": "DALL-E 3",
|
||||
"type": "image",
|
||||
"params": [
|
||||
"size",
|
||||
"quality",
|
||||
"style",
|
||||
"response_format"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "dall-e-2",
|
||||
"name": "DALL-E 2",
|
||||
"type": "image",
|
||||
"params": [
|
||||
"n",
|
||||
"size",
|
||||
"response_format"
|
||||
]
|
||||
}
|
||||
]
|
||||
models: [
|
||||
{ id: "gpt-5.4", name: "GPT-5.4" },
|
||||
{ id: "gpt-5.4-mini", name: "GPT-5.4 Mini" },
|
||||
{ id: "gpt-5.4-nano", name: "GPT-5.4 Nano" },
|
||||
{ id: "gpt-5.2", name: "GPT-5.2" },
|
||||
{ id: "gpt-5.1", name: "GPT-5.1" },
|
||||
{ id: "gpt-5", name: "GPT-5" },
|
||||
{ id: "gpt-5-mini", name: "GPT-5 Mini" },
|
||||
{ id: "gpt-5-nano", name: "GPT-5 Nano" },
|
||||
{ id: "gpt-4o", name: "GPT-4o" },
|
||||
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
|
||||
{ id: "gpt-4-turbo", name: "GPT-4 Turbo" },
|
||||
{ id: "gpt-4.1", name: "GPT-4.1" },
|
||||
{ id: "gpt-4.1-mini", name: "GPT-4.1 Mini" },
|
||||
{ id: "gpt-4.1-nano", name: "GPT-4.1 Nano" },
|
||||
{ id: "o3", name: "O3" },
|
||||
{ id: "o3-mini", name: "O3 Mini" },
|
||||
{ id: "o3-pro", name: "O3 Pro" },
|
||||
{ id: "o4-mini", name: "O4 Mini" },
|
||||
{ id: "o1", name: "O1" },
|
||||
{ id: "o1-mini", name: "O1 Mini" },
|
||||
{ id: "text-embedding-3-large", name: "Text Embedding 3 Large", kind: "embedding" },
|
||||
{ id: "text-embedding-3-small", name: "Text Embedding 3 Small", kind: "embedding" },
|
||||
{ id: "text-embedding-ada-002", name: "Text Embedding Ada 002", kind: "embedding" },
|
||||
{ id: "tts-1", name: "TTS-1", kind: "tts" },
|
||||
{ id: "tts-1-hd", name: "TTS-1 HD", kind: "tts" },
|
||||
{ id: "gpt-4o-mini-tts", name: "GPT-4o Mini TTS", kind: "tts" },
|
||||
{ id: "whisper-1", name: "Whisper 1", params: ["language","response_format","temperature","prompt"], kind: "stt" },
|
||||
{ id: "gpt-4o-transcribe", name: "GPT-4o Transcribe", params: ["language","response_format","temperature","prompt"], kind: "stt" },
|
||||
{ id: "gpt-4o-mini-transcribe", name: "GPT-4o Mini Transcribe", params: ["language","response_format","temperature","prompt"], kind: "stt" },
|
||||
{ id: "gpt-image-1", name: "GPT Image 1", params: ["n","size","quality","response_format"], kind: "image" },
|
||||
{ id: "dall-e-3", name: "DALL-E 3", params: ["size","quality","style","response_format"], kind: "image" },
|
||||
{ id: "dall-e-2", name: "DALL-E 2", params: ["n","size","response_format"], kind: "image" },
|
||||
],
|
||||
serviceKinds: ["llm","embedding","tts","stt","image","imageToText","webSearch"],
|
||||
ttsConfig: {
|
||||
baseUrl: "https://api.openai.com/v1/audio/speech",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
format: "openai",
|
||||
defaultModel: "gpt-4o-mini-tts",
|
||||
},
|
||||
sttConfig: {
|
||||
baseUrl: "https://api.openai.com/v1/audio/transcriptions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
format: "openai",
|
||||
},
|
||||
embeddingConfig: { baseUrl: "https://api.openai.com/v1/embeddings", authType: "apikey", authHeader: "bearer" },
|
||||
imageConfig: { baseUrl: "https://api.openai.com/v1/images/generations" },
|
||||
searchViaChat: { defaultModel: "gpt-4o-mini", pricingUrl: "https://openai.com/api/pricing" },
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user