feat(gateway): add Alibaba as supported AI SDK provider

This commit is contained in:
kiloconnect[bot]
2026-04-20 08:43:03 +00:00
parent 93a32009e2
commit 8b90eec6d0
9 changed files with 1973 additions and 433 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-gateway": minor
---
Add Alibaba as a supported AI SDK provider for routing Qwen model requests via the native `@ai-sdk/alibaba` adapter.
+1
View File
@@ -201,6 +201,7 @@
"name": "@kilocode/kilo-gateway",
"version": "7.2.14",
"dependencies": {
"@ai-sdk/alibaba": "1.0.17",
"@ai-sdk/anthropic": "3.0.71",
"@ai-sdk/openai": "3.0.48",
"@ai-sdk/openai-compatible": "2.0.37",
+1
View File
@@ -29,6 +29,7 @@
"dependencies": {
"@kilocode/plugin": "workspace:*",
"@kilocode/sdk": "workspace:*",
"@ai-sdk/alibaba": "1.0.17",
"@ai-sdk/anthropic": "3.0.71",
"@ai-sdk/openai": "3.0.48",
"@ai-sdk/openai-compatible": "2.0.37",
+1 -1
View File
@@ -72,4 +72,4 @@ export const ENV_FEATURE = "KILOCODE_FEATURE"
export const PROMPTS = ["codex", "gemini", "beast", "anthropic", "trinity", "anthropic_without_todo"] as const
export const AI_SDK_PROVIDERS = ["anthropic", "openai", "openai-compatible", "openrouter"] as const
export const AI_SDK_PROVIDERS = ["alibaba", "anthropic", "openai", "openai-compatible", "openrouter"] as const
+5
View File
@@ -1,4 +1,5 @@
import { createOpenRouter } from "@openrouter/ai-sdk-provider"
import { createAlibaba } from "@ai-sdk/alibaba"
import { createAnthropic } from "@ai-sdk/anthropic"
import { createOpenAI } from "@ai-sdk/openai"
import { createOpenAICompatible } from "@ai-sdk/openai-compatible"
@@ -76,6 +77,7 @@ export function createKilo(options: KiloProviderOptions = {}): KiloProvider {
}
const openrouter = createOpenRouter(sdkOptions)
const alibaba = createAlibaba(sdkOptions)
const anthropic = createAnthropic(sdkOptions)
const openai = createOpenAI(sdkOptions)
const openaiCompatible = createOpenAICompatible({ ...sdkOptions, name: "openaiCompatible" })
@@ -93,6 +95,9 @@ export function createKilo(options: KiloProviderOptions = {}): KiloProvider {
imageModel(modelId) {
return openrouter.imageModel(modelId)
},
alibaba(modelId) {
return alibaba(modelId)
},
anthropic(modelId) {
return anthropic(modelId)
},
+1
View File
@@ -160,6 +160,7 @@ export interface ProviderInfo {
}
export type KiloProvider = Provider & {
alibaba(modelId: string): LanguageModel
anthropic(modelId: string): LanguageModel
openai(modelId: string): LanguageModel
openaiCompatible(modelId: string): LanguageModel
@@ -147,6 +147,7 @@ export function kiloCustomLoaders(dep: CustomDep): Record<string, CustomLoader>
options,
async getModel(sdk: KiloProvider, modelID: string) {
const provider = input.models[modelID]?.ai_sdk_provider
if (provider === "alibaba") return sdk.alibaba(modelID)
if (provider === "anthropic") return sdk.anthropic(modelID)
if (provider === "openai") return sdk.openai(modelID)
if (provider === "openai-compatible") return sdk.openaiCompatible(modelID)
+1 -1
View File
@@ -1960,7 +1960,7 @@ export type Model = {
recommendedIndex?: number
prompt?: "codex" | "gemini" | "beast" | "anthropic" | "trinity" | "anthropic_without_todo"
isFree?: boolean
ai_sdk_provider?: "anthropic" | "openai" | "openai-compatible" | "openrouter"
ai_sdk_provider?: "alibaba" | "anthropic" | "openai" | "openai-compatible" | "openrouter"
}
export type Provider = {
+1957 -431
View File
File diff suppressed because it is too large Load Diff