Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
163 changes: 163 additions & 0 deletions internal/providers/configs/alibaba-coding.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
{
"name": "Alibaba Coding Plan",
"id": "alibaba-coding",
"type": "openai-compat",
"api_key": "$ALIBABA_API_KEY",
"api_endpoint": "https://coding-intl.dashscope.aliyuncs.com/v1",
Comment thread
rpx99 marked this conversation as resolved.
"default_large_model_id": "qwen3-max-2026-01-23",
"default_small_model_id": "glm-4.7",
"models": [
{
"id": "qwen3-coder-next",
"name": "Qwen3 Coder Next",
"context_window": 262144,
"default_max_tokens": 65536,
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"can_reason": true,
"reasoning_levels": [
"low",
"medium",
"high"
],
"default_reasoning_effort": "medium",
"supports_attachments": false,
"options": {}
},
{
"id": "qwen3-coder-plus",
"name": "Qwen3 Coder Plus",
"context_window": 1000000,
"default_max_tokens": 65536,
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"can_reason": true,
"reasoning_levels": [
"low",
"medium",
"high"
],
"default_reasoning_effort": "medium",
"supports_attachments": false,
"options": {}
},
{
"id": "qwen3-max-2026-01-23",
"name": "Qwen3 Max 2026-01-23",
"context_window": 262144,
"default_max_tokens": 65536,
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"can_reason": true,
"reasoning_levels": [
"low",
"medium",
"high"
],
"default_reasoning_effort": "medium",
"supports_attachments": false,
"options": {}
},
{
"id": "qwen3.5-plus",
"name": "Qwen3.5 Plus",
"context_window": 1000000,
"default_max_tokens": 65536,
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"can_reason": true,
"reasoning_levels": [
"low",
"medium",
"high"
],
"default_reasoning_effort": "medium",
"supports_attachments": true,
"options": {}
},
{
"id": "kimi-k2.5",
"name": "Moonshot Kimi K2.5",
"context_window": 262144,
"default_max_tokens": 32768,
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"can_reason": true,
"reasoning_levels": [
"low",
"medium",
"high"
],
"default_reasoning_effort": "medium",
"supports_attachments": true,
"options": {}
},
{
"id": "glm-5",
"name": "GLM 5",
"context_window": 202752,
"default_max_tokens": 16384,
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"can_reason": true,
"reasoning_levels": [
"low",
"medium",
"high"
],
"default_reasoning_effort": "medium",
"supports_attachments": false,
"options": {}
},
{
"id": "glm-4.7",
"name": "GLM 4.7",
"context_window": 131072,
"default_max_tokens": 16384,
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"can_reason": true,
"reasoning_levels": [
"low",
"medium",
"high"
],
"default_reasoning_effort": "medium",
"supports_attachments": false,
"options": {}
},
{
"id": "MiniMax-M2.5",
"name": "MiniMax M2.5",
"context_window": 262144,
"default_max_tokens": 65536,
"cost_per_1m_in": 0,
"cost_per_1m_out": 0,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"can_reason": true,
"reasoning_levels": [
"low",
"medium",
"high"
],
"default_reasoning_effort": "medium",
"supports_attachments": true,
"options": {}
}
]
}
8 changes: 8 additions & 0 deletions internal/providers/providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ var miniMaxChinaConfig []byte
//go:embed configs/ionet.json
var ioNetConfig []byte

//go:embed configs/alibaba-coding.json
var alibabaCodingConfig []byte

// ProviderFunc is a function that returns a Provider.
type ProviderFunc func() catwalk.Provider

Expand Down Expand Up @@ -113,6 +116,7 @@ var providerRegistry = []ProviderFunc{
miniMaxProvider,
miniMaxChinaProvider,
ioNetProvider,
alibabaCodingProvider,
}

// GetAll returns all registered providers.
Expand Down Expand Up @@ -232,3 +236,7 @@ func miniMaxChinaProvider() catwalk.Provider {
func ioNetProvider() catwalk.Provider {
return loadProviderFromConfig(ioNetConfig)
}

func alibabaCodingProvider() catwalk.Provider {
return loadProviderFromConfig(alibabaCodingConfig)
}
51 changes: 27 additions & 24 deletions pkg/catwalk/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,30 +21,31 @@ type InferenceProvider string

// All the inference providers supported by the system.
const (
InferenceProviderOpenAI InferenceProvider = "openai"
InferenceProviderAnthropic InferenceProvider = "anthropic"
InferenceProviderSynthetic InferenceProvider = "synthetic"
InferenceProviderGemini InferenceProvider = "gemini"
InferenceProviderAzure InferenceProvider = "azure"
InferenceProviderBedrock InferenceProvider = "bedrock"
InferenceProviderVertexAI InferenceProvider = "vertexai"
InferenceProviderXAI InferenceProvider = "xai"
InferenceProviderZAI InferenceProvider = "zai"
InferenceProviderZhipu InferenceProvider = "zhipu"
InferenceProviderZhipuCoding InferenceProvider = "zhipu-coding"
InferenceProviderGROQ InferenceProvider = "groq"
InferenceProviderOpenRouter InferenceProvider = "openrouter"
InferenceProviderCerebras InferenceProvider = "cerebras"
InferenceProviderVenice InferenceProvider = "venice"
InferenceProviderChutes InferenceProvider = "chutes"
InferenceProviderHuggingFace InferenceProvider = "huggingface"
InferenceAIHubMix InferenceProvider = "aihubmix"
InferenceKimiCoding InferenceProvider = "kimi-coding"
InferenceProviderCopilot InferenceProvider = "copilot"
InferenceProviderVercel InferenceProvider = "vercel"
InferenceProviderMiniMax InferenceProvider = "minimax"
InferenceProviderMiniMaxChina InferenceProvider = "minimax-china"
InferenceProviderIoNet InferenceProvider = "ionet"
InferenceProviderOpenAI InferenceProvider = "openai"
InferenceProviderAnthropic InferenceProvider = "anthropic"
InferenceProviderSynthetic InferenceProvider = "synthetic"
InferenceProviderGemini InferenceProvider = "gemini"
InferenceProviderAzure InferenceProvider = "azure"
InferenceProviderBedrock InferenceProvider = "bedrock"
InferenceProviderVertexAI InferenceProvider = "vertexai"
InferenceProviderXAI InferenceProvider = "xai"
InferenceProviderZAI InferenceProvider = "zai"
InferenceProviderZhipu InferenceProvider = "zhipu"
InferenceProviderZhipuCoding InferenceProvider = "zhipu-coding"
InferenceProviderGROQ InferenceProvider = "groq"
InferenceProviderOpenRouter InferenceProvider = "openrouter"
InferenceProviderCerebras InferenceProvider = "cerebras"
InferenceProviderVenice InferenceProvider = "venice"
InferenceProviderChutes InferenceProvider = "chutes"
InferenceProviderHuggingFace InferenceProvider = "huggingface"
InferenceAIHubMix InferenceProvider = "aihubmix"
InferenceKimiCoding InferenceProvider = "kimi-coding"
InferenceProviderCopilot InferenceProvider = "copilot"
InferenceProviderVercel InferenceProvider = "vercel"
InferenceProviderMiniMax InferenceProvider = "minimax"
InferenceProviderMiniMaxChina InferenceProvider = "minimax-china"
InferenceProviderIoNet InferenceProvider = "ionet"
InferenceProviderAlibabaCoding InferenceProvider = "alibaba-coding"
)

// Provider represents an AI provider configuration.
Expand Down Expand Up @@ -113,6 +114,8 @@ func KnownProviders() []InferenceProvider {
InferenceProviderVercel,
InferenceProviderMiniMax,
InferenceProviderMiniMaxChina,
InferenceProviderIoNet,
InferenceProviderAlibabaCoding,
}
}

Expand Down
Loading