refactor(plugins): move provider routing metadata to manifests

This commit is contained in:
Peter Steinberger
2026-04-27 10:06:19 +01:00
parent 57092a1794
commit b74f35ee6f
36 changed files with 1022 additions and 228 deletions

View File

@@ -6,6 +6,18 @@
"modelSupport": {
"modelPrefixes": ["claude-"]
},
"modelIdNormalization": {
"providers": {
"anthropic": {
"aliases": {
"opus-4.6": "claude-opus-4-6",
"opus-4.5": "claude-opus-4-5",
"sonnet-4.6": "claude-sonnet-4-6",
"sonnet-4.5": "claude-sonnet-4-5"
}
}
}
},
"modelPricing": {
"providers": {
"anthropic": {
@@ -15,6 +27,19 @@
}
}
},
"providerEndpoints": [
{
"endpointClass": "anthropic-public",
"hosts": ["api.anthropic.com"]
}
],
"providerRequest": {
"providers": {
"anthropic": {
"family": "anthropic"
}
}
},
"cliBackends": ["claude-cli"],
"syntheticAuthRefs": ["claude-cli"],
"providerAuthEnvVars": {

View File

@@ -2,6 +2,19 @@
"id": "chutes",
"enabledByDefault": true,
"providers": ["chutes"],
"providerEndpoints": [
{
"endpointClass": "chutes-native",
"hosts": ["llm.chutes.ai"]
}
],
"providerRequest": {
"providers": {
"chutes": {
"family": "chutes"
}
}
},
"providerAuthEnvVars": {
"chutes": ["CHUTES_API_KEY", "CHUTES_OAUTH_TOKEN"]
},

View File

@@ -3,6 +3,19 @@
"enabledByDefault": true,
"providerDiscoveryEntry": "./provider-discovery.ts",
"providers": ["deepseek"],
"providerEndpoints": [
{
"endpointClass": "deepseek-native",
"hosts": ["api.deepseek.com"]
}
],
"providerRequest": {
"providers": {
"deepseek": {
"family": "deepseek"
}
}
},
"modelCatalog": {
"providers": {
"deepseek": {

View File

@@ -2,6 +2,19 @@
"id": "github-copilot",
"enabledByDefault": true,
"providers": ["github-copilot"],
"providerEndpoints": [
{
"endpointClass": "github-copilot-native",
"hostSuffixes": [".githubcopilot.com"]
}
],
"providerRequest": {
"providers": {
"github-copilot": {
"family": "github-copilot"
}
}
},
"contracts": {
"memoryEmbeddingProviders": ["github-copilot"]
},

View File

@@ -1,8 +1,32 @@
{
"id": "google",
"enabledByDefault": true,
"providers": ["google", "google-gemini-cli"],
"providers": ["google", "google-gemini-cli", "google-vertex"],
"autoEnableWhenConfiguredProviders": ["google-gemini-cli"],
"modelIdNormalization": {
"providers": {
"google": {
"aliases": {
"gemini-3-pro": "gemini-3-pro-preview",
"gemini-3-flash": "gemini-3-flash-preview",
"gemini-3.1-pro": "gemini-3.1-pro-preview",
"gemini-3.1-flash-lite": "gemini-3.1-flash-lite-preview",
"gemini-3.1-flash": "gemini-3-flash-preview",
"gemini-3.1-flash-preview": "gemini-3-flash-preview"
}
},
"google-vertex": {
"aliases": {
"gemini-3-pro": "gemini-3-pro-preview",
"gemini-3-flash": "gemini-3-flash-preview",
"gemini-3.1-pro": "gemini-3.1-pro-preview",
"gemini-3.1-flash-lite": "gemini-3.1-flash-lite-preview",
"gemini-3.1-flash": "gemini-3-flash-preview",
"gemini-3.1-flash-preview": "gemini-3-flash-preview"
}
}
}
},
"modelPricing": {
"providers": {
"google-gemini-cli": {
@@ -15,6 +39,35 @@
}
}
},
"providerEndpoints": [
{
"endpointClass": "google-generative-ai",
"hosts": ["generativelanguage.googleapis.com"]
},
{
"endpointClass": "google-vertex",
"hosts": ["aiplatform.googleapis.com"],
"googleVertexRegion": "global"
},
{
"endpointClass": "google-vertex",
"hostSuffixes": ["-aiplatform.googleapis.com"],
"googleVertexRegionHostSuffix": "-aiplatform.googleapis.com"
}
],
"providerRequest": {
"providers": {
"google": {
"family": "google"
},
"google-gemini-cli": {
"family": "google"
},
"google-vertex": {
"family": "google"
}
}
},
"cliBackends": ["google-gemini-cli"],
"providerAuthEnvVars": {
"google": ["GEMINI_API_KEY", "GOOGLE_API_KEY"]

View File

@@ -1,6 +1,20 @@
{
"id": "groq",
"enabledByDefault": true,
"providers": ["groq"],
"providerEndpoints": [
{
"endpointClass": "groq-native",
"hosts": ["api.groq.com"]
}
],
"providerRequest": {
"providers": {
"groq": {
"family": "groq"
}
}
},
"providerAuthEnvVars": {
"groq": ["GROQ_API_KEY"]
},

View File

@@ -2,6 +2,13 @@
"id": "huggingface",
"enabledByDefault": true,
"providers": ["huggingface"],
"modelIdNormalization": {
"providers": {
"huggingface": {
"stripPrefixes": ["huggingface/"]
}
}
},
"providerAuthEnvVars": {
"huggingface": ["HUGGINGFACE_HUB_TOKEN", "HF_TOKEN"]
},

View File

@@ -2,6 +2,18 @@
"id": "kimi",
"enabledByDefault": true,
"providers": ["kimi", "kimi-coding"],
"providerRequest": {
"providers": {
"kimi": {
"family": "moonshot",
"compatibilityFamily": "moonshot"
},
"kimi-coding": {
"family": "moonshot",
"compatibilityFamily": "moonshot"
}
}
},
"modelPricing": {
"providers": {
"kimi": {

View File

@@ -2,6 +2,16 @@
"id": "lmstudio",
"enabledByDefault": true,
"providers": ["lmstudio"],
"providerRequest": {
"providers": {
"lmstudio": {
"family": "lmstudio",
"openAICompletions": {
"supportsStreamingUsage": true
}
}
}
},
"modelPricing": {
"providers": {
"lmstudio": {

View File

@@ -2,6 +2,19 @@
"id": "mistral",
"enabledByDefault": true,
"providers": ["mistral"],
"providerEndpoints": [
{
"endpointClass": "mistral-public",
"hosts": ["api.mistral.ai"]
}
],
"providerRequest": {
"providers": {
"mistral": {
"family": "mistral"
}
}
},
"providerAuthEnvVars": {
"mistral": ["MISTRAL_API_KEY"]
},

View File

@@ -3,6 +3,20 @@
"enabledByDefault": true,
"providerDiscoveryEntry": "./provider-discovery.ts",
"providers": ["moonshot"],
"providerEndpoints": [
{
"endpointClass": "moonshot-native",
"baseUrls": ["https://api.moonshot.ai/v1", "https://api.moonshot.cn/v1"]
}
],
"providerRequest": {
"providers": {
"moonshot": {
"family": "moonshot",
"compatibilityFamily": "moonshot"
}
}
},
"modelPricing": {
"providers": {
"moonshot": {

View File

@@ -2,6 +2,13 @@
"id": "nvidia",
"enabledByDefault": true,
"providers": ["nvidia"],
"modelIdNormalization": {
"providers": {
"nvidia": {
"prefixWhenBare": "nvidia"
}
}
},
"providerAuthEnvVars": {
"nvidia": ["NVIDIA_API_KEY"]
},

View File

@@ -3,6 +3,13 @@
"enabledByDefault": true,
"providers": ["ollama"],
"providerDiscoveryEntry": "./provider-discovery.ts",
"providerRequest": {
"providers": {
"ollama": {
"family": "ollama"
}
}
},
"modelPricing": {
"providers": {
"ollama": {

View File

@@ -17,6 +17,30 @@
}
}
},
"providerEndpoints": [
{
"endpointClass": "openai-public",
"hosts": ["api.openai.com"]
},
{
"endpointClass": "openai-codex",
"hosts": ["chatgpt.com"]
},
{
"endpointClass": "azure-openai",
"hostSuffixes": [".openai.azure.com"]
}
],
"providerRequest": {
"providers": {
"openai": {
"family": "openai-family"
},
"openai-codex": {
"family": "openai-family"
}
}
},
"cliBackends": ["codex-cli"],
"providerAuthEnvVars": {
"openai": ["OPENAI_API_KEY"]

View File

@@ -2,6 +2,19 @@
"id": "opencode-go",
"enabledByDefault": true,
"providers": ["opencode-go"],
"providerEndpoints": [
{
"endpointClass": "opencode-native",
"hostSuffixes": ["opencode.ai"]
}
],
"providerRequest": {
"providers": {
"opencode-go": {
"family": "opencode"
}
}
},
"providerAuthEnvVars": {
"opencode-go": ["OPENCODE_API_KEY", "OPENCODE_ZEN_API_KEY"]
},

View File

@@ -2,6 +2,19 @@
"id": "opencode",
"enabledByDefault": true,
"providers": ["opencode"],
"providerEndpoints": [
{
"endpointClass": "opencode-native",
"hostSuffixes": ["opencode.ai"]
}
],
"providerRequest": {
"providers": {
"opencode": {
"family": "opencode"
}
}
},
"providerAuthEnvVars": {
"opencode": ["OPENCODE_API_KEY", "OPENCODE_ZEN_API_KEY"]
},

View File

@@ -2,6 +2,13 @@
"id": "openrouter",
"enabledByDefault": true,
"providers": ["openrouter"],
"modelIdNormalization": {
"providers": {
"openrouter": {
"prefixWhenBare": "openrouter"
}
}
},
"modelPricing": {
"providers": {
"openrouter": {
@@ -12,6 +19,19 @@
}
}
},
"providerEndpoints": [
{
"endpointClass": "openrouter",
"hostSuffixes": ["openrouter.ai"]
}
],
"providerRequest": {
"providers": {
"openrouter": {
"family": "openrouter"
}
}
},
"providerAuthEnvVars": {
"openrouter": ["OPENROUTER_API_KEY"]
},

View File

@@ -1,7 +1,34 @@
{
"id": "qwen",
"enabledByDefault": true,
"providers": ["qwen"],
"providers": ["qwen", "qwencloud", "modelstudio", "dashscope"],
"providerEndpoints": [
{
"endpointClass": "modelstudio-native",
"baseUrls": [
"https://coding-intl.dashscope.aliyuncs.com/v1",
"https://coding.dashscope.aliyuncs.com/v1",
"https://dashscope.aliyuncs.com/compatible-mode/v1",
"https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
]
}
],
"providerRequest": {
"providers": {
"qwen": {
"family": "modelstudio"
},
"qwencloud": {
"family": "modelstudio"
},
"modelstudio": {
"family": "modelstudio"
},
"dashscope": {
"family": "modelstudio"
}
}
},
"contracts": {
"mediaUnderstandingProviders": ["qwen"],
"videoGenerationProviders": ["qwen"]

View File

@@ -2,6 +2,16 @@
"id": "sglang",
"enabledByDefault": true,
"providers": ["sglang"],
"providerRequest": {
"providers": {
"sglang": {
"family": "sglang",
"openAICompletions": {
"supportsStreamingUsage": true
}
}
}
},
"modelPricing": {
"providers": {
"sglang": {

View File

@@ -2,6 +2,13 @@
"id": "together",
"enabledByDefault": true,
"providers": ["together"],
"providerRequest": {
"providers": {
"together": {
"family": "together"
}
}
},
"providerAuthEnvVars": {
"together": ["TOGETHER_API_KEY"]
},

View File

@@ -2,6 +2,24 @@
"id": "vercel-ai-gateway",
"enabledByDefault": true,
"providers": ["vercel-ai-gateway"],
"modelIdNormalization": {
"providers": {
"vercel-ai-gateway": {
"aliases": {
"opus-4.6": "claude-opus-4-6",
"opus-4.5": "claude-opus-4-5",
"sonnet-4.6": "claude-sonnet-4-6",
"sonnet-4.5": "claude-sonnet-4-5"
},
"prefixWhenBareAfterAliasStartsWith": [
{
"modelPrefix": "claude-",
"prefix": "anthropic"
}
]
}
}
},
"modelPricing": {
"providers": {
"vercel-ai-gateway": {

View File

@@ -2,6 +2,16 @@
"id": "vllm",
"enabledByDefault": true,
"providers": ["vllm"],
"providerRequest": {
"providers": {
"vllm": {
"family": "vllm",
"openAICompletions": {
"supportsStreamingUsage": true
}
}
}
},
"modelPricing": {
"providers": {
"vllm": {

View File

@@ -3,12 +3,33 @@
"enabledByDefault": true,
"providers": ["xai"],
"providerDiscoveryEntry": "./provider-discovery.ts",
"modelIdNormalization": {
"providers": {
"xai": {
"aliases": {
"grok-4-fast-reasoning": "grok-4-fast",
"grok-4-1-fast-reasoning": "grok-4-1-fast",
"grok-4.20-experimental-beta-0304-reasoning": "grok-4.20-beta-latest-reasoning",
"grok-4.20-experimental-beta-0304-non-reasoning": "grok-4.20-beta-latest-non-reasoning",
"grok-4.20-reasoning": "grok-4.20-beta-latest-reasoning",
"grok-4.20-non-reasoning": "grok-4.20-beta-latest-non-reasoning"
}
}
}
},
"providerEndpoints": [
{
"endpointClass": "xai-native",
"hosts": ["api.x.ai", "api.grok.x.ai"]
}
],
"providerRequest": {
"providers": {
"xai": {
"family": "xai"
}
}
},
"syntheticAuthRefs": ["xai"],
"providerAuthEnvVars": {
"xai": ["XAI_API_KEY"]

View File

@@ -2,6 +2,19 @@
"id": "zai",
"enabledByDefault": true,
"providers": ["zai"],
"providerEndpoints": [
{
"endpointClass": "zai-native",
"hosts": ["api.z.ai"]
}
],
"providerRequest": {
"providers": {
"zai": {
"family": "zai"
}
}
},
"modelPricing": {
"providers": {
"zai": {